Pivot_AXEL_MF_0-3255





//+-------------------------------------------------------------------+
//|                                MF_Pivot AXEL 0-2255.mq4           |
//|                                Copyright © YuraZ-VAF-Zhunko-Nestor|
//|                                MF YURAZ     yzh@mail.ru           |
//|                                MF VAF  vazh-af@inbox.ru           |
//|                                MF ZHUNKO zhunko@mail.ru           |
//|                                MF NESTOR a_nesterchuk@mail.ru     |
//+-------------------------------------------------------------------+
//| Èäèêàòîð ðàçðàáîòàí ïî ìàòåðèàëàì ÀÊÀÄÅÌÈÈ ÌÔ.                    |
//| ÈÑÏÐÀÂËÅÍÍÀß ÂÅÐÑÈß.                                              |
//| Ñîâïàäàåò ñ òî÷íîñòüþ 5ï ñ óðîâíÿìè DJ îò Axel Rudolph !          |
//| Áåðåò äàííûå ñ M1.                                                |
//|                          ÂÍÈÌÀÅÍÈÅ!                               |
//| Åñëè âàøå ÄÖ äà¸ò íå òî÷íûå êîòèðîâêè - PIVOT íå áóäåò ñîâïàäàòü. |
//+-------------------------------------------------------------------+
//|                    ÈÇÌÅÍÅÍÈß è ÄÎÏÎËÍÅÍÈß.                        |
//| 1.Äîïîëíåíèÿ â âåðñèè MF_Pivot AXEL 0-101 îò 06.09.2006 .         |
//| 1.1.Âîçìîæíî ïåðåìåùåíèå âñåé íàäïèñè ïî ýêðàíó êîîðäèíàòàìè XY   |
//| 1.2.Ââåäåíû íàñòðîéêè ïî óìîë÷àíèþ.                               |
//| 1.3.Ââåäåíà íàñòðîéêà öâåòà òåêñòà.                               |
//| 2.Äîïîëíåíèÿ â âåðñèè MF_Pivot AXEL 0-102 îò 08.09.2006 .         |
//| 2.1.Èñïðàâëåíà îøèáêà îòðèñîâêè ëèíèè â íåêîòîðûõ òåðìèíàëàõ.     |
//| 3.Äîïîëíåíèÿ â âåðñèè MF_Pivot AXEL 0-103 îò 09.09.2006 .         |
//| 3.1.Èçìåí¸í ïåðåêëþ÷àòåëü âûâîäà òåêñòà íà ëîãè÷åñêèé.            |
//| 3.2.Èçìåíåíû íàçâàíèÿ âíåøíèõ ïåðåìåííûõ.                         |
//| 3.3.Ââåäåíû îòñóòñòâóþùèå êîìåíòàðèè â èñõîäíèê.                  |
//| 3.4.Èçìåíåíà íàñòðîéêà ðàçíèöû âðåìåíè ìåæäó ÌÒ4 è GMT.           |
//| 4.Äîïîëíåíèÿ â âåðñèè MF_Pivot AXEL 0-113 îò 14.09.2006 .         |
//| 4.1.Ââåäíà íå÷óâñòâèòåëåííîñòü ê ïðîïóùåííûì áàðàì.               |
//| 5.Äîïîëíåíèÿ â âåðñèè MF_Pivot AXEL 0-114 îò 17.09.2006 .         |
//| 5.1.Óïðîùåíû íàñòðîéêè âðåìåíè êîíöà ïåðèîäà ðàñ÷¸òà è âðåìåíè    |
//|     íà÷àëà îòðèñîâêè ëèíèè.                                       |
//| 5.2.Íà âàëþòíûõ ïàðàõ, ñîäåðæàùèõ JPY, â òåêñòîâîé ñòðîêå öèôðîâîå|
//|     çíà÷åíèå ïîñëå çàïÿòîé ñîäåðæèò äâà çíàêà. Íà îñòàëüíûõ       |
//|     âàëþòíûõ ïàðàõ - ÷åòûðå.                                      |
//| 6.Äîïîëíåíèÿ â âåðñèè MF_Pivot AXEL 0-214 îò 18.09.2006 .         |
//| 6.1 Äîðàáîòêà âûâîäà êîëè÷åñòâà çíàêîâ äëÿ âàëþòíûõ ïàð â         |
//|     òåêñòîâîì îòîáðàæåíèè.                                        |
//| 7.Äîïîëíåíèÿ â âåðñèè MF_Pivot AXEL 0-224 îò 19.09.2006 .         |
//| 7.1.Óñòðàíåíà îøèáêà íà÷àëà ðàñ÷¸òà â ïîíåäåëüíèê.                |
//| 8.Äîïîëíåíèÿ â âåðñèè MF_Pivot AXEL 0-225 îò 24.09.2006 .         |
//| 8.1.Óñòðàíåíà îøèáêà íà÷àëà ðàñ÷¸òà â àçèàòñêóþ ñåññèþ.           |
//| 8.2.Ïðè îòñóòñòâèè äàííûõ äëÿ ðàñ÷¸òà âìåñòî "99999999,0000"      |
//|     âûâîäèòñÿ "0,0000".                                           |
//| 9.Äîïîëíåíèÿ â âåðñèè MF_Pivot AXEL 0-2254 îò 06.10.2006 .        |
//| 9.1.Êîððåêòíîå îòîáðàæåíèå ïîêàçàíèé â çàâèñèìîñòè îò èçìåíåíèÿ   |
//|     ïàðàìåòðîâ ñòàðòà ðàñ÷¸òà.                                    |
//| 9.2.Îïòèìèçàöèÿ êîäà ïðåîáðàçîâàíèé.                              |
//| 9.3.Èçìåíåíèå àëãîðèòìà ðàñ÷¸òà ìèíèìóìîâ è ìàêñèìóìîâ ñåññèé.    |
//| 10.Äîïîëíåíèÿ â âåðñèè MF_Pivot AXEL 0-2255 îò 06.11.2006         |
//| 10.1.Ïåðåõîä íà âû÷èñëåíèå ïî âûøåèäóùåìó òàéì-ôðåéìó äëÿ äíåé, ó |
//|      êîòîðûõ îòñóòñòâóåò ïîëíàÿ èñòîðèÿ íà ìëàäøèõ òàéì-ôðåéìàõ.  |
//| 10.2.Ïîäêîððåêòèðîâàí àëãîðèòì ðàñ÷åòà ïèâîòà íà åâðîïåéñêóþ      |
//|      ñåññèþ â çèìíåå âðåìÿ.                                       |
//| 10.3.Îïòèìèçèðîâàíà çàãðóçêà êîìïüþòåðà. Âû÷èñëåíèå çíà÷åíèÿ      |
//|      òîëüêî ïðè ïîÿâëåíèè íîâîé ñâå÷è, à íå ñ êàæäûì òèêîì.       |
//| 11.  Äîïîëíåíèÿ â âåðñèè MF_Pivot AXEL 0-3255 îò 25.08.2007       |     
//| 11.1.Äîáàâëåíà ôóíêöèÿ àâòîìàòè÷åñêîãî îïðåäåëåíèÿ                |
//|      ëåòíåãî çèìíåãî âðåìåíè                                      |
//+-------------------------------------------------------------------+
#property copyright "Copyright © 2006 YuraZ-VAF-Zhunko-Nestor"
#property link      "yzh@mail.ru ; vazh-af@inbox.ru ; zhunko@mail.ru ; a_nesterchuk@mail.ru"


#property indicator_chart_window 
#property indicator_buffers 1
//Öâåò ïî óìîë÷àíèþ.
#property indicator_color1 Gold
//Ñòèëü ïî óìîë÷àíèþ.
#property indicator_style1 STYLE_DASH
//Òîëùèíà ëèíèè ïî óìîë÷àíèþ.
#property indicator_width1 1
//----Ëîêàëèçàöèÿ---------------------------------------------------------------------------------------------------------------------------------
extern int    Äíåé = 30;                       // Êîëè÷åñòâî ðàñ÷èòûâàåìûõ äíåé.
extern int    Âðåìÿ_ÄÖ = 2;                    // Ðàçíèöà âî âðåìåíè ìåæäó ÌÒ4 è GMT.
//----Íàñòðîéêà äëèíû ïåðèîäà ðàñ÷¸òà-------------------------------------------------------------------------------------------------------------
extern double Asia_ïåðèîä_ðàñ÷¸òà_÷àñ   = 12 ; // Ïåðèîä ðàñ÷¸òà â ÷àñàõ äëÿ Àçèè.
extern double Europe_ïåðèîä_ðàñ÷¸òà_÷àñ =  9 ; // Ïåðèîä ðàñ÷¸òà â ÷àñàõ äëÿ Åâðîïû.
extern double USA_ïåðèîä_ðàñ÷¸òà_÷àñ    =  6 ; // Ïåðèîä ðàñ÷¸òà â ÷àñàõ äëÿ Àìåðèêè.
//----Íàñòðîéêà âðåìåíè êîíöà ïåðèîäà ðàñ÷¸òà è âðåìåíè íà÷àëà îòðèñîâêè ëèíèè--------------------------------------------------------------------
extern string Start_ASIA          = "00:15" ;  // Âðåìÿ êîíöà ïåðèîäà ðàñ÷¸òà äëÿ Àçèè ïî GMT.
                                               // Âðåìÿ íà÷àëà îòðèñîâêè ëèíèè "PIVOT DJ ASIA" (ó÷èòûâàþòñÿ òîëüêî ÷àñû, ìèíóòû îòáðàñûâàþòñÿ).
extern string Start_EUROPE_Winter = "06:15" ;  // Âðåìÿ êîíöà ïåðèîäà ðàñ÷¸òà äëÿ Åâðîïû ïî GMT.
                                               // Âðåìÿ íà÷àëà îòðèñîâêè ëèíèè "PIVOT DJ EUROPE" (ó÷èòûâàþòñÿ òîëüêî ÷àñû, ìèíóòû îòáðàñûâàþòñÿ).
extern string Start_USA_Winter    = "13:00" ;  // Âðåìÿ êîíöà ïåðèîäà ðàñ÷¸òà äëÿ Àìåðèêè ïî GMT.
                                               // Âðåìÿ íà÷àëà îòðèñîâêè ëèíèè "PIVOT DJ USA" (ó÷èòûâàþòñÿ òîëüêî ÷àñû, ìèíóòû îòáðàñûâàþòñÿ).
//----Íàñòðîéêà îòîáðàæåíèÿ-----------------------------------------------------------------------------------------------------------------------
extern int    Óãîë         =   0   ;    // Ðàñïîëîæåíèå èíäèêàòîðà : 0 = ñâåðõó ñëåâà, 1 = ñâåðõó ñïðàâà, 2 = ñíèçó ñëåâà, 3 = ñíèçó ñïðàâà.
extern int    XD           = 250   ;    // Ñìåùåíèå îò óãëà ïî X.
extern int    YD           =   0   ;    // Ñìåùåíèå îò óãëà ïî Y.
extern bool   TEXT_Visible = true  ;    // true - îòîáðàæàòü òåêñò; false - íå îòîáðàæàòü òåêñò.
extern color  TextColor    = White ;    // Öâåò òåêñòà.


//================================================================================================================================================
double nClose   = 0 ;
double nPivot   = 0 ; 
double nMaxHigh = 0 ; 
double nMinLow  = 0 ;
//---------------------------------------------------------------
static bool   Time_Summer = false;             // true - ëåòíåå âðåìÿ / false - çèìíåå âðåìÿ.
//---------------------------------------------------------------
double    PBuffer[];
//---------------------------------------------------------------
static string ss1 = "Asia DJ Pivot"    ;
static string ss2 = "Europe DJ Pivot"  ;
static string ss3 = "Usa DJ Pivot"     ;
//===============================================================
datetime t;
int init() 
 {
  t=0;
  if ( TEXT_Visible == true )
   {
    ObjectCreate(ss1, OBJ_LABEL, 0, 0, 0);   
    ObjectSet(ss1, OBJPROP_XDISTANCE, XD);
    ObjectSet(ss1, OBJPROP_YDISTANCE, YD);
    ObjectSet(ss1, OBJPROP_CORNER, Óãîë);

    ObjectCreate(ss2, OBJ_LABEL, 0, 0, 0);   
    ObjectSet(ss2, OBJPROP_XDISTANCE, XD);
    ObjectSet(ss2, OBJPROP_YDISTANCE, 10+YD);
    ObjectSet(ss2, OBJPROP_CORNER, Óãîë);

    ObjectCreate(ss3, OBJ_LABEL, 0, 0, 0);   
    ObjectSet(ss3, OBJPROP_XDISTANCE, XD);
    ObjectSet(ss3, OBJPROP_YDISTANCE, 20+YD);
    ObjectSet(ss3, OBJPROP_CORNER, Óãîë);
   }
    SetIndexStyle(0,DRAW_LINE);
    SetIndexBuffer(0,PBuffer);
  return(0); 
 }
//===============================================================
int deinit() 
{ 
if ( TEXT_Visible == true )
 {
  ObjectDelete(ss1);
  ObjectDelete(ss2);
  ObjectDelete(ss3);
 }
return(0); 
} 
//===============================================================
 void funPivot(int pDay, int pMonth, int pYear,  double PeriodHour, double hourMT4, double minuteMT4)
  { 
   datetime dTimeMT4end;
   datetime dTimeMT4begin;
   
   string sTimeMT4 = StringConcatenate(DoubleToStr( pYear, 0),".",DoubleToStr( pMonth , 0),".",DoubleToStr( pDay , 0)," ",
                     DoubleToStr( hourMT4, 0),":",DoubleToStr( minuteMT4, 0) ) ; 
                    
   dTimeMT4end = StrToTime(sTimeMT4); 
   dTimeMT4begin = dTimeMT4end - PeriodHour*3600+60  ;  
   
   if (TimeDayOfWeek (dTimeMT4begin) ==0)
   dTimeMT4begin = dTimeMT4begin - 172800;

//which period to use depends on the history presence.

   int i=PERIOD_M1;
   int j =iBarShift(NULL,i,dTimeMT4begin,true);

   if (j == -1)
    i=PERIOD_M5;
    j=iBarShift(NULL,i,dTimeMT4begin,true);

   if (j == -1)
    i=PERIOD_M15;

   int      shiftend=iBarShift(NULL,i,dTimeMT4end);
   int      shiftbegin=iBarShift(NULL,i,dTimeMT4begin);
      
   nMinLow =iLow(NULL,i,Lowest ( NULL, i, MODE_LOW, shiftbegin-shiftend, shiftend));
   nMaxHigh= iHigh(NULL,i,Highest( NULL, i, MODE_HIGH, shiftbegin-shiftend, shiftend)); 
   nClose=iClose(NULL,i,shiftend);
   nPivot = (nMaxHigh+nMinLow+nClose)/3;
   
   return; 
  } 
//================================================================
int start() 
 {
  if(t==Time[0]) return(0);
  t=Time[0];
    
  int mDay;
  int mMonth ;
  int mYear  ;
  string mYearMonthDay;
//----------------------------------------------------------------
  static double PeriodHour_ ; // = Asia_ïåðèîä_ðàñ÷¸òà_÷àñ;
  static double hourMT4_    ; // = Asia_êîíåö_ïåðèîäà_MT4_÷àñ; 
  static double minuteMT4_  ; // = Asia_êîíåö_ïåðèîäà_MT4_ìèí; 

  static double nPivotEurope; // = nPivot; 
  static double nMaxHighE   ; // = nMaxHigh; 
  static double nMinLowE    ; // = nMinLow; 
  static double nCloseE     ; // = nClose; 

  static double nPivotUSA   ; // = nPivot; 
  static double nMaxHighU   ; // = nMaxHigh; 
  static double nMinLowU    ; // = nMinLow; 
  static double nCloseU     ; // = nClose; 

  static double nPivotASIA  ; // = nPivot; 
  static double nMaxHighA   ; // = nMaxHigh; 
  static double nMinLowA    ; // = nMinLow; 
  static double nCloseA     ; // = nClose; 
//-----------------------------------------------------------------
  datetime  mDatBegin;

// âðåìÿ áåðåòñÿ ñ áàðà äëÿ ïðàâèëüíîé ðàáîòû  â ñîâåòíèêàõ - ïðè òåñòèðîâàííèè TimeCurrent() - èìåëà ïðîáëåìó
  Time_Summer = TimeWinter(iTime(Symbol(),PERIOD_M15,0)); // äîñòàòî÷íûé ÒÔ äëÿ îïðåäåëåíèÿ ëåòà èëè çèìà 

//  if (Bars != IndicatorCounted())
   {
    if (Äíåé == 0 )
     {
      deinit();
      return(0);
     }
  else
     {
      mDatBegin = StrToTime(StringConcatenate(TimeToStr(CurTime(),TIME_DATE)," 00:00")) - ((Äíåé-1) * 86400);
     }
//==================================================================
  for ( ; mDatBegin < CurTime();  mDatBegin += 86400 )
   {
    mYear  = TimeYear( mDatBegin);
    mMonth = TimeMonth( mDatBegin);
    mDay   = TimeDay( mDatBegin);
    mYearMonthDay = StringConcatenate(DoubleToStr (mYear,0) , "." , DoubleToStr (mMonth, 0) , "." , DoubleToStr (mDay , 0));
//----------------------------------------------------------------------------------------------------------------------------------------------------------------
    Start_ASIA=StringTrimRight(StringTrimLeft(Start_ASIA));
    Start_EUROPE_Winter=StringTrimRight(StringTrimLeft(Start_EUROPE_Winter));
    Start_USA_Winter=StringTrimRight(StringTrimLeft(Start_USA_Winter));
    
    if (Time_Summer==true) int TWS =1;
    else TWS=0;
    
    int  Asia_end_MT4_hour           = StrToDouble(StringSubstr(Start_ASIA, 0, 2)) + Âðåìÿ_ÄÖ;
    int  Asia_end_MT4_min            = StrToDouble(StringSubstr(Start_ASIA, 3, 2)) ;
                                    
    int  Europe_end_MT4_hour_pivot   = StrToDouble (StringSubstr(Start_EUROPE_Winter, 0, 2)) + Âðåìÿ_ÄÖ-1+TWS;
    int  Europe_end_MT4_hour_session = StrToDouble (StringSubstr(Start_EUROPE_Winter, 0, 2)) + Âðåìÿ_ÄÖ - TWS;
    int  Europe_end_MT4_min          = StrToDouble (StringSubstr(Start_EUROPE_Winter, 3, 2)) ;
                                    
    int  USA_end_MT4_hour_pivot      = StrToDouble (StringSubstr(Start_USA_Winter, 0, 2)) + Âðåìÿ_ÄÖ - TWS;
    int  USA_end_MT4_hour_session    = StrToDouble (StringSubstr(Start_USA_Winter, 0, 2)) + Âðåìÿ_ÄÖ - TWS;
    int  USA_end_MT4_min             = StrToDouble (StringSubstr(Start_USA_Winter, 3, 2)) ;
//----------------------------------------------------------------------------------------------------------------------------------------------------------------*/
    PeriodHour_  = Asia_ïåðèîä_ðàñ÷¸òà_÷àñ;
    hourMT4_     = Asia_end_MT4_hour;
    minuteMT4_   = Asia_end_MT4_min;
    funPivot( mDay, mMonth ,mYear ,PeriodHour_, hourMT4_, minuteMT4_);
    nPivotASIA   = nPivot;
    nMaxHighA    = nMaxHigh;
    nMinLowA     = nMinLow;
    nCloseA      = nClose;
//----------------------------------------------
    PeriodHour_  = Europe_ïåðèîä_ðàñ÷¸òà_÷àñ;
    hourMT4_     = Europe_end_MT4_hour_pivot;
    minuteMT4_   = Europe_end_MT4_min;
    funPivot(mDay, mMonth,mYear,PeriodHour_, hourMT4_, minuteMT4_);
    nPivotEurope = nPivot;
    nMaxHighE    = nMaxHigh;
    nMinLowE     = nMinLow;
    nCloseE      = nClose;
//----------------------------------------------
    PeriodHour_  = USA_ïåðèîä_ðàñ÷¸òà_÷àñ;
    hourMT4_     = USA_end_MT4_hour_pivot;
    minuteMT4_   = USA_end_MT4_min;
    funPivot(mDay, mMonth,mYear,PeriodHour_, hourMT4_, minuteMT4_);
    nPivotUSA    = nPivot;
    nMaxHighU    = nMaxHigh;
    nMinLowU     = nMinLow;
    nCloseU      = nClose;
//----------------------------------------------
    string DC_ASIA   = StringConcatenate(mYearMonthDay , " " , Asia_end_MT4_hour, ":00");   
    string DC_EUROPE = StringConcatenate(mYearMonthDay , " " , Europe_end_MT4_hour_session, ":00");   
    string DC_USA    = StringConcatenate(mYearMonthDay , " " , USA_end_MT4_hour_session, ":00");   
   
    int pPivotBARA = iBarShift (NULL,0,StrToTime (DC_ASIA)); 
    int pPivotBARE = iBarShift (NULL,0,StrToTime (DC_EUROPE));  
    int pPivotBARU = iBarShift (NULL,0,StrToTime (DC_USA));

      int j;

      if ( nPivotASIA !=0 )
         {
          for (j = 0  ; j < pPivotBARA; j++)
            PBuffer[j] = nPivotASIA ;
         }  
      if ( nPivotEurope !=0)
         {
          for (j = 0  ; j < pPivotBARE; j++)
            PBuffer[j] = nPivotEurope ;
         }

      if (nPivotUSA !=0 )
         {
          for (j = 0 ; j < pPivotBARU; j++)
            PBuffer[j] = nPivotUSA ;
         }
    }

   if (TEXT_Visible == true )
    {
     string sPivotASIA    =  StringConcatenate("PivotAsia     =",DoubleToStr(nPivotASIA  ,Digits)," High="+DoubleToStr(nMaxHighA,Digits)," Low=",DoubleToStr(nMinLowA,Digits)," Close=",DoubleToStr(nCloseA,Digits)) ; 
     string sPivotEUROPE  =  StringConcatenate("PivotEurope="   ,DoubleToStr(nPivotEurope,Digits)," High="+DoubleToStr(nMaxHighE,Digits)," Low=",DoubleToStr(nMinLowE,Digits)," Close=",DoubleToStr(nCloseE,Digits)) ;
     string sPivotUSA     =  StringConcatenate("PivotUSA    ="  ,DoubleToStr(nPivotUSA   ,Digits)," High="+DoubleToStr(nMaxHighU,Digits)," Low=",DoubleToStr(nMinLowU,Digits)," Close="+DoubleToStr(nCloseU,Digits)) ; 

     ObjectSetText(ss1, sPivotASIA   , 8, "Arial", TextColor); 
     ObjectSetText(ss2, sPivotEUROPE , 8, "Arial", TextColor); 
     ObjectSetText(ss3, sPivotUSA    , 8, "Arial", TextColor); 
    }
 }
return(0);
}


////////////////////////////////////////////////////////////// 
//
// YURAZ yzh mail ru
//
// ôóíêöèÿ âåðíåò 
// true   -  ëåòíåå âðåìÿ
// false  -  çèìíåå âðåìÿ
// 
//  ïåðåõîä íà çèìíåå â íî÷ü  ïîñëåäíåãî âîñêðåñåíüÿ ÎÊÒßÁÐß
//  ïåðåõîä íà ëåòíåå â íî÷ü  ïîñëåäíåãî âîñêðåñåíüÿ ÌÀÐÒÀ
// 
bool TimeWinter(datetime dt) 
{
   int i;

   if (   TimeMonth(dt) >= 11 || TimeMonth(dt) <= 2 ) // ÇÈÌÀ
   {
      return(false); //    ìãíîâåííî âåðíåì çèìíåå
   }
   if (   TimeMonth(dt) >= 4 && TimeMonth(dt) <= 9) // ËÅÒÎ
   {
      return(true); //    ìãíîâåííî âåðíåì  Ëåòî
   }

// äåëàòü íå÷åãî èäåì îïðåäåëÿòü 
   datetime tSeek;
   string sTIM;
   if ( TimeMonth(dt) == 10 ) // îêòÿáðü
   {
      if ( TimeDay(dt) >= 20 ) // íî÷üþ â ïîñëåäåå âîñêðåñåíüå îêòÿáðÿ - ïåðåõîä íà çèìíåå âðåìÿ
      {
         tSeek = StrToTime( StringTrimRight(StringTrimLeft(DoubleToStr(TimeYear(dt),0)))+".10.31");  // óñòàíîâèì ïîñëåäíèé äåíü îêòÿáðÿ
         // èùåì ïåðâîå âîñêðåñåíüå ñ êîíöà
         for ( i = 31; i >= 20; i-- )
         {
            if ( TimeDayOfWeek(tSeek) == 0 ) 
            {
               break;   // íàøëè ïîñëåäíåå âîñêðåñåíüíå îêòÿáðÿ
            }
            tSeek = tSeek - 86400; // åùå îäèí äåíü
         }
         if ( dt >= tSeek  ) // óæå çèìíåå âðåìÿ
         {
            return(false); // äà çèìà
         }
      }
      return(true);
   }
   if ( TimeMonth(dt) == 3 ) // ìàðò
   {
      if ( TimeDay(dt) >= 20 ) // íî÷üþ â ïîñëåäåå âîñêðåñåíüå ÌÀÐÒÀ - ïåðåõîä íà ËÅÒÍÅÅ âðåìÿ
      {
         tSeek = StrToTime( StringTrimRight(StringTrimLeft(DoubleToStr(TimeYear(dt),0)))+".03.31");  // óñòàíîâèì ïîñëåäíèé äåíü ìàðòà
        
         for ( i = 31; i >= 20; i-- )
         {
            if ( TimeDayOfWeek(tSeek) == 0 ) // èùåì ïåðâîå âîñêðåñåíüå ñ êîíöà
            {
               break; // íàøëè ïîñëåäíåå âîñêðåñåíüíå ìàðòà
            }
            tSeek = tSeek - 86400; // åùå îäèí äåíü
         }
         if ( dt >= tSeek  ) // óæå ëåòíåå âðåìÿ
         {
            return(true); //  óæå ëåòî 
         }
      }
      return(false);
   }
}

//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

Series array that contains the lowest prices of each bar
Series array that contains the highest prices of each bar
Series array that contains close prices for each bar
Series array that contains open time of each bar


Indicator Curves created:

Implements a curve of type DRAW_LINE


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: