i-MorningRange_v1





//+------------------------------------------------------------------+
//|                                               i-MorningRange.mq4 |
//|                                           Êèì Èãîðü Â. aka KimIV |
//|                                              http://www.kimiv.ru |
//|                                                                  |
//|  08.02.2006  Èíäèêàòîð óòðåííåãî äèàïàçîíà.                      |
//+------------------------------------------------------------------+
#property copyright "Êèì Èãîðü Â. aka KimIV"
#property link      "http://www.kimiv.ru"
//----
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Orange
//------- Âíåøíèå ïàðàìåòðû èíäèêàòîðà -------------------------------
extern string CheckTime   ="08:00";  // Âðåìÿ ïðîâåðêè äèàïàçîíà
extern bool   ShowHistory =True;     // Ïîêàçûâàòü èñòîðè÷åñêèå óðîâíè
extern int    NumberOfDays=5;        // Êîëè÷åñòâî äíåé èñòîðèè
extern bool   ShowComment =True;     // Ïîêàçûâàòü êîììåíòàðèè
//------- Áóôåðû èíäèêàòîðà ------------------------------------------
double dBuf0[], dBuf1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
  void init() 
  {
   SetIndexArrow (0, 217);
   SetIndexBuffer(0, dBuf0);
   SetIndexStyle (0, DRAW_ARROW, 1, 1);
   SetIndexArrow (1, 218);
   SetIndexBuffer(1, dBuf1);
   SetIndexStyle (1, DRAW_ARROW, 1, 1);
   DeleteLines();
     for(int i=0; i<2; i++) 
     {
      ObjectCreate("HLine"+i, OBJ_HLINE, 0, 0,0);
     }
     for(i=0; i<NumberOfDays; i++) 
     {
      CreateLines("upLine"+i, indicator_color1);
      CreateLines("dnLine"+i, indicator_color2);
     }
  }
//+------------------------------------------------------------------+
//| Ñîçäàíèå îáúåêòîâ Ëèíèÿ ïðîøëûõ äíåé                             |
//| Ïàðàìåòðû:                                                       |
//|   no - íàèìåíîâàíèå ëèíèè                                        |
//|   cl - öâåò ëèíèè                                                |
//+------------------------------------------------------------------+
  void CreateLines(string no, color cl) 
  {
   ObjectCreate(no, OBJ_TREND, 0, 0,0, 0,0);
   ObjectSet(no, OBJPROP_STYLE, STYLE_SOLID);
   ObjectSet(no, OBJPROP_WIDTH, 1);
   ObjectSet(no, OBJPROP_COLOR, cl);
   ObjectSet(no, OBJPROP_RAY, False);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
  void deinit() 
  {
   DeleteLines();
   Comment("");
  }
//+------------------------------------------------------------------+
//| Óäàëåíèå ãîðèçîíòàëüíûõ ëèíèé.                                   |
//+------------------------------------------------------------------+
  void DeleteLines() 
  {
     for(int i=0; i<2; i++) 
     {
      ObjectDelete("HLine"+i);
     }
     for(i=0; i<NumberOfDays; i++) 
     {
      ObjectDelete("upLine"+i);
      ObjectDelete("dnLine"+i);
     }
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
  void start() 
  {
   datetime t1, t2, dt;
   double   p1, p2;
   int      b1, b2, sd=0;
//----
   t1=StrToTime(TimeToStr(CurTime(), TIME_DATE)+" 00:00");
   t2=StrToTime(TimeToStr(CurTime(), TIME_DATE)+" "+CheckTime);
   b1=iBarShift(NULL, 0, t1);
   b2=iBarShift(NULL, 0, t2);
   p1=High[Highest(NULL, 0, MODE_HIGH, b1-b2+1, b2)];
   p2=Low [Lowest (NULL, 0, MODE_LOW , b1-b2+1, b2)];
   SetHLine(0, p1);
   SetHLine(1, p2);
     if (ShowHistory) 
     {
      dt=decDateTradeDay(CurTime());
        for(int i=0; i<NumberOfDays; i++) 
        {
         DrawLines(dt, i);
         dt=decDateTradeDay(dt);
         while(TimeDayOfWeek(dt)<1 || TimeDayOfWeek(dt)>5) dt=decDateTradeDay(dt);
        }
     }
   if (ShowComment) Comment("CheckTime="+CheckTime);
  }
//+------------------------------------------------------------------+
//| Óñòàíàâëèâàåò ðåêâèçèòû ãîðèçîíòàëüíîé ëèíèè òåêóùåãî äíÿ.       |
//+------------------------------------------------------------------+
  void SetHLine(int nl, double pp) 
  {
   color cl;
     if (pp!=EMPTY_VALUE) 
     {
        switch(nl) 
        {
            case 0: cl=indicator_color1; break;
            case 1: cl=indicator_color2; break;
           }
         ObjectSet("HLine"+nl, OBJPROP_PRICE1, pp);
         ObjectSet("HLine"+nl, OBJPROP_COLOR , cl);
        }
           }
//+------------------------------------------------------------------+
//| Ïðîðèñîâêà ëèíèé íà ãðàôèêå                                      |
//| Ïàðàìåòðû:                                                       |
//|   dt - äàòà òîðãîâîãî äíÿ                                        |
//|   nd - íîìåð äíÿ (äëÿ íóìåðàöèè îáúåêòîâ)                        |
//+------------------------------------------------------------------+
  void DrawLines(datetime dt, int nd) 
   {
                  datetime t1, t2;
                  double   p1, p2;
                  int      b1, b2;

                  t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 00:00");
                  t2=StrToTime(TimeToStr(dt, TIME_DATE)+" "+CheckTime);
                  b1=iBarShift(NULL, 0, t1);
                  b2=iBarShift(NULL, 0, t2);
                  p1=High[Highest(NULL, 0, MODE_HIGH, b1-b2+1, b2)];
                  p2=Low [Lowest (NULL, 0, MODE_LOW , b1-b2+1, b2)];

                  ObjectSet("upLine"+nd, OBJPROP_TIME1 , t1);
                  ObjectSet("upLine"+nd, OBJPROP_PRICE1, p1);
                  ObjectSet("upLine"+nd, OBJPROP_TIME2 , t2);
                  ObjectSet("upLine"+nd, OBJPROP_PRICE2, p1);

                  ObjectSet("dnLine"+nd, OBJPROP_TIME1 , t1);
                  ObjectSet("dnLine"+nd, OBJPROP_PRICE1, p2);
                  ObjectSet("dnLine"+nd, OBJPROP_TIME2 , t2);
                  ObjectSet("dnLine"+nd, OBJPROP_PRICE2, p2);
                 }

//+------------------------------------------------------------------+
//| Óìåíüøåíèå äàòû íà îäèí òîðãîâûé äåíü                            |
//| Ïàðàìåòðû:                                                       |
//|   dt - äàòà òîðãîâîãî äíÿ                                        |
//+------------------------------------------------------------------+
                 datetime decDateTradeDay(datetime dt) 
                 {
                  int ty=TimeYear(dt);
                  int tm=TimeMonth(dt);
                  int td=TimeDay(dt);
                  int th=TimeHour(dt);
                  int ti=TimeMinute(dt);
//----
                  td--;
                    if (td==0) 
                    {
                     tm--;
                       if (tm==0) 
                       {
                        ty--;
                        tm=12;
                       }
                     if (tm==1 || tm==3 || tm==5 || tm==7 || tm==8 || tm==10 || tm==12) td=31;
                     if (tm==2) if (MathMod(ty, 4)==0) td=29; else td=28;
                     if (tm==4 || tm==6 || tm==9 || tm==11) td=30;
                    }
                  return(StrToTime(ty+"."+tm+"."+td+" "+th+":"+ti));
                 }
//+------------------------------------------------------------------+





Sample





Analysis



Market Information Used:

Series array that contains the highest prices of each bar


Indicator Curves created:



Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: