TrendLineRange





//+------------------------------------------------------------------+
//|                                               TrendLineRange.mq4 |
//|                                               Ñîêðàòèëèí Àëåêñåé |
//|                                        sokratilin@brocompany.com |
//+------------------------------------------------------------------+
#property copyright "Ñîêðàòèëèí Àëåêñåé"
#property link      "sokratilin@brocompany.com"

#property indicator_chart_window
//---- input parameters
extern int       PointsRange1=20;            //1-îå ðàññòîÿíèå äî òðåíäîâîé ëèíèè  
extern int       PointsRange2=10;            //2-îå ðàññòîÿíèå äî òðåíäîâîé ëèíèè
extern int       PointsRange3=5;             //3-åå ðàññòîÿíèå äî òðåíäîâîé ëèíèè
extern string    IndexTrendLine;             //Èíäåêñ òðåíäîâîé ëèíèè â ñïèñêå îáúåêòîâ
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   static int S1,S2,S3;                               //Ñ÷åò÷èêè ñèãíàëîâ
   string TrendLine="Trendline "+IndexTrendLine;      //Äîáàâëåíèå èíäåêñà òåíäîâîé ëèíèè ê "Trendline"
   double Price=Bid;                                  //Òåêóùàÿ öåíà
   double TrendLineValue=NormalizeDouble(ObjectGetValueByShift(TrendLine,0),Digits);       //Òåêóùåå çíà÷åíèå òðåíäîâîé ëèíèè
   
   int Range=MathAbs((NormalizeDouble(Price,Digits)-TrendLineValue)*MathPow(10,Digits));
                                                       //Âû÷èñëåíèå ðàññòîÿíèÿ ìåæäó òåêóùåé öåíîé è òðåíäîâîé ëèíèåé
   
   Comment("Range=",Range);
      
   if (Range<=PointsRange1 && Range>PointsRange2 && S1==0)     //Åñëè òåêóùåå ðàñññòîÿíèå <= ðàññòîÿíèÿ1 è > ðàññòîÿíèÿ2
      {                                                        //ñèãíàë íà ýòîì ïðîìåæóòêå íå ïîäàâàëñÿ, òî ïîäàåì îäèí ñèãíàë.
         Alert("Range=",Range," Price=",Price," TrendLine=",TrendLineValue);
         S1=1; S2=0; S3=0;                                     //Îáíóëåíèå ñ÷åò÷èêîâ
      }   
   else
   if (Range<=PointsRange2 && Range>PointsRange3 && S2==0)     //Åñëè òåêóùåå ðàñññòîÿíèå <= ðàññòîÿíèÿ2 è > ðàññòîÿíèÿ3
      {                                                        //ñèãíàë íà ýòîì ïðîìåæóòêå íå ïîäàâàëñÿ, òî ïîäàåì îäèí ñèãíàë.
         Alert("Range=", Range, " Price=", Price, " TrendLine=",TrendLineValue);
         S1=0; S2=1; S3=0;                                     //Îáíóëåíèå ñ÷åò÷èêîâ
      }   
   else
   if (Range<=PointsRange3 && S3==0)                           //Åñëè òåêóùåå ðàñññòîÿíèå <= ðàññòîÿíèÿ3
      {                                                        //ñèãíàë íà ýòîì ïðîìåæóòêå íå ïîäàâàëñÿ, òî ïîäàåì îäèí ñèãíàë.
         Alert("Range=", Range, " Price=", Price, " TrendLine=",TrendLineValue);
         S1=0; S2=0; S3=1;                                     //Îáíóëåíèå ñ÷åò÷èêîâ
      }   
  
   return(0);
  }
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:



Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features:

It issuies visual alerts to the screen