i-AnyRange_v1

Author: ��� ����� �. aka KimIV
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
i-AnyRange_v1
//+----------------------------------------------------------------------------+
//|                                                            i-AnyRange.mq4  |
//|                                                    Êèì Èãîðü Â. aka KimIV  |
//|                                                       http://www.kimiv.ru  |
//+----------------------------------------------------------------------------+
#property copyright "Êèì Èãîðü Â. aka KimIV"
#property link      "http://www.kimiv.ru"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 LightBlue
#property indicator_color2 Salmon
#property indicator_width1 2
#property indicator_width2 2

//------- Âíåøíèå ïàðàìåòðû èíäèêàòîðà -----------------------------------------
extern string Time1 = "02:00";    // Âðåìåííàÿ òî÷êà 1
extern string Time2 = "07:00";    // Âðåìåííàÿ òî÷êà 2
extern int    nDays = 2;          // Êîëè÷åñòâî äíåé îáñ÷¸òà (0-âñå)

//------- Ãëîáàëüíûå ïåðåìåííûå ------------------------------------------------

//------- Ïîêëþ÷åíèå âíåøíèõ ìîäóëåé -------------------------------------------

//------- Áóôåðû èíäèêàòîðà ----------------------------------------------------
double dBuf0[],dBuf1[];
//+----------------------------------------------------------------------------+
//|  Custom indicator initialization function                                  |
//+----------------------------------------------------------------------------+
void init() 
  {
   SetIndexBuffer(0,dBuf0);
   SetIndexEmptyValue(0,EMPTY_VALUE);
   SetIndexStyle(0,DRAW_LINE);

   SetIndexBuffer(1,dBuf1);
   SetIndexEmptyValue(1,EMPTY_VALUE);
   SetIndexStyle(1,DRAW_LINE);
  }

//+----------------------------------------------------------------------------+
//|  Custom indicator deinitialization function                                |
//+----------------------------------------------------------------------------+
void deinit() { Comment(""); }
//+----------------------------------------------------------------------------+
//|  Custom indicator iteration function                                       |
//+----------------------------------------------------------------------------+
void start() 
  {
   double up,dn;
   int    i,LoopBegin,kd=0,nb1,nb2,nd=0;
   string sdt;

   if(Period()>PERIOD_H1) 
     {
      Comment("Èíäèêàòîðó i-AnyRange íóæåí ÒÔ ìëàäøå H4!"); return;
     }
   else Comment("");

   if(nDays==0) LoopBegin=Bars-10;
   else LoopBegin=nDays*1440/Period();
   LoopBegin=MathMin(Bars-10,LoopBegin);

   for(i=0; i<LoopBegin; i++) 
     {
      if(nd!=TimeDay(Time[i])) 
        {
         nd=TimeDay(Time[i]);
         kd++;
         if(kd>nDays && nDays>0) return;
         sdt=TimeToStr(Time[i], TIME_DATE);
         nb1=iBarShift(NULL, 0, StrToTime(sdt+" "+Time1));
         nb2=iBarShift(NULL, 0, StrToTime(sdt+" "+Time2));
         if(nb1>nb2+1) 
           {
            up=High[iHighest(NULL, 0, MODE_HIGH, nb1-nb2, nb2+1)];
            dn=Low [iLowest (NULL, 0, MODE_LOW , nb1-nb2, nb2+1)];
           }
         if(nb2>nb1+1) 
           {
            up=High[iHighest(NULL, 0, MODE_HIGH, nb2-nb1, nb1+1)];
            dn=Low [iLowest (NULL, 0, MODE_LOW , nb2-nb1, nb1+1)];
           }
        }
      if((nb1>=i && i>nb2) || (nb2>=i && i>nb1)) 
        {
         dBuf0[i]=up;
         dBuf1[i]=dn;
           } else {
         dBuf0[i]=EMPTY_VALUE;
         dBuf1[i]=EMPTY_VALUE;
        }
     }
  }
//+----------------------------------------------------------------------------+

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 ---