SessionsFlat_v1

Author: Scriptong
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
SessionsFlat_v1
//+------------------------------------------------------------------+
//|                                                 SessionsFlat.mq4 |
//|                                                        Scriptong |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Scriptong"
#property link      ""

#property indicator_chart_window
#property indicator_buffers 6
#property indicator_color1 Yellow
#property indicator_color2 Yellow
#property indicator_color3 Blue
#property indicator_color4 Blue
#property indicator_color5 Red
#property indicator_color6 Red

extern int AzianFlatStart=0;
extern int AzianFlatEnd=8;
extern int EuropeanFlatStart=8;
extern int EuropeanFlatEnd=16;
extern int AmericanFlatStart=16;
extern int AmericanFlatEnd= 24;
extern double TargetLevel = 161.8;
extern color UpColor = Turquoise;
extern color DnColor = Red;
extern color TargetUpColor = Gold;
extern color TargetDnColor = Silver;

//---- buffers
double Up1[],Up2[],Up3[];
double Dn1[],Dn2[],Dn3[];
double TargetUp[];
double TargetDn[];
bool Activate=False;
int Start[3],Finish[3];
//+-------------------------------------------------------------------------------------+
//| Custom indicator initialization function                                            |
//+-------------------------------------------------------------------------------------+
int init()
  {
// - 1 - === Ïðîâåðêà ïðàâèëüíîñòè ïåðèîäà ãðàôèêà ======================================
   if(Period()>PERIOD_H1)
     {
      Comment("Èíäèêàòîð ðàáîòàåò íà òàéìôðåéìàõ ìåíüøå H4!");
      return(0);
     }
// - 1 - === Îêîí÷àíèå áëîêà ============================================================

// - 2 - == Îáíîâëåíèå äàííûõ äíåâíîãî ÒÔ ===============================================   
   Comment("Ïîäîæäèòå, èäåò îáíîâëåíèå äàííûõ äíåâíîãî òàéìôðåéìà...");
   int P=0;
   while(P<120)
     {
      iTime(Symbol(),PERIOD_D1,0);
      if(GetLastError()!=4066) break;
      Sleep(1000);
      P++;
     }
   if(P==120)
     {
      Comment("Îáíîâëåíèå äàííûõ çàâåðøèëîñü ñ îøèáêîé. Ñîâåòíèê îòêëþ÷åí!");
      Print("Îáíîâëåíèå äàííûõ çàâåðøèëîñü ñ îøèáêîé. Ñîâåòíèê îòêëþ÷åí!");
      return(0);
     }
   Comment("");
// - 2 - == Îêîí÷àíèå áëîêà =============================================================

// - 3 - === Ïåðåêîìïîíîâêà âðåìåíè ñåññèé â ìàññèâû è ïðîâåðêà êîððåêòíîñòè äàííûõ =====
   if(!ToArray(0,AzianFlatStart,AzianFlatEnd) || 
      !ToArray(1,EuropeanFlatStart,EuropeanFlatEnd) || 
      !ToArray(2,AmericanFlatStart,AmericanFlatEnd))
      return(0);
// - 3 - === Îêîí÷àíèå áëîêà ============================================================

// - 4 - === Èíèöèàëèçàöèÿ áóôåðîâ èíäèêàòîðà ===========================================
   SetIndexStyle(0,DRAW_ARROW);                                      // Àçèàòñêàÿ ñåññèÿ
   SetIndexBuffer(0,Up1);
   SetIndexArrow(0,108);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexBuffer(1,Dn1);
   SetIndexArrow(1,108);
   SetIndexStyle(2,DRAW_ARROW);                                    // Åâðîïåéñêàÿ ñåññèÿ
   SetIndexBuffer(2,Up2);
   SetIndexArrow(2,108);
   SetIndexStyle(3,DRAW_ARROW);
   SetIndexBuffer(3,Dn2);
   SetIndexArrow(3,108);
   SetIndexStyle(4,DRAW_ARROW);                                   // Àìåðèêàíñêàÿ ñåññèÿ
   SetIndexArrow(4,108);
   SetIndexBuffer(4,Up3);
   SetIndexStyle(5,DRAW_ARROW);
   SetIndexBuffer(5,Dn3);
   SetIndexArrow(5,108);
   SetIndexEmptyValue(0, 0.0);
   SetIndexEmptyValue(1, 0.0);
   SetIndexEmptyValue(2, 0.0);
   SetIndexEmptyValue(3, 0.0);
   SetIndexEmptyValue(4, 0.0);
   SetIndexEmptyValue(5, 0.0);
// - 4 - === Îêîí÷àíèå áëîêà ============================================================

   Activate=True;                                       // èíèöèàëèçàöèÿ ïðîøëà óñïåøíî

   return(0);
  }
//+------------------------------------------------------------------+
//| Ïåðåêîìïîíîâêà âõîäíûõ ïàðàìåòðîâ â ìàññèâ                       |
//+------------------------------------------------------------------+
bool ToArray(int Num,int St,int End)
  {
   if(St<0 || End<0 || St>24 || End>24 || St>=End)
     {
      Comment("Çíà÷åíèÿ âðåìåíè Start è End äîëæíû ëåæàòü â äèàïàçîíå îò 0 äî 24 è Start < End.");
      Print("Çíà÷åíèÿ âðåìåíè Start è End äîëæíû ëåæàòü â äèàïàçîíå îò 0 äî 24 è Start < End.");
      return(False);
     }
   int i=Num-1;
   while(i>=0)
     {
      if(Start[i]>=St || Finish[i]>=End || Finish[i]>St)
        {
         Comment("Îáíàðóæåíî ïåðåñå÷åíèå ñåññèé. Èíäèêàòîð ðàáîòàòü íå áóäåò.");
         Print("Îáíàðóæåíî ïåðåñå÷åíèå ñåññèé. Èíäèêàòîð ðàáîòàòü íå áóäåò.");
         return(False);
        }
      i--;
     }

   Start[Num]=St;
   Finish[Num]=End;
   return(True);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
// Óäàëåíèå  îáúåêòîâ-öåíîâûõ ìåòîê
   for(int i=ObjectsTotal()-1; i>=0; i--)
     {
      string Name=ObjectName(i);
      if(StringSubstr(Name,0,3)=="Lab")
         ObjectDelete(Name);
     }
   Comment("");
//----
   return(0);
  }
//+-------------------------------------------------------------------------------------+
//| Custom indicator iteration function                                                 |
//+-------------------------------------------------------------------------------------+
int start()
  {
//----
   if(!Activate) return(0);

// int counted_bars=IndicatorCounted();
// if (counted_bars>0) counted_bars--;
//int i = iBarShift(Symbol(), 0, iTime(Symbol(), PERIOD_D1, 
//                      iBarShift(Symbol(), PERIOD_D1, Time[Bars-counted_bars])));
   int counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   int i=Bars-counted_bars;
   if(counted_bars==0) i--;

   while(i>=0)
     {
      Up1[i] = 0.0;
      Up2[i] = 0.0;
      Up3[i] = 0.0;
      Dn1[i] = 0.0;
      Dn2[i] = 0.0;
      Dn3[i] = 0.0;
      int DayBar=iBarShift(Symbol(),PERIOD_D1,Time[i]);           // Íîìåð áàðà íà D1

      int k = 0;
      for(k = 0; k < 3; k++)
         if(TimeHour(Time[i])>=Start[k] && TimeHour(Time[i])<Finish[k])
           {
            if(k==0)
              {
               DayBar++;
               int j=2;
              }
            else
               j=k-1;
            datetime BeginDay=iTime(Symbol(),PERIOD_D1,DayBar);    // Ðàñ÷åò âðåìåíè íà÷àëà ñóòîê
            if(!(TimeDayOfWeek(BeginDay)==5 && k==0))
              {
               int StartBar=iBarShift(Symbol(),0,BeginDay+Start[j]*3600);   // Áàð, ñîîòâåòñâóþùèé íà÷àëó ñóòîê ïëþñ ñìåùåíèå â ÷àñàõ
               int FinishBar=iBarShift(Symbol(),0,BeginDay+Finish[j]*3600)+1; // Áàð, ñîîòâåòñòâóþùèé ïîñëåäíåìó áàðó ïðåäûäóùåé ñåññèè
               int ind1=iLowest(Symbol(), 0, MODE_LOW, StartBar-FinishBar+1, FinishBar);
               int ind2=iHighest(Symbol(), 0, MODE_HIGH, StartBar-FinishBar+1, FinishBar);
               if(ind1>-1 && ind2>-1)
                 {
                  double LowV=Low[ind1];  // Íèæíÿÿ ãðàíèöà
                  double HighV=High[ind2]; // Âåðõíÿÿ ãðàíèöà
                 }
              }
            else
              {
               LowV=0;
               HighV=0;
              }
            break;
           }

      while(i>=0)
        {
         if(!(TimeHour(Time[i])>=Start[k])) break;
         if(!(TimeHour(Time[i])<Finish[k])) break;

         switch(k)
           {
            case 0:
               Up1[i] = HighV;
               Dn1[i] = LowV;
               break;
            case 1:
               Up2[i] = HighV;
               Dn2[i] = LowV;
               break;
            case 2:
               Up3[i] = HighV;
               Dn3[i] = LowV;
               break;
           }
         i--;
        }
     }

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