Pivot_AXEL_MF_0-3255

Download script
Author: Copyright � 2006 YuraZ-VAF-Zhunko-Nestor
Pivot_AXEL_MF_0-3255

This script is an automated technical analysis tool designed to calculate and display specific "Pivot" price levels for three major global markets: Asia, Europe, and the USA. These levels are intended to help traders identify potential support and resistance zones based on historical price action.

Core Functionality

The primary logic of the script involves scanning historical market data to determine key price benchmarks—specifically the highest price (High), the lowest price (Low), and the closing price for each specific trading session. By analyzing these three figures, the script calculates a "Pivot" value using a standard averaging formula.

Market Segmentation

The tool divides the global trading day into three distinct geographic segments:

  • Asia Session: Based on a 12-hour calculation period.
  • Europe Session: Based on a 9-hour calculation period.
  • USA Session: Based on a 6-hour calculation period.

Intelligent Time & Date Handling

One of the more sophisticated aspects of this script is its awareness of external variables that typically complicate automated trading:

  • Time Zone Adjustments: The script allows users to input their specific GMT offset to ensure the data aligns with their local time.
  • Daylight Savings Awareness: It contains a dedicated logic engine to automatically detect whether the market is currently in Summer or Winter time. This ensures that pivot lines shift correctly during seasonal time changes without manual intervention.
  • Data Integrity: If the script encounters a "gap" in history (such as missing data for a specific day), it is designed to handle these gaps gracefully to prevent incorrect calculations or visual errors on the chart.

Visual Presentation

The script provides two ways to interact with this information:

  1. Chart Lines: It draws horizontal dashed lines on the trading chart, representing the calculated Pivot levels for the current active session.
  2. Dynamic Text Labels: The user can enable text boxes on the chart that display the exact numerical values for the Asia, Europe, and USA pivots, alongside their respective Highs, Lows, and Closing prices. These labels can be customized by the user in terms of position (corners), font color, and offset.

Efficiency Features

To ensure the trading platform remains responsive, the script is optimized to perform calculations only when a new price candle appears, rather than recalculating on every single price tick. This prevents unnecessary strain on the computer's processor while still providing up-to-date information as the market moves.

Price Data Components
Series array that contains the lowest prices of each barSeries array that contains the highest prices of each barSeries array that contains close prices for each barSeries array that contains open time of each bar
Miscellaneous
Implements a curve of type %1
7 Views
0 Downloads
0 Favorites
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);
   }
}

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

Comments