AltrTrend_Signal_v2_2_v4

AltrTrend_Signal_v2_2_v4
Indicators Used
Movement directional index
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
AltrTrend_Signal_v2_2_v4
//+------------------------------------------------------------------+
//|                                       AltrTrend_Signal_v2_2.mq4  |
//|                                       Ramdass - Conversion only  |
//+------------------------------------------------------------------+
#property  copyright "Author - OlegVS, GOODMAN"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Crimson

//---- input parameters
extern int K = 30;
extern double Kstop = 0.5;
extern int Kperiod = 150;
extern int PerADX = 14;
extern int CountBars = 350;

//---- buffers
double val1[];
double val2[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
    string short_name;
    //---- indicator line
    IndicatorBuffers(2);
    SetIndexStyle(0,DRAW_ARROW);
    SetIndexArrow(0,108);
    SetIndexStyle(1,DRAW_ARROW);
    SetIndexArrow(1,108);
    SetIndexBuffer(0,val1);
    SetIndexBuffer(1,val2);
    if(CountBars>=Bars) 
        CountBars=Bars;
    SetIndexDrawBegin(0, Bars - CountBars + PerADX);
    SetIndexDrawBegin(1, Bars - CountBars + PerADX);
    //----
    return(0);
  }
//+------------------------------------------------------------------+
//| AltrTrend_Signal_v2_2                                            |
//+------------------------------------------------------------------+
int start()
  {   
    int i, shift, counted_bars = IndicatorCounted();
    int i1, i2;
    double Range, AvgRange, smin, smax, SsMax, SsMin, SSP, price;
    bool uptrend, old;
    //----
    if(Bars <= PerADX + 1) 
        return(0);
    //---- initial zero
    if(counted_bars < PerADX + 1)
      {
        for(i = 1; i <= PerADX; i++) 
            val1[CountBars - i] = 0.0;
        for(i = 1; i <= PerADX; i++) 
            val2[CountBars-i] = 0.0;
      }
    //----
    for(shift = CountBars - PerADX; shift >= 0; shift--) 
      { 
        SSP = MathCeil(Kperiod / iADX(NULL, 0, PerADX, PRICE_CLOSE, MODE_MAIN, 1));
	       Range = 0;
	       AvgRange = 0;
	       for(i1 = shift; i1 <= shift + SSP; i1++)
		        {
		          AvgRange = AvgRange + MathAbs(High[i1] - Low[i1]);
		        }
	       Range = AvgRange / (SSP + 1);
        //----
        SsMax = High[shift]; 
        SsMin = Low[shift]; 
        for(i2 = shift; i2 <= shift + SSP - 1; i2++)
          {
            price = High[i2];
            if(SsMax < price) 
                SsMax = price;
            price = Low[i2];
            if(SsMin >= price)  
                SsMin = price;
          }
        //----
        smin = SsMin + (SsMax - SsMin)*K / 100; 
        smax = SsMax - (SsMax - SsMin)*K / 100; 
	       val1[shift] = 0;
	       val2[shift] = 0;
	       if(Close[shift] < smin)
		        {
		          uptrend = false;
		        }
	       if(Close[shift] > smax)
		        {
		          uptrend = true;
		        }
        if(uptrend != old && uptrend == true) 
          {
            val1[shift] = Low[shift] - Range*Kstop;
          }
        if(uptrend != old && uptrend == false) 
          {
            val2[shift] = High[shift] + Range*Kstop;
          }
        old = uptrend;

      }
    return(0);
  }
//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---