iTime_III-V2

Author:
Price Data Components
Series array that contains the highest prices of each barSeries array that contains the lowest prices of each bar
0 Views
0 Downloads
0 Favorites
iTime_III-V2
//+-------------------------------------------------------------------------------------+
//|                                                     iTime III (FutureSeparates).mq4 | // based on:
//|                                                         Copyright © 2011, komposter |	// 1 - TIME II (VBO) by Vadim Baklanov (ispgip@mail.ru)
//|                                                             http://www.komposter.me | // 2 - FutureSeparators by Scriptong (scriptong@mail.ru)
//+-------------------------------------------------------------------------------------+
#property copyright ""
#property link      "sever11"
//v2.0

#property indicator_chart_window
//+-------------------------------------------------------------------------------------+
//|								*** Âíåøíèå ïàðàìåòðû èíäèêòîðà ***									 |
//+-------------------------------------------------------------------------------------+
extern string      GeneralSessions="-------Íàñòðîéêè-ñåññèé-------";
extern bool         ShowSessions=true;                     // true - ïîêàçûâàòü ñåññèè íà ãðàôèêå
extern color      OnColor=Lime;                     // Öâåò êíîïêè ïåðåêëþ÷åíèÿ ñîñòîÿíèÿ îòðèñîâêè â ðåæèìå ÂÊË.
extern color      OffColor=DarkGray;                  // Öâåò êíîïêè ïåðåêëþ÷åíèÿ ñîñòîÿíèÿ îòðèñîâêè â ðåæèìå ÎÒÊË.
extern bool         PlaceUTCPoints=true;                     // Âûâîäèòü äîïîëíèòåëüíóþ èíôîðìàöèþ ïî ñåññèÿì íà ãðàôèê.
extern color      UTCPointColor=Gray;                     // Öâåò äîïîëíèòåëüíîé èíôîðìàöèè.
extern string      TimeSettings      = "----Âðåìÿ----";
extern int         Broker_TimeZone   =+2;                        // ×àñîâîé ïîÿñ áðîêåðà.
extern datetime   Broker_DST_start   = D'01.01.2001 00:00:00';   // Ïåðåõîä íà ëåòíåå âðåìÿ (Daylight saving time).
extern datetime   Broker_DST_end=D'01.01.2001 00:00:00';   // Ïåðåõîä íà ëåòíåå âðåìÿ (Daylight saving time).
//+-------------------------------------------------------------------------------------+
extern string      CustomSettings="----Îáùèå----";
extern int         DaysToDisplay      = 10;                        // Êîëè÷åñòâî äíåé íà êîòîðûõ îòîáðàæàþòñÿ ñåññèè.
extern int         RectLineStyle      = STYLE_SOLID;               // Ñòèëü ëèíèé îòðèñîâêè.
extern int         RectLineWidth=1;                        // Òîëùèíà ëèíèé îòðèñîâêè.
//+-------------------------------------------------------------------------------------+
extern string      GeneralDelimeters="-------Íàñòðîéêè-ðàçäåëèòåëåé-------";
extern bool         ShowPrevious      = true;                    //ïåðåêëþ÷àòåëü äëÿ îòîáðàæåíèÿ èñòîðèè : TRUE - ïîêàçàòü, FALSE - ñêðûòü.
extern datetime   EndDate            = D'2015.01.01 00:00';      // Äàòà, âïëîòü äî êîòîðîé èäåò ïîñòðîåíèå.
extern int         AllOn=0;                        // 1 - âêëþ÷èòü âñå ðàçäåëèòåëè, -1 - âûêëþ÷èòü âñå ðàçäåëèòåëè
                                                   //	0 - îðèåíòèðîâàòüñÿ íà íàñòðîéêè êàæäîãî îòäåëüíî
//+-------------------------------------------------------------------------------------+
extern string      MonthlyDelimeter   = "----Ìåñÿö----";
extern bool         UseMN1            = true;                     // true - èñïîëüçîâàòü ìåñÿ÷íûé ðàçäåëèòåëü.
extern color      MonthColor         = Black;                     // Öâåò îáû÷íîé ëèíèè.
extern int         MonthWidth         = 1;                        // Òîëùèíà îáû÷íîé ëèíèè.
extern int         MonthStyle         = STYLE_DASH;               // Ñòèëü îáû÷íîé ëèíèè.
extern string      Quarter            = "--Êâàðòàëû--";
extern color      QuarterColor      = Black;                     // Öâåò êâàðòàëüíîé ëèíèè.
extern int         QuarterWidth      = 2;                        // Òîëùèíà êâàðòàëüíîé ëèíèè.
extern int         QuarterStyle=STYLE_SOLID;               // Ñòèëü êâàðòàëüíîé ëèíèè.
//+-------------------------------------------------------------------------------------+
extern string      WeeklyDelimeter="----Íåäåëÿ----";
extern bool         UseW1=true;                     // true - èñïîëüçîâàòü íåäåëüíûé ðàçäåëèòåëü.
extern color      WeekColor=DodgerBlue;               // Öâåò îáû÷íîé ëèíèè.
extern int         WeekWidth=1;                        // Òîëùèíà îáû÷íîé ëèíèè.
extern int         WeekStyle= STYLE_DOT;               // Ñòèëü îáû÷íîé ëèíèè.
//+-------------------------------------------------------------------------------------+
extern string      DailyDelimeter="----Äåíü----";
extern bool         UseD1=true;                     // true - èñïîëüçîâàòü äíåâíîé ðàçäåëèòåëü.
extern color      BusinessDayColor=Lime;                     // Öâåò ðàáî÷èõ äíåé.
extern color      WeekEndColor=Orange;                  // Öâåò âûõîäíûõ äíåé.
extern int         DayWidth=1;                        // Òîëùèíà îáû÷íîé ëèíèè.
extern int         DayStyle= STYLE_DOT;               // Ñòèëü îáû÷íîé ëèíèè.
//+-------------------------------------------------------------------------------------+
extern string      H4Delimeter="----4-×àñà----";
extern bool         UseH4=false;                     // true - èñïîëüçîâàòü 4-õ ÷àñîâîé ðàçäåëèòåëü.
extern color      H4Color= LightCoral;               // Öâåò îáû÷íîé ëèíèè.
extern int         H4Width=1;                        // Òîëùèíà îáû÷íîé ëèíèè.
extern int         H4Style= STYLE_DOT;               // Ñòèëü îáû÷íîé ëèíèè.
//+-------------------------------------------------------------------------------------+
extern string      H1Delimeter="----1-×àñ----";
extern bool         UseH1=false;                     // true - èñïîëüçîâàòü ÷àñîâîé ðàçäåëèòåëü.
extern color      H1Color            = White;                     // Öâåò îáû÷íîé ëèíèè.
extern int         H1Width            = 1;                        // Òîëùèíà îáû÷íîé ëèíèè.
extern int         H1Style=STYLE_DOT;               // Ñòèëü îáû÷íîé ëèíèè.
//+-------------------------------------------------------------------------------------+

string prefix ="FutSep_";
string day[7]={ "ÂÑ","ÏÍ","ÂÒ","ÑÐ","×Ò","ÏÒ","ÑÁ" };

bool MondayWeekStart=true;                     // true - íà÷àëî íåäåëè áóäåò ïîêàçàíî â ïîíåäåëüíèê, èíà÷å - âîñêðåñåíüå.
//+-------------------------------------------------------------------------------------+
//--Time of sessions and DST (Daylight saving time) - all in UTC

//--Southern hemisphere.
//--Sydney. EDT (Eastern Daylight Time) UTC offset +10 DST +1 hour. 
int      SydneyTimeZone         = +10;
datetime   SydneyBegins         = D'01.01.2001 23:00:00';
datetime   SydneyEnds=D'01.01.2001 07:00:00';
datetime   SydneyDSTStarts=D'04.10.2009 02:00:00';
datetime   SydneyDSTEnds=D'05.04.2009 03:00:00';
//--Color settings.
color      SydneyColor=DarkSeaGreen;
color      SydneyBackColor=C'12,0,60';
//--ASX Open.
datetime   ASXOpens=D'01.01.2001 00:00:00';
string   ASXOpensText="+ASX";
string   ASXOpensDescr="+Australian SE";
//--ASX Close.
datetime   ASXCloses=D'01.01.2001 06:00:00';
string   ASXClosesText="-ASX";
string   ASXClosesDescr="-Australian SE";
//+-------------------------------------------------------------------------------------+

//+-------------------------------------------------------------------------------------+
//--Northern hemisphere.
//--Tokyo.
int      TokyoTimeZone=+9;
datetime   TokyoBegins=D'01.01.2001 00:00:00'; //+
datetime   TokyoEnds=D'01.01.2001 08:00:00'; //+
                                             //--Color settings.
color      TokyoColor=DeepPink;
color      TokyoBackColor=C'43,0,23';
//--TSE Open.
datetime   TokyoSEOpens=D'01.01.2001 00:00:00';
string   TokyoSEOpensText="+TSE";
string   TokyoSEOpensDescr="+Tokyo SE";
//--TSE Close.
datetime   TokyoSECloses=D'01.01.2001 06:00:00';
string   TokyoSEClosesText="-TSE";
string   TokyoSEClosesDescr="-Tokyo SE";

//+-------------------------------------------------------------------------------------+
//--Hong Kong, Shanghai Standard time zone:	UTC +8 hours No DST in 2009
int      HongKongTimeZone=+8;
datetime   HongKongBegins= D'01.01.2001 01:00:00';
datetime   HongKongEnds=D'01.01.2001 09:00:00';
//--Color Settings.
color      HongKongColor=Red;
color      HongKongBackColor=C'43,0,0';
//--HKEx Open.
datetime   HKExOpens=D'01.01.2001 02:00:00'; // Pre-opening Session 9:30am to 10:00am, Morning Session	begins in 10:00am
string   HKExOpensText="+HKEx";
string   HKExOpensDescr="+Hong Kong HKEx";
//--HKEx Close.
datetime   HKExCloses=D'01.01.2001 08:00:00'; // 4:00pm
string   HKExClosesText="-HKEx";
string   HKExClosesDescr="-Hong Kong HKEx";
//--SSE Open.
datetime   SSEOpens=D'01.01.2001 01:30:00'; // Pre-Market Session: 09:15 - 09:25 Normal Trading Session: 09:30 - 15:00
string   SSEOpensText="+SSE";
string   SSEOpensDescr="+Shanghai SE";
//--SSE Close.
datetime   SSECloses=D'01.01.2001 07:00:00'; // The afternoon session is 13:00pm to 15:00pm
string   SSEClosesText="-SSE";
string   SSEClosesDescr="-Shanghai SE";

//+-------------------------------------------------------------------------------------+
//--Moscow, MSK (Moscow Standard Time) UTC +3 Daylight saving time:	+1 hour
int      MoscowTimeZone         = +3;
datetime   MoscowDSTStarts      = D'29.03.2009 02:00:00';
datetime   MoscowDSTEnds=D'25.10.2009 03:00:00';
//--RTS Open.
datetime   RTSOpens=D'01.01.2001 07:30:00';
string   RTSOpensText="+RTS";
string   RTSOpensDescr="+RTS áèðæà";
//--RTS Close.
datetime   RTSCloses=D'01.01.2001 15:45:00';
string   RTSClosesText="-RTS";
string   RTSClosesDescr="-RTS áèðæà";

//+-------------------------------------------------------------------------------------+
//--CEST, UTC +1 Daylight saving time:	+1 hour
int      FrankfurtTimeZone      = +1;
datetime   FrankfurtDSTStarts   = D'29.03.2009 01:00:00';
datetime   FrankfurtDSTEnds=D'25.10.2009 02:00:00';
datetime   FrankfurtBegins=D'01.01.2001 07:00:00';
datetime   FrankfurtEnds=D'01.01.2001 16:00:00';
//--Color settings.
color      FrankfurtColor=Gold;
color      FrankfurtBackColor=C'51,33,0';
//--FSE Open.
datetime   FSEOpens=D'01.01.2001 08:00:00'; // Trading runs from 09:00 to 17:30 with closing auction from 17:30-17:35
string   FSEOpensText="+FSE";
string   FSEOpensDescr="+Frankfurt SE";
//--FSE Close.
datetime   FSECloses=D'01.01.2001 16:30:00';
string   FSEClosesText="-FSE";
string   FSEClosesDescr="-Frankfurt SE";

//+-------------------------------------------------------------------------------------+
//--Madrid, CET UTC +1, No DST
int      MadridTimeZone         = +1;
datetime   MadridDSTStarts      = D'29.03.2009 02:00:00';
datetime   MadridDSTEnds=D'25.10.2009 03:00:00';
//--Spanish Stock Market Interconnection System (SIBE), which handles more than 90% of transactions
//--SIBE Open.
datetime   SIBEOpens=D'01.01.2001 08:00:00'; // Trading on SIBE is conducted from 9am to 5:30pm; open outcry from 10am to 11:30am
string   SIBEOpensText="+SIBE";
string   SIBEOpensDescr="+Madrid SIBE";
//--SIBE Close.
datetime   SIBECloses=D'01.01.2001 16:30:00';
string   SIBEClosesText="-SIBE";
string   SIBEClosesDescr="-Madrid SIBE";

//+-------------------------------------------------------------------------------------+
//--GMT, UTC no offset Daylight saving time:	+1 hour
int      LondonTimeZone         = 0;
datetime   LondonDSTStarts      = D'29.03.2009 01:00:00';
datetime   LondonDSTEnds=D'25.10.2009 02:00:00';
datetime   LondonBegins=D'01.01.2001 08:00:00';
datetime   LondonEnds=D'01.01.2001 17:00:00'; //+
                                              //--Color settings.
color      LondonColor=Orange;
color      LondonBackColor=C'12,0,60';
//--LSE Open.
datetime   LSEOpens=D'01.01.2001 08:00:00';
string   LSEOpensText="+LSE";
string   LSEOpensDescr="+London SE";
//--LSE Close.
datetime   LSECloses=D'01.01.2001 16:30:00';
string   LSEClosesText="-LSE";
string   LSEClosesDescr="-London SE";

//+-------------------------------------------------------------------------------------+
//--EST, UTC -5 Daylight saving time:	+1 hour
int      NewYorkTimeZone= -5;
datetime   NewYorkBegins=D'01.01.2001 13:00:00'; //+
datetime   NewYorkEnds=D'01.01.2001 21:00:00';
datetime   NewYorkDSTStarts=D'08.03.2009 02:00:00';
datetime   NewYorkDSTEnds=D'01.11.2009 02:00:00';
//--Color settings.
color      NewYorkColor=CornflowerBlue;
color      NewYorkBackColor=C'12,0,60';
//--NYSE Open.
datetime   NYSEOpens=D'01.01.2001 14:30:00'; //  The New York Stock Exchange opens Monday through Friday at 9:30 EST
string   NYSEOpensText="+ NYSE, Toronto SE, NASDAQ, SP500";
string   NYSEOpensDescr="+ NYSE, Toronto SE, NASDAQ, SP500";
//--NYSE Close.
datetime   NYSECloses=D'01.01.2001 21:00:00'; // 16:00 EST
string   NYSEClosesText="- NYSE, Toronto SE, NASDAQ, SP500(+15min)";
string   NYSEClosesDescr="- NYSE, Toronto SE, NASDAQ, SP500(+15min)";

//+-------------------------------------------------------------------------------------+
//--CDT, UTC -6 Daylight saving time:	+1 hour
int      ChicagoTimeZone= -6;
datetime   ChicagoBegins= D'01.01.2001 14:00:00';
datetime   ChicagoEnds=D'01.01.2001 22:00:00';
datetime   ChicagoDSTStarts=D'08.03.2009 03:00:00';
datetime   ChicagoDSTEnds=D'01.11.2009 01:00:00';
//--Color settings.
color      ChicagoColor=MediumSlateBlue;
color      ChicagoBackColor=C'12,0,60';

//+-------------------------------------------------------------------------------------+
//--General variables.
datetime   daily[];
datetime HistoryDownloadTime   = 0;
double   high                  = 0;
double   low=0;
bool      SessionRectangleOn=false;
//+-------------------------------------------------------------------------------------+

//--Îñíîâíûå ôóíêöèè.
//--init - ïðè ñòàðòå ïðîãðàììû.
int init()
  {
//--Îòðèñîâêà ñåññèé:
   HistoryDownloadTime=0;               //--Ïîäãðóçêà èñòîðèè åùå íå ïðîèçâîäèëàñü...
   SessionRectangleOn=ShowSessions;   //--Èçíà÷àëüíîå ñîñòîÿíèå îòðèñîâêè ñåññèé.

                                      //--Ðèñóåì ïåðåêëþ÷àòåëü ñåññèé íà ãðàôèêå.
   SwitchStatus();

//--Îòðèñîâêè ðàçäåëèòåëåé:
   string   txt= "";
   datetime   i= 0;
   int      wdth=1;
   int      stl=STYLE_SOLID;
   color      clr=Black;

//--Ïðîâåðÿåì ñîñòîÿíèå óïðàâëÿþùåãî ôëàãà: çàïðåùàåì èëè ðàçðåøàåì âñå ñðàçó.
   if( AllOn > 0 ) { UseMN1 = true;   UseW1 = true;   UseD1 = true;   UseH4 = true;   UseH1 = true;   }
   if( AllOn < 0 ) { UseMN1 = false;   UseW1 = false;   UseD1 = false;   UseH4 = false;   UseH1 = false;   }

//--Ðèñóåì H1.
   if(Period()<PERIOD_H1 && UseH1)
     {
      i=iTime(Symbol(),PERIOD_H1,0);
      while(i<EndDate)
        {
         if(!ShowPrevious || i>iTime(Symbol(),PERIOD_H1,0)) { DrawLine(TimeToStr(i),i,H1Style,H1Width,H1Color); }
         i+=PERIOD_H1*60;
        }
     }

//--Ðèñóåì H4.
   if(Period()<PERIOD_H4 && UseH4)
     {
      i=iTime(Symbol(),PERIOD_H4,0);
      while(i<EndDate)
        {
         if(!ShowPrevious || i>iTime(Symbol(),PERIOD_H4,0)) { DrawLine(TimeToStr(i),i,H4Style,H4Width,H4Color); }
         i+=PERIOD_H4*60;
        }
     }

//--Ðèñóåì D1.
   if(Period()<PERIOD_D1 && UseD1)
     {
      i=iTime(Symbol(),PERIOD_D1,0);
      clr=Black;

      while(i<EndDate)
        {
         //--Âûõîäíûå è ðàáî÷èå äíè ðàçíûìè öâåòàìè.
         if(TimeDayOfWeek(i)==0 || TimeDayOfWeek(i)==6) { clr=WeekEndColor; }
         else { clr=BusinessDayColor; }

         if(!ShowPrevious || i>iTime(Symbol(),PERIOD_D1,0)) { DrawLine(TimeToStr(i)+": "+day[TimeDayOfWeek(i)],i,DayStyle,DayWidth,clr); }
         i+=PERIOD_D1*60;
        }
     }

//--Ðèñóåì W1.
   if(Period()<PERIOD_W1 && UseW1)
     {
      i=iTime(Symbol(),PERIOD_W1,0);

      //--Åñëè âûáðàí ðîññèéñêèé ôîðìàò, íà÷èíàåì íåäåëþ â ïîíåäåëüíèê, èíà÷å - â âîñêðåñåíüå.
      if(MondayWeekStart) { i+=PERIOD_D1*60; }

      while(i<EndDate)
        {
         if(!ShowPrevious || i>iTime(Symbol(),PERIOD_W1,0)) { DrawLine(TimeToStr(i)+": "+day[TimeDayOfWeek(i)]+" (íà÷àëî íåäåëè).",i,WeekStyle,WeekWidth,WeekColor); }
         i+=PERIOD_W1*60;
        }
     }

//--Ðèñóåì MN1.
   if(UseMN1)
     {
      i=iTime(Symbol(),PERIOD_MN1,0);
      int      month=0;
      int      year=0;
      string   m_str="";

      clr=Black;

      while(i<EndDate)
        {
         month=TimeMonth(i);
         year=TimeYear(i);

         //--Ñ÷èòàåì ìåñÿö íå êëþ÷åâûì ïî óìîë÷àíèþ.
         wdth=MonthWidth;
         stl   = MonthStyle;
         txt   = TimeToStr(i) + ": " + day[TimeDayOfWeek(i)] + " (íà÷àëî ìåñÿöà).";
         clr   = MonthColor;

         //--Åñëè ýòî 3, 6, 9 èëè 12 ìåñÿö - âûäåëÿåì îñîáûì ñïîñîáîì è ïîäïèñûâàåì ðàçäåëèòåëü.
         switch(month)
           {
            case 3:
               wdth=QuarterWidth;
               stl   = QuarterStyle;
               txt   = txt + " - Îò÷åò çà I-é êâàðòàë.";
               clr   = QuarterColor;
               break;

            case 6:
               wdth=QuarterWidth;
               stl   = QuarterStyle;
               txt   = txt + " - Îò÷åò çà II-é êâàðòàë.";
               clr   = QuarterColor;
               break;

            case 9:
               wdth=QuarterWidth;
               stl   = QuarterStyle;
               txt   = txt + " - Îò÷åò çà III-é êâàðòàë.";
               clr   = QuarterColor;
               break;

            case 12:
               wdth=QuarterWidth;
               stl   = QuarterStyle;
               txt   = txt + " - Êîíåö îò÷åòíîñòè.";
               clr   = QuarterColor;
               break;

            default: break;
           }

         if(!ShowPrevious || i>iTime(Symbol(),PERIOD_MN1,0)) { DrawLine(txt,i,stl,wdth,clr); }

         //--Åñëè óæå îòðèñîâàëè âñå ìåñÿöû çà ãîä, ïåðåêëþ÷àåìñÿ íà ñëåäóþùèé.
         month++;
         if(month>12)
           {
            year++;
            month=1;
           }

         if(month>9) { m_str="0"; }
         else { m_str=""; }

         i=StrToTime(year+"."+m_str+month+".01 00:00");
        }
     }

   if(ShowPrevious)
     {
      datetime time_prev,
      time_next,
      time_line;

      int bars=iBars(Symbol(),Period())-1;

      for(i=bars; i>0; i --)
        {
         time_prev=iTime(Symbol(),Period(),i);      //--âðåìÿ áàðà, êîòîðûé àíàëèçèðóåì
         time_next= iTime(Symbol(),Period(),i-1);   //--âðåìÿ áàðà íà îäèí äàëüøå â èñòîðèè

                                                    //--×àñ.
         if(UseH1 && Period()<PERIOD_H1) { if(TimeHour(time_prev)!=TimeHour(time_next)) { DrawLine(TimeToStr(time_next),time_next,H1Style,H1Width,H1Color); } }

         //--4 ×àñà.
         if(UseH4 && Period()<PERIOD_H4) { if(TimeHour(time_prev)!=TimeHour(time_next) && MathMod(TimeHour(time_next),4)<Point) { DrawLine(TimeToStr(time_next),time_next,H4Style,H4Width,H4Color); } }

         //--Äåíü.
         if(UseD1 && Period()<PERIOD_D1)
           {
            if(TimeDay(time_prev)!=TimeDay(time_next))
              {
               //--Âûõîäíûå è ðàáî÷èå äíè ðàçíûìè öâåòàìè.
               if(TimeDayOfWeek(time_next)==0 || TimeDayOfWeek(time_next)==6) { clr=WeekEndColor; }
               else { clr=BusinessDayColor; }

               DrawLine(TimeToStr(time_next)+": "+day[TimeDayOfWeek(time_next)],time_next,DayStyle,DayWidth,clr);
              }
           }

         //--Íåäåëÿ.
         if(UseW1 && Period()<PERIOD_W1)
           {
            if(TimeDayOfWeek(time_prev)>TimeDayOfWeek(time_next)) { DrawLine(TimeToStr(time_next)+": "+day[TimeDayOfWeek(time_next)]+" (íà÷àëî íåäåëè).",time_next,WeekStyle,WeekWidth,WeekColor); }
            else { if(time_next-time_prev>=PERIOD_D1*420) { DrawLine(TimeToStr(time_next)+": "+day[TimeDayOfWeek(time_next)]+" (íà÷àëî íåäåëè).",time_next,WeekStyle,WeekWidth,WeekColor); } }
           }

         //--Ìåñÿö.
         if(UseMN1)
           {
            if(TimeMonth(time_prev)!=TimeMonth(time_next))
              {
               //--Ñ÷èòàåì ìåñÿö íå êëþ÷åâûì ïî óìîë÷àíèþ.
               wdth=MonthWidth;
               stl   = MonthStyle;
               txt   = TimeToStr(time_next) + ": " + day[TimeDayOfWeek(time_next)] + " (íà÷àëî ìåñÿöà).";
               clr   = MonthColor;

               time_line=time_next;

               if(TimeMonth(time_next)>11 && TimeMonth(time_prev)<12)
                 {
                  wdth=QuarterWidth;
                  stl   = QuarterStyle;
                  txt   = txt + " - Êîíåö îò÷åòíîñòè.";
                  clr   = QuarterColor;
                 }

               if(TimeMonth(time_next)>=3 && TimeMonth(time_prev)<3)
                 {
                  wdth=QuarterWidth;
                  stl   = QuarterStyle;
                  txt   = txt + " - Îò÷åò çà I-é êâàðòàë.";
                  clr   = QuarterColor;
                 }

               if(TimeMonth(time_next)>=6 && TimeMonth(time_prev)<6)
                 {
                  wdth=QuarterWidth;
                  stl   = QuarterStyle;
                  txt   = txt + " - Îò÷åò çà II-é êâàðòàë.";
                  clr   = QuarterColor;
                 }

               if(TimeMonth(time_next)>=9 && TimeMonth(time_prev)<9)
                 {
                  wdth=QuarterWidth;
                  stl   = QuarterStyle;
                  txt   = txt + " - Îò÷åò çà III-é êâàðòàë.";
                  clr   = QuarterColor;
                 }

               DrawLine(txt,time_line,stl,wdth,clr);
              }
           }
        }
     }

   WindowRedraw();

   return(0);
  }
//--deinit - ïðè çàâåðøåíèè ðàáîòû.
int deinit()
  {
   string name="";
   string fix="#@!_";

   for(int i=ObjectsTotal()-1; i>=0; i --)
     {
      name=ObjectName(i);
      //--Óäàëÿåì ëèíèè ðàçäåëèòåëåé è ðàìêè ñåññèé.
      if(StringFind(name,fix      ) >= 0 ) { ObjectDelete(name); continue; }
      if( StringFind( name,prefix ) >= 0 ) { ObjectDelete(name); continue; }

      //--Óäàëÿåì äîïîëíèòåëüíóþ èíôîðìàöèþ î ñåññèÿõ.
      if(!PlaceUTCPoints) { continue; }
      if(StringFind(name," UTC ")>=0) { ObjectDelete(name); }
     }

//--Óäàëÿåì êíîïêó ïåðåêëþ÷åíèÿ.
   if(ObjectFind("Ðàìêè ñåññèé: âêë/îòêë.")>=0) { ObjectDelete("Ðàìêè ñåññèé: âêë/îòêë."); }

   return(0);
  }
//--start - êàæäûé òèê.
int start()
  {
//--Ïðîâåðÿåì ñîñòîÿíèå ïåðåêëþ÷àòåëÿ.
   SwitchStatus();
//--Ðèñóåì ðàìêè ñåññèé.
   SessionsDraw(DaysToDisplay-1,0);

   return(0);
  }
//--Âñïîìîãàòåëüíûå ôóíêöèè.
//--DrawLine - äëÿ îòðèñîâêè âåðòèêàëüíûõ ëèíèé íà ãðàôèêå.
void DrawLine(string text,datetime time,int style,int width,color clr)
  {
   string name=prefix+TimeToStr(time);

   if(ObjectFind(name)<0) { ObjectCreate(name,OBJ_VLINE,0,time,0); }

   ObjectSet(name,OBJPROP_COLOR,clr);
   ObjectSet(name,OBJPROP_STYLE,style);
   ObjectSet(name,OBJPROP_BACK,true);
   ObjectSet(name,OBJPROP_WIDTH,width);

   ObjectSetText(name,text);
  }
//--SwitchStatus - âêëþ÷åíèå/îòêëþ÷åíèå ñåññèé íà ãðàôèêå.
bool SwitchStatus()
  {
   string   name   = "Ðàìêè ñåññèé: âêë/îòêë.";
   string   symb   = "";
   color      clr=Black;

   int      currX   = 0;
   int      currY   = 0;
   int      X      = 5;
   int      Y      = 15;

   if(ObjectFind(name)<0)
     {
      //--óñòàíàâëèâàåì öâåò è ñîñòîÿíèå ïåðåêëþ÷àòåëÿ.
      if(SessionRectangleOn) { symb=CharToStr(164); clr=OnColor; }
      else { symb=CharToStr(161); clr=OffColor; }

      ObjectCreate(name,OBJ_LABEL,0,0,0);
      ObjectSet(name,OBJPROP_CORNER,1);
      ObjectSet(name,OBJPROP_XDISTANCE,X);
      ObjectSet(name,OBJPROP_YDISTANCE,Y);
      ObjectSet(name,OBJPROP_BACK,true);

      ObjectSetText(name,symb,14,"Wingdings",clr);
     }

   currX = ObjectGet( name, OBJPROP_XDISTANCE );
   currY = ObjectGet( name, OBJPROP_YDISTANCE );

//--åñëè äåðãàëè - ìåíÿåì ñîñòîÿíèå
   if(currX-X!=0 || currY-Y!=0)
     {
      SessionRectangleOn=!SessionRectangleOn;
      if(SessionRectangleOn) { symb=CharToStr(164); clr=OnColor; }
      else { symb=CharToStr(161); clr=OffColor; }

      ObjectSet(name,OBJPROP_XDISTANCE,X);
      ObjectSet(name,OBJPROP_YDISTANCE,Y);

      ObjectSetText(name,"",0,"Arial",CLR_NONE);
      ObjectSetText(name,symb,14,"Wingdings",clr);
     }

   WindowRedraw();
  }
// Îòîáðàæåíèå òîðãîâûõ ñåññèé â çàäàííîì èíòåðâàëå âðåìåíè
//
// barshiftD1from - ñìåùåíèå äíåâíîãî áàðà íà÷àëà ïåðèîäà îòîáðàæåíèÿ
// barshiftD1to - ñìåùåíèå äíåâíîãî áàðà îêîí÷àíèÿ ïåðèîäà îòîáðàæåíèÿ
//
void SessionsDraw(int barshiftD1from,int barshiftD1to)
  {
// Äîçàãðóçêà èñòîðèè èíñòðóìåíòà
   if(HistoryDownloadTime<TimeCurrent()-3600)
     {
      CopySeries(daily,MODE_TIME,Symbol(),PERIOD_D1);
      HistoryDownloadTime=TimeCurrent();
     }

   if(!SessionRectangleOn || Period()>PERIOD_H1) { SessionsClose(); return; }

   static datetime counted_bar=0;

   if(iTime(Symbol(),PERIOD_D1,0)>counted_bar)
     {
      SessionsClose();
      counted_bar=iTime(Symbol(),PERIOD_D1,0);
     }

   datetime SessionBeginUTC=0;
   datetime   SessionBegin=0;
   datetime   SessionEndUTC      = 0;
   datetime   SessionEnd         = 0;

   barshiftD1from=MathMax(0,barshiftD1from);
   barshiftD1to=MathMax(0,barshiftD1to);

   for(int daybarshift=barshiftD1from; daybarshift>=barshiftD1to; daybarshift --)
     {
      // Äàòà îòðèñîâêè:
      datetime   day      = iTime ( Symbol(), PERIOD_D1, daybarshift );
      string   idstring   = TimeToStr ( day, TIME_DATE );

      if(day<1) { continue; }

      // Çäåñü è äàëåå ïðèâîäèì âðåìÿ ê âðåìåíè áðîêåðà, äëÿ êîðåêòíîãî ïîçèöèîíèðîâàíèÿ íà ãðàôèêå öåíû.

      //+-------------------------------------------------------------------------------------+
      //--Ñèäíåéñêàÿ ñåññèÿ
      SessionBeginUTC   = TimeTableToUTC ( day, SydneyBegins, SydneyDSTStarts, SydneyDSTEnds );
      SessionBegin      = UTCToLocalTime ( SessionBeginUTC, Broker_TimeZone, Broker_DST_start, Broker_DST_end ) - 24*3600;
      SessionEndUTC      = TimeTableToUTC ( day, SydneyEnds, SydneyDSTStarts, SydneyDSTEnds );
      SessionEnd         = UTCToLocalTime ( SessionEndUTC, Broker_TimeZone, Broker_DST_start, Broker_DST_end );

      OHLC(SessionBegin,SessionEnd);
      PlaceRectangle("Sydney "+idstring,"Sydney",SessionBeginUTC-SessionBegin,SessionBegin,low,SessionEnd,high,SydneyColor,SydneyBackColor,3);

      // Íà÷àëî ñëåäóþùåé ñèäíåéñêîé ñåññèè, èñêëþ÷àÿ ïÿòíèöó:
      if(TimeDayOfYear(day)==DayOfYear() && DayOfWeek()!=5)
        {
         SessionBeginUTC   = TimeTableToUTC ( day, SydneyBegins, SydneyDSTStarts, SydneyDSTEnds );
         SessionBegin      = UTCToLocalTime ( SessionBeginUTC, Broker_TimeZone, Broker_DST_start, Broker_DST_end );
         SessionEndUTC      = TimeTableToUTC ( day, SydneyEnds, SydneyDSTStarts, SydneyDSTEnds ) + 24*3600;
         SessionEnd         = UTCToLocalTime ( SessionEndUTC, Broker_TimeZone, Broker_DST_start, Broker_DST_end );

         OHLC(SessionBegin,SessionEnd);
         PlaceRectangle("Sydney "+idstring+".","Sydney",SessionBeginUTC-SessionBegin,SessionBegin,low,SessionEnd,high,SydneyColor,SydneyBackColor,3);
        }

      //+-------------------------------------------------------------------------------------+
      //--Òîêèéñêàÿ ñåññèÿ
      SessionBeginUTC      = TimeTableToUTC ( day, TokyoBegins, 0, 0 );
      SessionBegin         = UTCToLocalTime ( SessionBeginUTC, Broker_TimeZone, Broker_DST_start, Broker_DST_end );
      SessionEnd=SessionBegin+(TokyoEnds-TokyoBegins);

      OHLC(SessionBegin,SessionEnd);
      PlaceRectangle("Tokyo "+idstring,"Tokyo",SessionBeginUTC-SessionBegin,SessionBegin,low,SessionEnd,high,TokyoColor,TokyoBackColor,0);

      //+-------------------------------------------------------------------------------------+
      //--Ãîíêîíãñêàÿ ñåññèÿ
      SessionBeginUTC   = TimeTableToUTC ( day, HongKongBegins, 0, 0 );
      SessionBegin      = UTCToLocalTime ( SessionBeginUTC, Broker_TimeZone, Broker_DST_start, Broker_DST_end );
      SessionEnd=SessionBegin+(HongKongEnds-HongKongBegins);

      OHLC(SessionBegin,SessionEnd);
      PlaceRectangle("Hong Kong "+idstring,"Hong Kong",SessionBeginUTC-SessionBegin,SessionBegin,low,SessionEnd,high,HongKongColor,HongKongBackColor,1);

      //+-------------------------------------------------------------------------------------+
      //--Ôðàíêôóðò
      SessionBeginUTC   = TimeTableToUTC ( day, FrankfurtBegins, FrankfurtDSTStarts, FrankfurtDSTEnds );
      SessionBegin      = UTCToLocalTime ( SessionBeginUTC, Broker_TimeZone, Broker_DST_start, Broker_DST_end );
      SessionEnd=SessionBegin+(FrankfurtEnds-FrankfurtBegins);

      OHLC(SessionBegin,SessionEnd);
      PlaceRectangle("Frankfurt "+idstring,"Frankfurt, Madrid",SessionBeginUTC-SessionBegin,SessionBegin,low,SessionEnd,high,FrankfurtColor,FrankfurtBackColor,2);

      //+-------------------------------------------------------------------------------------+
      //--Ëîíäîí
      SessionBeginUTC   = TimeTableToUTC ( day, LondonBegins, LondonDSTStarts, LondonDSTEnds );
      SessionBegin      = UTCToLocalTime ( SessionBeginUTC, Broker_TimeZone, Broker_DST_start, Broker_DST_end );
      SessionEnd=SessionBegin+(LondonEnds-LondonBegins);

      OHLC(SessionBegin,SessionEnd);
      PlaceRectangle("London "+idstring,"London",SessionBeginUTC-SessionBegin,SessionBegin,low,SessionEnd,high,LondonColor,LondonBackColor,3);

      //+-------------------------------------------------------------------------------------+
      //--×èêàãî
      SessionBeginUTC   = TimeTableToUTC ( day, ChicagoBegins, ChicagoDSTStarts, ChicagoDSTEnds );
      SessionBegin      = UTCToLocalTime ( SessionBeginUTC, Broker_TimeZone, Broker_DST_start, Broker_DST_end );
      SessionEnd=SessionBegin+(ChicagoEnds-ChicagoBegins);

      OHLC(SessionBegin,SessionEnd);
      PlaceRectangle("Chicago "+idstring,"Chicago",SessionBeginUTC-SessionBegin,SessionBegin,low,SessionEnd,high,ChicagoColor,ChicagoBackColor,1);

      //+-------------------------------------------------------------------------------------+
      //--Íüþ-Éîðê
      SessionBeginUTC   = TimeTableToUTC ( day, NewYorkBegins, NewYorkDSTStarts, NewYorkDSTEnds);
      SessionBegin      = UTCToLocalTime ( SessionBeginUTC, Broker_TimeZone, Broker_DST_start, Broker_DST_end);
      SessionEnd=SessionBegin+(NewYorkEnds-NewYorkBegins);

      OHLC(SessionBegin,SessionEnd);
      PlaceRectangle("NewYork "+idstring,"New York",SessionBeginUTC-SessionBegin,SessionBegin,low,SessionEnd,high,NewYorkColor,NewYorkBackColor,0);

      //+-------------------------------------------------------------------------------------+
      if(PlaceUTCPoints)
        {
         //--Australian Securities Exchange (ASX)
         PlaceImportantPointsUTC(TimeTableToUTC(day,ASXOpens,0,0),ASXOpensText,ASXOpensDescr);
         PlaceImportantPointsUTC(TimeTableToUTC(day,ASXCloses,0,0),ASXClosesText,ASXClosesDescr);

         //+-------------------------------------------------------------------------------------+
         // Tokyo TSE
         PlaceImportantPointsUTC(TimeTableToUTC(day,TokyoSEOpens,0,0),TokyoSEOpensText,TokyoSEOpensDescr);
         PlaceImportantPointsUTC(TimeTableToUTC(day,TokyoSECloses,0,0),TokyoSEClosesText,TokyoSEClosesDescr);

         //+-------------------------------------------------------------------------------------+
         // Hong Kong HKEx
         PlaceImportantPointsUTC(TimeTableToUTC(day,HKExOpens,0,0),HKExOpensText,HKExOpensDescr);
         PlaceImportantPointsUTC(TimeTableToUTC(day,HKExCloses,0,0),HKExClosesText,HKExClosesDescr);

         //+-------------------------------------------------------------------------------------+
         // Shanghai SSE
         PlaceImportantPointsUTC(TimeTableToUTC(day,SSEOpens,0,0),SSEOpensText,SSEOpensDescr);
         PlaceImportantPointsUTC(TimeTableToUTC(day,SSECloses,0,0),SSEClosesText,SSEClosesDescr);

         //+-------------------------------------------------------------------------------------+
         // Moscow ÐÒÑ
         PlaceImportantPointsUTC(TimeTableToUTC(day,RTSOpens,MoscowDSTStarts,MoscowDSTEnds),RTSOpensText,RTSOpensDescr);
         PlaceImportantPointsUTC(TimeTableToUTC(day,RTSCloses,MoscowDSTStarts,MoscowDSTEnds),RTSClosesText,RTSClosesDescr);

         //+-------------------------------------------------------------------------------------+
         // Frankfurt FSE
         PlaceImportantPointsUTC(TimeTableToUTC(day,FSEOpens,FrankfurtDSTStarts,FrankfurtDSTEnds),FSEOpensText,FSEOpensDescr);
         PlaceImportantPointsUTC(TimeTableToUTC(day,FSECloses,FrankfurtDSTStarts,FrankfurtDSTEnds),FSEClosesText,FSEClosesDescr);

         //+-------------------------------------------------------------------------------------+
         // Madrid SIBE
         PlaceImportantPointsUTC(TimeTableToUTC(day,SIBEOpens,MadridDSTStarts,MadridDSTEnds),SIBEOpensText,SIBEOpensDescr);
         PlaceImportantPointsUTC(TimeTableToUTC(day,SIBECloses,MadridDSTStarts,MadridDSTEnds),SIBEClosesText,SIBEClosesDescr);

         //+-------------------------------------------------------------------------------------+
         // London LSE
         PlaceImportantPointsUTC(TimeTableToUTC(day,LSEOpens,LondonDSTStarts,LondonDSTEnds),LSEOpensText,LSEOpensDescr);
         PlaceImportantPointsUTC(TimeTableToUTC(day,LSECloses,LondonDSTStarts,LondonDSTEnds),LSEClosesText,LSEClosesDescr);

         //+-------------------------------------------------------------------------------------+
         // New York NYSE
         PlaceImportantPointsUTC(SessionBeginUTC+(NYSEOpens-NewYorkBegins),NYSEOpensText,NYSEOpensDescr);
         PlaceImportantPointsUTC(SessionBeginUTC+(NYSECloses-NewYorkBegins),NYSEClosesText,NYSEClosesDescr);
        }
     }

   WindowRedraw();
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OHLC(datetime fromtime,datetime totime)
  {
   int barshiftfrom=iBarShift(Symbol(),PERIOD_H1,fromtime);
   int barshiftto=iBarShift(Symbol(),PERIOD_H1,totime-1);

   if(iTime(Symbol(),PERIOD_H1,barshiftto) > totime - 1) { barshiftto      ++; }
   if(iTime(Symbol(),PERIOD_H1,barshiftfrom) > fromtime) { barshiftfrom   ++; }

   int highestbarshift=iHighest(Symbol(),PERIOD_H1,MODE_HIGH,barshiftfrom-barshiftto+1,barshiftto);
   int lowestbarshift=iLowest(Symbol(),PERIOD_H1,MODE_LOW,barshiftfrom-barshiftto+1,barshiftto);

   high=iHigh(Symbol(),PERIOD_H1,highestbarshift);
   low=iLow(Symbol(),PERIOD_H1,lowestbarshift);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
datetime TimeTableToUTC(datetime date,datetime time,datetime DSTStarts,datetime DSTEnds)
  {
   datetime UTC=StrToTime(TimeToStr(date,TIME_DATE)+" "+TimeHour(time)+":"+TimeMinute(time)+":"+TimeSeconds(time));

   if(DSTStarts<=DSTEnds) { if(UTC>=DSTStarts && UTC<=DSTEnds) { UTC-=3600; } }
   else { if(!(UTC>DSTEnds && UTC<DSTStarts)) { UTC-=3600; } }

   return(UTC);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
datetime UTCToLocalTime(datetime UTC,int TimeZone,datetime DSTStarts,datetime DSTEnds)
  {
   datetime timeyear=StrToTime("01.01."+TimeYear(UTC));
   datetime dstyear=StrToTime("01.01."+TimeYear(DSTStarts));

   datetime dststart=timeyear+DSTStarts-dstyear;
   datetime dstend=timeyear+DSTEnds-dstyear;

   if(DSTStarts<=DSTEnds && DSTStarts!=0) { if(UTC>=dststart && UTC<=dstend) { UTC+=3600; } }
   else if(DSTStarts>=DSTEnds && DSTEnds!=0)
     {
      datetime endofyear=StrToTime("31.12."+TimeYear(dststart));
      if(( UTC>=timeyear && UTC<=dstend) || (UTC>=dststart && UTC<=endofyear)) { UTC+=3600; }
     }

   return(UTC+TimeZone*3600);
  }
// Óäàëèòü âñå ãðàôè÷åñêèå îáúåêòû èíäèêàòîðà òîðãîâûõ ñåññèé
//
void SessionsClose()
  {
   int      obj_total=ObjectsTotal()-1;
   string   objname="";
   string   fix="#@!_";

   for(int obj=obj_total; obj>=0; obj --)
     {
      objname=ObjectName(obj);
      if(StringFind(objname,fix)>=0) { ObjectDelete(objname); continue; }

      if(!PlaceUTCPoints) { continue; }
      if(StringFind(objname," UTC ")>=0) { ObjectDelete(objname); }
     }
  }
// Îòðèñîâàòü îäíó ñåññèþ
//
void PlaceRectangle(string session,string description,int toUTC,datetime time1,double price1,datetime time2,double price2,color session_color,color rect_color,int level)
  {
   if(time2<time1 || time2>time1+12*3600) { return; }

   string fix="#@!_";
   string objname="";
// Ðàìêè ñåññèé íà ãðàôèêå öåíû
   objname=fix+session+" Session High";
   if(ObjectFind(objname)<0) { ObjectCreate(objname,OBJ_TREND,0,time1,price2,time2,price2); }
   ObjectSet(objname,OBJPROP_COLOR,session_color);
   ObjectSet(objname,OBJPROP_BACK,true);
   ObjectSet(objname,OBJPROP_STYLE,RectLineStyle);
   ObjectSet(objname,OBJPROP_WIDTH,RectLineWidth);
   ObjectSet(objname,OBJPROP_RAY,0);

   objname=fix+session+" Session Low";
   if(ObjectFind(objname)<0) { ObjectCreate(objname,OBJ_TREND,0,time1,price1,time2,price1); }
   ObjectSet(objname,OBJPROP_COLOR,session_color);
   ObjectSet(objname,OBJPROP_BACK,true);
   ObjectSet(objname,OBJPROP_STYLE,RectLineStyle);
   ObjectSet(objname,OBJPROP_WIDTH,RectLineWidth);
   ObjectSet(objname,OBJPROP_RAY,0);

   objname=fix+session+" Session Begin";
   if(ObjectFind(objname)<0) { ObjectCreate(objname,OBJ_TREND,0,time1,price2,time1,price1); }
   ObjectSet(objname,OBJPROP_COLOR,session_color);
   ObjectSet(objname,OBJPROP_BACK,true);
   ObjectSet(objname,OBJPROP_STYLE,RectLineStyle);
   ObjectSet(objname,OBJPROP_WIDTH,RectLineWidth);
   ObjectSet(objname,OBJPROP_RAY,0);

   objname=fix+session+" Session End";
   if(ObjectFind(objname)<0) { ObjectCreate(objname,OBJ_TREND,0,time2,price1,time2,price2); }
   ObjectSet(objname,OBJPROP_COLOR,session_color);
   ObjectSet(objname,OBJPROP_BACK,true);
   ObjectSet(objname,OBJPROP_STYLE,RectLineStyle);
   ObjectSet(objname,OBJPROP_WIDTH,RectLineWidth);
   ObjectSet(objname,OBJPROP_RAY,0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PlaceImportantPointsUTC(datetime UTC,string text,string description)
  {
   datetime   time=UTCToLocalTime(UTC,Broker_TimeZone,Broker_DST_start,Broker_DST_end);
   string   name=TimeToStr(UTC,TIME_DATE|TIME_MINUTES)+" UTC ";

   int      barshift=iBarShift(Symbol(),0,time);

   if((IndicatorCounted()<barshift+1) || (barshift==0) || (IndicatorCounted()==0)) return;

   string   settext="";
   low=MathMin(MathMin(Low[barshift],Low[barshift+1]),Low[barshift-1]);
   if(low<0.1) { low=Bid; }

   if(ObjectFind(name)<0) { ObjectCreate(name,OBJ_ARROW,0,time,low-8*Point); settext=description; }
   else
     {
      settext=ObjectDescription(name);
      if(StringFind(settext,description)<0) { settext=settext+", "+description; }
     }

   ObjectSet(name,OBJPROP_ARROWCODE,191);
   ObjectSet(name,OBJPROP_BACK,true);
   ObjectSet(name,OBJPROP_COLOR,UTCPointColor);
   ObjectSetText(name,settext);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CopySeries(datetime &array[],int MODE,string SYMBOL,int PERIOD)
  {
   ArrayCopySeries(array,MODE,SYMBOL,PERIOD);
   int lasterror=GetLastError();

   if(lasterror==4066) // ERR_HISTORY_WILL_UPDATED
     {
      int attempt=0;
      while(lasterror==4066 && attempt<10)
        {
         Sleep(5000);
         ArrayCopySeries(array,MODE,SYMBOL,PERIOD);
         lasterror=GetLastError();
        }
     }
  }
//+------------------------------------------------------------------+

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