Navigation:Home > Content >

Grid_ATR.mq4

Time: 2011-09-20 | Download file:Grid_ATR.mq4

//+------------------------------------------------------------------+
//|                                                         Grid.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2."
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property indicator_chart_window

input int Step=55;         // шаг между линиями
input int Count=5;         // число линий
input int Days=5;          // дней для расчета
input int Koef=1;          // делитель волатильности
input bool D=false;        // флаг расчета по дням
input color ColorSup=Red;  // цвет сопротивления
input color ColorRes=Blue; // цвет поддержки
input color ColorLine=Green; // цвет точки отсчета
input double Price=1.124;  // точка отсчета

bool Put=true;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   ObjectsDeleteAll(0,0,OBJ_HLINE);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
   ObjectsDeleteAll(0,0,OBJ_HLINE);
  }
//+------------------------------------------------------------------+
//| Горизонтальная линия                                             |
//+------------------------------------------------------------------+
void PutHLine(string name,double p,color clr)
  {
   ObjectDelete(0,name);
   ObjectCreate(0,name,OBJ_HLINE,0,0,p);
//--- установим цвет линии
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим толщину линии
   ObjectSetInteger(0,name,OBJPROP_WIDTH,1);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   double delta=0,pr1=0,pr2=0;
   for(int i=1;i<=Days;i++)
     {
      delta+=(iHigh(NULL,PERIOD_D1,i)-iLow(NULL,PERIOD_D1,i));
     }
   delta=(delta/Days/Koef)/Point;
   
   if(Put)
     {
      PutHLine("Line: "+(string)Price,Price,ColorLine);
      
      for(int i=1;i<=Count;i++)
        {
         if(D)
           {
            pr1=NormalizeDouble(Price+delta*Point*i,Digits);
            PutHLine("Supp Line: "+(string)pr1,pr1,ColorSup);
            pr2=NormalizeDouble(Price-delta*Point*i,Digits);
            PutHLine("Res Line: "+(string)pr2,pr2,ColorRes);
            Put=false;
           }

         if(D==false)
           {
            pr1=NormalizeDouble(Price+Step*Point*i,Digits);
            PutHLine("Supp Line: "+(string)pr1,pr1,ColorSup);
            pr2=NormalizeDouble(Price-Step*Point*i,Digits);
            PutHLine("Res Line: "+(string)pr2,pr2,ColorRes);
            Put=false;
           }
        }
     }

   Comment("\n Delta: ",NormalizeDouble(delta,0));
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

Recommend