My Color Levels.rus

Author: Copyright 2017, Tor & omutmoren
Miscellaneous
It plays sound alerts
0 Views
0 Downloads
0 Favorites
My Color Levels.rus
ÿþ//+------------------------------------------------------------------+

//|                                              My Color Levels.mq4 |

//|                                              Copyright 2017, Tor |

//|                                             http://einvestor.ru/ |

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

#property copyright "Copyright 2017, Tor & omutmoren"

#property link      "https://www.mql5.com/ru/users/tormovies"

#property version   "1.00"

#property strict

#property indicator_chart_window



ENUM_BASE_CORNER  InpCorner=CORNER_LEFT_UPPER;   // #3>; 3@0D8:0 4;O ?@82O7:8

extern string           NameL1 = ""#";

extern string           NameL2 = " #";

extern string           NameL3 = "# !"";

extern color             clrTIU      = clrGray;              //&25B "#

extern color             clrRUZ      = clrGreen;             //&25B  #

extern color             clrURST     = clrGold;              //&25B # !"

extern bool              Alerts      = true;                 //2C:>2>9 A83=0;

extern bool              Flash       = true;                 //&25B>2>9 A83=0; M:@0=0

extern bool              LongTIU     = true;                 //@>4;OBL ?@O<>C3>;L=8:8 "# (false = =5B)

extern color             clrUpper    = clrRed;               //&25B ?@O<>C3>;L=8:>2 2KH5 F5=K

extern color             clrLower    = clrGreen;             //&25B ?@O<>C3>;L=8:>2 =865 F5=K

extern color             clrDefaultBG= clrWhite;             //&25B D>=0 ?> C<>;G0=8N

extern color             clrAlertBG  = clrYellow;            //!83=0;L=K9 F25B D>=0

extern string            soundFile   ="alert.wav";           //$09; 72C:>2>3> A83=0;0

extern int               soundMax    =1;                     //'8A;> ?>2B>@5=89 72C:>2>3> A83=0;0

extern bool              Magnit      = true;                 //@8<03=8G820BL C@>25=L : B5;C A25G8

extern bool              TextWrite   = true;                 //>4?8AK20BL C@>2=8



extern string t2="Other settings";

extern color   panl_0_cl   =  clrGainsboro;        // &25B ?0=5;8 8=AB@C<5=B>2

extern bool    panl_0_st   =  true;                // B>1@060BL ?0=5;L?

                                                   // >>@48=0BK

extern int x_coor = 10;    // !4283 ?> >A8 X

extern int y_coor = 20;    // !4283 ?> >A8 Y

                           // ;O :=>?>:

bool              InpSelection      =  false;               // K45;8BL 4;O ?5@5<5I5=89

bool              InpHidden         =  true;                // !:@KB 2 A?8A:5 >1J5:B>2

bool              InpHidden_OBJ     =  false;               // !:@KB 2 A?8A:5 >1J5:B>2

bool              InpBackRect       =  false;               // 1J5:B =0 704=5< ?;0=5



int x_size=202; int y_size=40; int x_step=5; int y_panl=20; int x_rect=60; int y_rect=20; int y_line=6;

int lastAlert=0; static double lastBid=Bid; string secret="8wJgN";



string obj_name[8]={"name_1","name_2","name_3","name_4"};

long clrCandle=ChartGetInteger(0,CHART_COLOR_CANDLE_BEAR,0);

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

//| Custom indicator initialization function                         |

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

int OnInit()

  {

//--- indicator buffers mapping

//--- 8=8F80;878@C5< 35=5@0B>@ A;CG09=KE G8A5; 

   MathSrand(GetTickCount());

   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,true);

   ChartSetInteger(0,CHART_EVENT_OBJECT_DELETE,true);

   CheckObjects();

   long lastBGcolor=ChartGetInteger(0,CHART_COLOR_BACKGROUND,0);

   if(lastBGcolor!=clrDefaultBG){ ChartSetInteger(0,CHART_COLOR_BACKGROUND,clrDefaultBG); }



//---

   return(INIT_SUCCEEDED);

  }

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

//|                                                                  |

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

void OnDeinit(const int reason)

  {

   Comment("");

   if(_UninitReason==REASON_REMOVE)

     {

      RectLabelDelete(0,obj_name[0]);

      RectLabelDelete(0,obj_name[1]);

      RectLabelDelete(0,obj_name[2]);

      RectLabelDelete(0,obj_name[3]);

      del(secret,-1);

     }

  }

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

//| Custom indicator iteration function                              |

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

int OnCalculate(const int rates_total,

                const int prev_calculated,

                const datetime &time[],

                const double &open[],

                const double &high[],

                const double &low[],

                const double &close[],

                const long &tick_volume[],

                const long &volume[],

                const int &spread[])

  {

//---



   CreatePanel();

   CreateRect();



   if(Alerts || Flash)

     {

      WaitCrossing();

     }

   RecolorThisLevel();



//--- return value of prev_calculated for next call

   return(rates_total);

  }

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

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

//| ChartEvent function                                              |

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

void OnChartEvent(const int id,

                  const long &lparam,

                  const double &dparam,

                  const string &sparam)

  {

   datetime dt_1     = 0;

   double   price_1  = 0;

   datetime dt_2     = 0;

   double   price_2  = 0;

   int      window   = 0;

   int      x        = 0;

   int      y        = 0;



// 060B85 =0 "# ?@O<>C3>;L=8:

   if(id==CHARTEVENT_OBJECT_CLICK)

     {

      string clickedChartObject=sparam;

      if(clickedChartObject==obj_name[1])

        {

         string name=secret+"name_TIU_"+IntegerToString(MathRand()+10000);



         y=y_coor+3*y_rect+4*x_step;

         ChartXYToTimePrice(0,x_coor+x_step,y,window,dt_1,price_1);



         y=y_coor+4*y_rect+5*x_step;

         ChartXYToTimePrice(0,x_coor+x_size,y,window,dt_2,price_2);



         RectangleCreate(0,name,0,dt_1,price_1,dt_2,price_2,clrTIU,STYLE_SOLID,0,true,false,true,InpHidden_OBJ,0,StringConcatenate(NameL1," ",ReturnTF(_Period)));

         if(LongTIU){ LongThisLevel("name_TIU_"); }

         RecolorThisLevel("name_TIU_");

        }

     }

// 060B85 =0  # ?@O<>C3>;L=8:

   if(id==CHARTEVENT_OBJECT_CLICK)

     {

      string clickedChartObject=sparam;

      if(clickedChartObject==obj_name[2])

        {

         string name=secret+"name_RUZ_"+IntegerToString(MathRand()+10000);



         y=y_coor+4*y_rect+5*x_step;

         ChartXYToTimePrice(0,x_coor+x_step,y,window,dt_1,price_1);



         y=y_coor+5*y_rect+6*x_step;

         ChartXYToTimePrice(0,x_coor+x_size,y,window,dt_2,price_2);



         RectangleCreate(0,name,0,dt_1,price_1,dt_2,price_2,clrRUZ,STYLE_SOLID,0,true,false,true,InpHidden_OBJ,0,StringConcatenate(NameL2," ",ReturnTF(_Period)));

        }

     }

// 060B85 =0 # !" ?@O<>C3>;L=8:

   if(id==CHARTEVENT_OBJECT_CLICK)

     {

      string clickedChartObject=sparam;

      if(clickedChartObject==obj_name[3])

        {

         string name=secret+"name_URST_"+IntegerToString(MathRand()+10000);



         y=y_coor+5*y_rect+6*x_step;

         ChartXYToTimePrice(0,x_coor+x_step,y,window,dt_1,price_1);



         y=y_coor+6*y_rect+7*x_step;

         ChartXYToTimePrice(0,x_coor+x_size,y,window,dt_2,price_2);



         RectangleCreate(0,name,0,dt_1,price_1,dt_2,price_2,clrURST,STYLE_SOLID,0,true,false,true,InpHidden_OBJ,0,StringConcatenate(NameL3," ",ReturnTF(_Period)));

        }

     }

// 5@542865=85 ?@O<>C3>;L=8:>2 8;8 :;8: ?> >:=C 3@0D8:0

   if(id==CHARTEVENT_MOUSE_MOVE && sparam=="1")

     {

      long lastBGcolor=ChartGetInteger(0,CHART_COLOR_BACKGROUND,0);

      if(lastBGcolor!=clrDefaultBG){ ChartSetInteger(0,CHART_COLOR_BACKGROUND,clrDefaultBG); }

      lastAlert=0;

      lastBid=Bid;

      RecolorThisLevel("name_TIU_");

     }

//@>25@:0 C40;5=8O >1J5:B>2

   if(id==CHARTEVENT_OBJECT_DELETE)

     {// ?@>25@8BL 8 C40;8BL ;8H=55

      CheckObjects();

     }

   if(Magnit){ Magnite("name_TIU_"); }

   if(LongTIU){ LongThisLevel("name_TIU_"); }



  }

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

void CreatePanel()

  {

// 0=5;L 8=AB@C<5=B>2



   if(panl_0_st)

     {



      int x_pn=x_coor,y_pn=y_coor;

      if(InpCorner == 1)  x_pn = x_coor + x_size + x_step;

      if(InpCorner == 2)  y_pn = y_coor + y_rect + x_step;

      if(InpCorner==3) {x_pn=x_coor+x_size+x_step; y_pn=y_coor+y_rect+x_step;}



      if(!RectLabelCreate(0,obj_name[0],0,x_pn,y_pn,x_size,y_size,panl_0_cl,BORDER_SUNKEN,InpCorner,

         clrBlack,STYLE_SOLID,2,true,InpSelection,true,0))

        {

         return;

        }

        } else {

      panl_0_cl=ChartBackColorGet(0);

     }

  }

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

void CreateRect()

  {

// "# ?@O<>C3>;L=8:

   int x_pn=x_coor+x_step,y_pn=y_coor+x_step;

   if(InpCorner == 1)  x_pn = x_coor + x_size - 2*x_step - 2*x_rect;

   if(InpCorner == 2)  y_pn = y_coor + y_rect;

   if(InpCorner==3) {x_pn=x_coor+x_size-2*x_step-2*x_rect; y_pn=y_coor+y_rect;}



   if(!RectLabelCreate(0,obj_name[1],0,x_pn,y_pn,x_rect,y_rect,clrTIU,BORDER_FLAT,InpCorner,

      clrTIU,STYLE_SOLID,0,InpBackRect,InpSelection,InpHidden,0))

     {

      return;

     }



//  # ?@O<>C3>;L=8:

   x_pn=x_coor+x_rect+2*x_step; y_pn=y_coor+x_step;

   if(InpCorner == 1)  x_pn = x_coor + x_size - 3*x_step - 3*x_rect;

   if(InpCorner == 2)  y_pn = y_coor + y_rect;

   if(InpCorner==3) {x_pn=x_coor+x_size-3*x_step-3*x_rect; y_pn=y_coor+y_rect;}



   if(!RectLabelCreate(0,obj_name[2],0,x_pn,y_pn,x_rect,y_rect,clrRUZ,BORDER_FLAT,InpCorner,

      clrRUZ,STYLE_SOLID,0,InpBackRect,InpSelection,InpHidden,0))

     {

      return;

     }



// # !" ?@O<>C3>;L=8:

   x_pn=x_coor+2*x_rect+3*x_step; y_pn=y_coor+x_step;

   if(InpCorner == 1)  x_pn = x_coor + x_size - 4*x_step - 4*x_rect;

   if(InpCorner == 2)  y_pn = y_coor + y_rect;

   if(InpCorner==3) {x_pn=x_coor+x_size-4*x_step-4*x_rect; y_pn=y_coor+y_rect;}



   if(!RectLabelCreate(0,obj_name[3],0,x_pn,y_pn,x_rect,y_rect,clrURST,BORDER_FLAT,InpCorner,

      clrURST,STYLE_SOLID,0,InpBackRect,InpSelection,InpHidden,0))

     {

      return;

     }



   x_pn=x_coor+x_step+(int)(MathCeil(x_rect/2)) -(StringLen(NameL1)*8/2); y_pn=y_coor+(int)(MathCeil(x_step/2))+y_panl;

   if(!TextLabelCreate(secret+"labelTIU",x_pn,y_pn,InpCorner,NameL1,10,clrBlack,InpBackRect,InpHidden,InpSelection))

     {

      return;//clrTIU

     }



   x_pn=x_coor+x_rect+2*x_step+(int)(MathCeil(x_rect/2)) -(StringLen(NameL2)*8/2); y_pn=y_coor+(int)(MathCeil(x_step/2))+y_panl;

   if(!TextLabelCreate(secret+"labelRUZ",x_pn,y_pn,InpCorner,NameL2,10,clrBlack,InpBackRect,InpHidden,InpSelection))

     {

      return;//clrRUZ

     }



   x_pn=x_coor+2*x_rect+3*x_step+(int)(MathCeil(x_rect/2)) -(StringLen(NameL3)*8/2); y_pn=y_coor+(int)(MathCeil(x_step/2))+y_panl;

   if(!TextLabelCreate(secret+"labelURST",x_pn,y_pn,InpCorner,NameL3,10,clrBlack,InpBackRect,InpHidden,InpSelection))

     {

      return;//clrURST

     }

//InpBackRect,InpHidden,InpSelection

  }

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

//| !>7405B ?@O<>C3>;L=CN <5B:C                                      |

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

bool RectLabelCreate(const long             chart_ID=0,               // ID 3@0D8:0

                     const string           name="RectLabel",         // 8<O <5B:8

                     const int              sub_window=0,             // =><5@ ?>4>:=0

                     const int              x=0,                      // :>>@48=0B0 ?> >A8 X

                     const int              y=0,                      // :>>@48=0B0 ?> >A8 Y

                     const int              width=50,                 // H8@8=0

                     const int              height=18,                // 2KA>B0

                     const color            back_clr=C'236,233,216',  // F25B D>=0

                     const ENUM_BORDER_TYPE border=BORDER_SUNKEN,     // B8? 3@0=8FK

                     const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // C3>; 3@0D8:0 4;O ?@82O7:8

                     const color            clr=clrRed,               // F25B ?;>A:>9 3@0=8FK (Flat)

                     const ENUM_LINE_STYLE  style=STYLE_SOLID,        // AB8;L ?;>A:>9 3@0=8FK

                     const int              line_width=1,             // B>;I8=0 ?;>A:>9 3@0=8FK

                     const bool             back=false,               // =0 704=5< ?;0=5

                     const bool             selection=false,          // 2K45;8BL 4;O ?5@5<5I5=89

                     const bool             hidden=true,              // A:@KB 2 A?8A:5 >1J5:B>2

                     const long             z_order=0)                // ?@8>@8B5B =0 =060B85 <KHLN

  {

//--- A1@>A8< 7=0G5=85 >H81:8

   ResetLastError();

//--- A>74048< ?@O<>C3>;L=CN <5B:C

   if(ObjectFind(name)==-1)

      ObjectCreate(chart_ID,name,OBJ_RECTANGLE_LABEL,sub_window,0,0);



   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);              // CAB0=>28< :>>@48=0BK <5B:8

   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);

   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);              // CAB0=>28< @07<5@K <5B:8

   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);

   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);         // CAB0=>28< F25B D>=0

   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,border);       // CAB0=>28< B8? 3@0=8FK

   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);            // CAB0=>28< C3>; 3@0D8:0, >B=>A8B5;L=> :>B>@>3> 1C4CB >?@545;OBLAO :>>@48=0BK B>G:8

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);                // CAB0=>28< F25B ?;>A:>9 @0<:8 (2 @568<5 Flat)

   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);              // CAB0=>28< AB8;L ;8=88 ?;>A:>9 @0<:8

   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,line_width);         // CAB0=>28< B>;I8=C ?;>A:>9 3@0=8FK

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);                // >B>1@078< =0 ?5@54=5< (false) 8;8 704=5< (true) ?;0=5

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);     // 2:;NG8< (true) 8;8 >B:;NG8< (false) @568< ?5@5<5I5=8O <5B:8 <KHLN

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);            // A:@>5< (true) 8;8 >B>1@078< (false) 8<O 3@0D8G5A:>3> >1J5:B0 2 A?8A:5 >1J5:B>2

   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);           // CAB0=>28< ?@8>@8B5B =0 ?>;CG5=85 A>1KB8O =060B8O <KH8 =0 3@0D8:5



   return(true);

  }

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

//| #40;O5B ?@O<>C3>;L=CN <5B:C                                      |

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

bool RectLabelDelete(const long   chart_ID=0,       // ID 3@0D8:0

                     const string name="RectLabel") // 8<O <5B:8

  {

//--- A1@>A8< 7=0G5=85 >H81:8

   ResetLastError();

//--- C40;8< <5B:C

   if(ObjectFind(chart_ID,name)>=0)

      ObjectDelete(chart_ID,name);

//--- CA?5H=>5 2K?>;=5=85

   return(true);

  }

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

//| $C=:F8O ?>;CG05B F25B D>=0 3@0D8:0.                              |

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

color ChartBackColorGet(const long chart_ID=0)

  {

//--- ?>43>B>28< ?5@5<5==CN 4;O ?>;CG5=8O F25B0

   long result=clrNONE;

//--- A1@>A8< 7=0G5=85 >H81:8

   ResetLastError();

//--- ?>;CG8< F25B D>=0 3@0D8:0

   if(!ChartGetInteger(chart_ID,CHART_COLOR_BACKGROUND,0,result))

     {

      //--- 2K2545< A>>1I5=85 >1 >H81:5 2 6C@=0; "-:A?5@BK"

      Print(__FUNCTION__+", Error Code = ",GetLastError());

     }

//--- 25@=5< 7=0G5=85 A2>9AB20 3@0D8:0

   return((color)result);

  }

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

//| C>7405B ?@O<>C3>;L=8: ?> 7040==K< :>>@48=0B0<                    |

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

bool RectangleCreate(const long            chart_ID=0,        // ID 3@0D8:0

                     const string          name="Rectangle",  // 8<O ?@O<>C3>;L=8:0

                     const int             sub_window=0,      // =><5@ ?>4>:=0 

                     datetime              time1=0,           // 2@5<O ?5@2>9 B>G:8

                     double                price1=0,          // F5=0 ?5@2>9 B>G:8

                     datetime              time2=0,           // 2@5<O 2B>@>9 B>G:8

                     double                price2=0,          // F5=0 2B>@>9 B>G:8

                     const color           clr=clrRed,        // F25B ?@O<>C3>;L=8:0

                     const ENUM_LINE_STYLE style=STYLE_SOLID, // AB8;L ;8=89 ?@O<>C3>;L=8:0

                     const int             width=1,           // B>;I8=0 ;8=89 ?@O<>C3>;L=8:0

                     const bool            fill=false,        // 70;82:0 ?@O<>C3>;L=8:0 F25B><

                     const bool            back=false,        // =0 704=5< ?;0=5

                     const bool            selection=true,    // 2K45;8BL 4;O ?5@5<5I5=89

                     const bool            hidden=true,       // A:@KB 2 A?8A:5 >1J5:B>2

                     const long            z_order=0,         // ?@8>@8B5B =0 =060B85 <KHLN

                     const string          tooltip="#@>25=L")

  {

//--- A1@>A8< 7=0G5=85 >H81:8

   ResetLastError();

//--- A>74048< ?@O<>C3>;L=8: ?> 7040==K< :>>@48=0B0<

   if(ObjectFind(name)==-1)

      ObjectCreate(chart_ID,name,OBJ_RECTANGLE,sub_window,time1,price1,time2,price2);



   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);             //--- CAB0=>28< F25B ?@O<>C3>;L=8:0

   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);           //--- CAB0=>28< AB8;L ;8=89 ?@O<>C3>;L=8:0

   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);           //--- CAB0=>28< B>;I8=C ;8=89 ?@O<>C3>;L=8:0

   ObjectSetInteger(chart_ID,name,OBJPROP_FILL,fill);             //--- 2:;NG8< (true) 8;8 >B:;NG8< (false) @568< 70;82:8 ?@O<>C3>;L=8:0

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);             //--- >B>1@078< =0 ?5@54=5< (false) 8;8 704=5< (true) ?;0=5 

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);  //--- 2:;NG8< (true) 8;8 >B:;NG8< (false) @568< 2K45;5=8O ?@O<>C3>;L=8:0 4;O ?5@5<5I5=89

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);    //--- ?@8 A>740=88 3@0D8G5A:>3> >1J5:B0 DC=:F859 ObjectCreate, ?> C<>;G0=8N >1J5:B

//--- =5;L7O 2K45;8BL 8 ?5@5<5I0BL. =CB@8 65 MB>3> <5B>40 ?0@0<5B@ selection

//--- ?> C<>;G0=8N @025= true, GB> ?>72>;O5B 2K45;OBL 8 ?5@5<5I0BL MB>B >1J5:B

   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);         //--- A:@>5< (true) 8;8 >B>1@078< (false) 8<O 3@0D8G5A:>3> >1J5:B0 2 A?8A:5 >1J5:B>2

   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);        //--- CAB0=>28< ?@8>@8B5B =0 ?>;CG5=85 A>1KB8O =060B8O <KH8 =0 3@0D8:5

   ObjectSetString(chart_ID,name,OBJPROP_TOOLTIP,tooltip);

   ObjectSetString(chart_ID,name,OBJPROP_LEVELTEXT,tooltip);

   ObjectSetString(chart_ID,name,OBJPROP_TEXT,tooltip);

   return(true);

  }

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

//| #40;O5B ?@O<>C3>;L=8:                                            |

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

bool RectangleDelete(const long   chart_ID=0,       // ID 3@0D8:0

                     const string name="Rectangle") // 8<O ?@O<>C3>;L=8:0

  {

//--- A1@>A8< 7=0G5=85 >H81:8

   ResetLastError();

//--- C40;8< ?@O<>C3>;L=8:

   if(ObjectFind(chart_ID,name)>=0)

      ObjectDelete(chart_ID,name);



   return(true);

  }

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

//|                                                                  |

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

bool TextLabelCreate(const string        name="Label",// 8<O <5B:8 

                     const int               x=0,                      // :>>@48=0B0 ?> >A8 X 

                     const int               y=0,                      // :>>@48=0B0 ?> >A8 Y 

                     const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER, // C3>; 3@0D8:0 4;O ?@82O7:8 

                     const string            text="Label",             // B5:AB 

                     const int               font_size=10,             // @07<5@ H@8DB0 

                     const color             clr=clrRed,               // F25B 

                     const bool              back=false,               // =0 704=5< ?;0=5 

                     const bool              hidden=true,              // A:@KB 2 A?8A:5 >1J5:B>2 

                     const bool              selection=false)          // 2K45;8BL 4;O ?5@5<5I5=89 

  {

   long              chart_ID=0;               // ID 3@0D8:0 

   int               sub_window=0;             // =><5@ ?>4>:=0 

   string            font="Arial";             // H@8DB 

   double            angle=0.0;                // =0:;>= B5:AB0 

   ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER; // A?>A>1 ?@82O7:8 

   long              z_order=0;                // ?@8>@8B5B =0 =060B85 <KHLN 

   ResetLastError();



   if(ObjectFind(name)==-1)

      ObjectCreate(chart_ID,name,OBJ_LABEL,sub_window,0,0);



   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); //--- CAB0=>28< :>>@48=0BK <5B:8 

   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);

   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); //--- CAB0=>28< C3>; 3@0D8:0, >B=>A8B5;L=> :>B>@>3> 1C4CB >?@545;OBLAO :>>@48=0BK B>G:8 

   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); //--- CAB0=>28< B5:AB 

   ObjectSetString(chart_ID,name,OBJPROP_FONT,font); //--- CAB0=>28< H@8DB B5:AB0 

   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size); //--- CAB0=>28< @07<5@ H@8DB0 

   ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle); //--- CAB0=>28< C3>; =0:;>=0 B5:AB0 

   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor); //--- CAB0=>28< A?>A>1 ?@82O7:8 

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); //--- CAB0=>28< F25B 

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); //--- >B>1@078< =0 ?5@54=5< (false) 8;8 704=5< (true) ?;0=5 

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); //--- 2:;NG8< (true) 8;8 >B:;NG8< (false) @568< ?5@5<5I5=8O <5B:8 <KHLN 

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden); //--- A:@>5< (true) 8;8 >B>1@078< (false) 8<O 3@0D8G5A:>3> >1J5:B0 2 A?8A:5 >1J5:B>2 

   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); //--- CAB0=>28< ?@8>@8B5B =0 ?>;CG5=85 A>1KB8O =060B8O <KH8 =0 3@0D8:5 

   return(true);

  }

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

//|                                                                  |

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

void LongThisLevel(string prefix="all")

  {

// ?@>4;5205< <K >48= @07 :>340 ?5@542830NB C@>2=8, 87<5=ONB 8E @07<5@

   for(int n=ObjectsTotal()-1; n>=0; n--)

     {

      string Obj_Name=ObjectName(n);

      if(ObjectGetInteger(0,Obj_Name,OBJPROP_TYPE)==OBJ_RECTANGLE && ((StringFind(Obj_Name,prefix,0)!=-1 && prefix!="all") || (prefix=="all" && StringFind(Obj_Name,"name_TIU_",0)!=-1)))

        { // =C6=K9 C@>25=L, ?>;CG05< 8 ?@>25@O5< A2>9AB20

         double price1 = ObjectGetDouble(0,Obj_Name,OBJPROP_PRICE1);

         double price2 = ObjectGetDouble(0,Obj_Name,OBJPROP_PRICE2);

         long dt1 = ObjectGetInteger(0,Obj_Name,OBJPROP_TIME1);

         long dt2 = ObjectGetInteger(0,Obj_Name,OBJPROP_TIME2);

         long clrRec3=ObjectGetInteger(0,Obj_Name,OBJPROP_COLOR);

         // >?@545;8BL 5ABL ;8 C =53> C65 ?@>4;5=85

         string ids[]; bool have=false;

         int k=StringSplit(Obj_Name,StringGetCharacter("_",0),ids);

         if(k>2)

           {

            if(StringLen(ids[2])==5)

              { // 8AE>4=K9 ?@O<>C3>;L=8:

               // C7=0BL 5ABL ;8 4;O =53> ?@>4;Q==K9

               long newclr=clrRec3;

               if(Bid<price2 && Bid<price1)

                 {

                  newclr=clrUpper;

                 }

               if(Bid>price2 && Bid>price1)

                 {

                  newclr=clrLower;

                 }

               for(int xx=ObjectsTotal()-1; xx>=0; xx--)

                 {

                  string where=ObjectName(xx);

                  if(StringLen(where)>StringLen(Obj_Name) && StringSubstr(where,0,StringLen(Obj_Name)+1)==(Obj_Name+"-"))

                    {// && where!=Obj_Name

                     //Print(StringSubstr(where,0,StringLen(Obj_Name)+1));

                     // 5ABL 4;O =53> C4;8==5=85, ?5@5B0A:8205< C4;8==5=85

                     have=true;

                     long dt4=ObjectGetInteger(0,where,OBJPROP_TIME2);

                     long clrRec2=ObjectGetInteger(0,where,OBJPROP_COLOR);

                     if(dt1<dt2)

                       {

                        ObjectMove(0,where,0,dt2,price1);

                          }else{

                        ObjectMove(0,where,0,dt1,price1);

                       }

                     ObjectMove(0,where,1,dt4,price2);

                     if(newclr!=clrRec2){ ObjectSetInteger(0,where,OBJPROP_COLOR,newclr); }

                     break;

                    }

                 }

               if(newclr!=clrRec3){ ObjectSetInteger(0,Obj_Name,OBJPROP_COLOR,newclr); }

               if(!have)

                 {

                  long dt3=dt1+60*60*10*24*365;

                  string Obj_Name2=Obj_Name+"-"+IntegerToString(MathRand()+10000);

                  RectangleCreate(0,Obj_Name2,0,dt2,price1,dt3,price2,clrTIU,STYLE_SOLID,0,true,false,false,InpHidden_OBJ,0,NameL1);

                 }

              }

           }

        }

     }

   return;

  }

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

//|                                                                  |

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

void RecolorThisLevel(string prefix="all")

  {

// ?5@5:@0H8205<

   for(int n=ObjectsTotal()-1; n>=0; n--)

     {

      string Obj_Name=ObjectName(n);

      if(ObjectGetInteger(0,Obj_Name,OBJPROP_TYPE)==OBJ_RECTANGLE && ((StringFind(Obj_Name,prefix,0)!=-1 && prefix!="all") || (prefix=="all" && StringFind(Obj_Name,"name_TIU_",0)!=-1)))

        { // =C6=K9 C@>25=L, ?>;CG05< 8 ?@>25@O5< A2>9AB20

         double price1 = ObjectGetDouble(0,Obj_Name,OBJPROP_PRICE1);

         double price2 = ObjectGetDouble(0,Obj_Name,OBJPROP_PRICE2);

         long dt1 = ObjectGetInteger(0,Obj_Name,OBJPROP_TIME1);

         long dt2 = ObjectGetInteger(0,Obj_Name,OBJPROP_TIME2);

         long clrRec = ObjectGetInteger(0,Obj_Name,OBJPROP_COLOR);

         long newclr = clrRec;

         if(Bid<price2 && Bid<price1)

           {

            newclr=clrUpper;

           }

         if(Bid>price2 && Bid>price1)

           {

            newclr=clrLower;

           }

         if(clrRec!=newclr){ ObjectSetInteger(0,Obj_Name,OBJPROP_COLOR,newclr); }

         if(StringFind(Obj_Name,"-",0)!=-1 && StringFind(Obj_Name,"_",0)!=-1)

           { // ?@>25@O5< ?@>4;5=85

            long dt3=dt1+60*60*10*24*365;

            if(dt2<(dt3-60*60*24*365))

              {

               ObjectSetInteger(0,Obj_Name,OBJPROP_TIME2,dt3);

              }

           }

         if(TextWrite)

           {

            // ?@>25@O5< ?>4?8AK20=85 C@>2=59

            if(StringFind(Obj_Name,"name_TIU_",0)!=-1 && StringFind(Obj_Name,"-",0)==-1)

              {// B>;L:> @>48B5;O

               string txtname=Obj_Name+"txt";

               double priceTxt=0; long dateTxt=0,dateTxt2=0; double pr1=0; int subw=0;

               int pixWidth=(int)NormalizeDouble((ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0))/2,0);



               if(ObjectFind(0,txtname)!=-1)

                 { // 5ABL, ?@>25@8BL A2>9AB20

                  priceTxt= ObjectGetDouble(0,txtname,OBJPROP_PRICE);

                  dateTxt = ObjectGetInteger(0,txtname,OBJPROP_TIME);

                  //Print("dateTxt="+dateTxt+"  priceTxt="+priceTxt);

                    }else{// =5BC >1J5:B0 A>74048<

                  string RecText=ObjectGetString(0,Obj_Name,OBJPROP_TEXT);

                  priceTxt=NormalizeDouble((price1+price2)/2,_Digits);



                  ChartXYToTimePrice(0,pixWidth,100,subw,dateTxt,pr1);

                  if(!TextCreate(txtname,dateTxt,priceTxt,RecText,(color)clrCandle))

                    {

                     return;

                    }

                 }

               // ?@54?>;>68B5;L=> 5ABL >1J5:B 8 B5:AB =04> ?>?@028BL 2KA>BC 8 H8@8=C//Print("dateTxt="+dateTxt+" dt1="+dt1+" dt2="+dt2);

               bool fix=false;

               // 42830BL 2 2848<CN G0ABL M:@0=0 ?> 40B5

               ChartXYToTimePrice(0,pixWidth,100,subw,dateTxt2,pr1);

               if(dateTxt!=dateTxt2)

                 {

                  fix=true;

                  dateTxt=dateTxt2;

                 }

               if(dt1<dt2 && dateTxt<dt1)

                 {

                  fix=true;

                  dateTxt=dt1+10*60*_Period;

                 }

               if(dt2<dt1 && dateTxt<dt2)

                 {

                  fix=true;

                  dateTxt=dt2+10*60*_Period;

                 }

               if(priceTxt!=(NormalizeDouble((price1+price2)/2,_Digits)))

                 {

                  fix=true;

                  priceTxt=NormalizeDouble((price1+price2)/2,_Digits);

                 }

               if(fix){ ObjectMove(0,txtname,0,dateTxt,priceTxt); }

              }



              }else{

            // C18@05< ?>4?8A8 5A;8 5ABL

            del(secret,OBJ_TEXT);

           }

        }

     }

   return;

  }

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

//|                                                                  |

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

void CheckObjects()

  {



   for(int n=ObjectsTotal()-1; n>=0; n--)

     {

      string ids[]; bool have=false;

      string Obj_Name=ObjectName(n);

      int k=StringSplit(Obj_Name,StringGetCharacter("_",0),ids);

      if(k>2)

        {

         if(ObjectGetInteger(0,Obj_Name,OBJPROP_TYPE)==OBJ_RECTANGLE && StringLen(ids[2])>5 && StringFind(ids[2],"-",0)>0)

           {

            if(LongTIU)

              {

               string subs[];

               int k2=StringSplit(ids[2],StringGetCharacter("-",0),subs);

               if(k2==2)

                 {

                  //8I5< @>48B5;O, 5A;8 =5B B> =04> C40;8BL ?@>4;5=85

                  if(ObjectFind(0,StringConcatenate(ids[0],"_",ids[1],"_",subs[0]))<0)

                    {

                     ObjectDelete(0,Obj_Name);

                     del(StringConcatenate(ids[0],"_",ids[1],"_",subs[0]),OBJ_TEXT);

                       }else{// 5ABL @>48B5;L



                    }

                 }

                 }else{

               // C1@0BL ?>4;5=8O

               ObjectDelete(0,Obj_Name);

              }

              }else{// @>48B5;8 

            if(LongTIU)

              {

               LongThisLevel();

              }

           }

        }

     }

   return;

  }

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

//|                                                                  |

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

void WaitCrossing()

  {



   if(lastAlert<soundMax && (Alerts || Flash))

     {

      long lastBGcolor=ChartGetInteger(0,CHART_COLOR_BACKGROUND,0);

      for(int n=ObjectsTotal()-1; n>=0; n--)

        {

         string Obj_Name=ObjectName(n);

         if(ObjectGetInteger(0,Obj_Name,OBJPROP_TYPE)==OBJ_RECTANGLE)

           { // =C6=K9 C@>25=L, ?>;CG05< 8 ?@>25@O5< A2>9AB20

            double price1 = ObjectGetDouble(0,Obj_Name,OBJPROP_PRICE1);

            double price2 = ObjectGetDouble(0,Obj_Name,OBJPROP_PRICE2);

            long dt1 = ObjectGetInteger(0,Obj_Name,OBJPROP_TIME1);

            long dt2 = ObjectGetInteger(0,Obj_Name,OBJPROP_TIME2);

            long clrRec = ObjectGetInteger(0,Obj_Name,OBJPROP_COLOR);

            long newclr = clrRec;



            if(price1>price2)

              {

               if((lastBid<price2 && Close[0]>price2) || (lastBid>price1 && Close[0]<price1))

                 {

                  if(Alerts){ PlaySound(soundFile); }

                  if(Flash && lastBGcolor!=clrAlertBG){ ChartSetInteger(0,CHART_COLOR_BACKGROUND,clrAlertBG); }

                  lastAlert++;

                 }

              }

            if(price1<price2)

              {

               if((lastBid<price1 && Close[0]>price1) || (lastBid>price2 && Close[0]<price2))

                 {

                  if(Alerts){ PlaySound(soundFile); }

                  if(Flash && lastBGcolor!=clrAlertBG){ ChartSetInteger(0,CHART_COLOR_BACKGROUND,clrAlertBG); }

                  lastAlert++;

                 }

              }

           }

        }

     }



   return;

  }

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

//|                                                                  |

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

void Magnite(string prefix="all")

  {

// ?>4BO38205< C@>2=8 : A25G0<

   for(int n=ObjectsTotal()-1; n>=0; n--)

     {

      string Obj_Name=ObjectName(n);

      if(ObjectGetInteger(0,Obj_Name,OBJPROP_TYPE)==OBJ_RECTANGLE && StringFind(Obj_Name,"-",0)==-1 && ((StringFind(Obj_Name,prefix,0)!=-1 && prefix!="all") || prefix=="all"))

        { // =C6=K9 C@>25=L, ?>;CG05< 8 ?@>25@O5< A2>9AB20

         double price1 = ObjectGetDouble(0,Obj_Name,OBJPROP_PRICE1);

         double price2 = ObjectGetDouble(0,Obj_Name,OBJPROP_PRICE2);

         double deltaPrice=MathAbs(price1-price2);

         //if(deltaPrice>100*_Point || deltaPrice<20*_Point){ deltaPrice = 100*_Point;  }

         long dt1 = ObjectGetInteger(0,Obj_Name,OBJPROP_TIME1);

         long dt2 = ObjectGetInteger(0,Obj_Name,OBJPROP_TIME2);

         long deltaDate=MathAbs(dt1-dt2);

         //if(deltaDate>100*60*_Period || deltaDate<30*60*_Period){ deltaDate = 60*60*_Period; }

         // <=5 =04> ?@>9B8 >B =0G0;0 C@>2=O 8 =09B8 1;8609H55 B5;> ?8:0

         long startTime=0; double maxBody=0; int kuda=0; int tochka=0; long dateTochka=0;

         if(dt1<dt2){ startTime=dt1; }else{ startTime=dt2; }

         int shiftStart=iBarShift(_Symbol,_Period,startTime);

         for(int b=shiftStart;b>0;b--)

           {

            if(b==shiftStart)

              {

               if(price2<price1 && price2<=Low[b])

                 {// ?>4BO=CBL 225@E price1

                  kuda=1;

                  if(Open[b]>Close[b])

                    {// 4> close

                     maxBody=Close[b]; tochka=0; dateTochka=dt1;

                       }else{// 4> open

                     maxBody=Open[b]; tochka=0;  dateTochka=dt1;

                    }

                 }

               if(price1<price2 && price1<=Low[b])

                 {// ?>4BO=CBL 225@E price2

                  kuda=1;

                  if(Open[b]>Close[b])

                    {// 4> close

                     maxBody=Close[b]; tochka=1; dateTochka=dt2;

                       }else{// 4> open

                     maxBody=Open[b]; tochka=1; dateTochka=dt2;

                    }

                 }

               if(price2<price1 && price1>=High[b])

                 {// ?>4BO=CBL 2=87 price2

                  kuda=-1;

                  if(Open[b]>Close[b])

                    {// 4> open

                     maxBody=Open[b]; tochka=1; dateTochka=dt2;

                       }else{// 4> open

                     maxBody=Close[b]; tochka=1;  dateTochka=dt2;

                    }

                 }

               if(price1<price2 && price2>=High[b])

                 {// ?>4BO=CBL 225@E price1

                  kuda=-1;

                  if(Open[b]>Close[b])

                    {// 4> close

                     maxBody=Open[b]; tochka=0; dateTochka=dt1;

                       }else{// 4> open

                     maxBody=Close[b]; tochka=0; dateTochka=dt1;

                    }

                 }



                 }else{

               if(kuda==1)

                 {

                  if(Open[b]>Close[b])

                    {// 4> close

                     if(maxBody<Close[b])

                       {// MaxBody <5=LH5

                        if(price2<price1)

                          {

                           ObjectMove(0,Obj_Name,0,dt1,maxBody);

                           ObjectMove(0,Obj_Name,1,dt2,maxBody-deltaPrice);

                             }else{

                           ObjectMove(0,Obj_Name,0,dt1,maxBody-deltaPrice);

                           ObjectMove(0,Obj_Name,1,dt2,maxBody);

                          }

                        break;

                          }else{

                        maxBody=Close[b];

                       }

                       }else{// 4> open 

                     if(maxBody<Open[b])

                       {// MaxBody <5=LH5

                        if(price2<price1)

                          {

                           ObjectMove(0,Obj_Name,0,dt1,maxBody);

                           ObjectMove(0,Obj_Name,1,dt2,maxBody-deltaPrice);

                             }else{

                           ObjectMove(0,Obj_Name,0,dt1,maxBody-deltaPrice);

                           ObjectMove(0,Obj_Name,1,dt2,maxBody);

                          }

                        break;

                          }else{

                        maxBody=Open[b];

                       }

                    }

                 }

               if(kuda==-1)

                 {// 2=87 

                  if(Open[b]>Close[b])

                    {// 4> open

                     if(maxBody>Open[b])

                       {// MaxBody <5=LH5

                        if(price2<price1)

                          {

                           ObjectMove(0,Obj_Name,0,dt1,maxBody+deltaPrice);

                           ObjectMove(0,Obj_Name,1,dt2,maxBody);

                             }else{

                           ObjectMove(0,Obj_Name,0,dt1,maxBody);

                           ObjectMove(0,Obj_Name,1,dt2,maxBody+deltaPrice);

                          }

                        break;

                          }else{

                        maxBody=Open[b];

                       }

                       }else{// 4> close 

                     if(maxBody>Close[b])

                       {// MaxBody <5=LH5

                        if(price2<price1)

                          {

                           ObjectMove(0,Obj_Name,0,dt1,maxBody+deltaPrice);

                           ObjectMove(0,Obj_Name,1,dt2,maxBody);

                             }else{

                           ObjectMove(0,Obj_Name,0,dt1,maxBody);

                           ObjectMove(0,Obj_Name,1,dt2,maxBody+deltaPrice);

                          }

                        break;

                          }else{

                        maxBody=Close[b];

                       }

                    }

                 }

              }

           }

        }

     }



   return;

  }

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

//|                                                                  |

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

string ReturnTF(int tfw=0)

  {

   switch(tfw)

     {

      case 1:

         return "M1";

         break;

      case 5:

         return "M5";

         break;

      case 15:

         return "M15";

         break;

      case 30:

         return "M30";

         break;

      case 60:

         return "H1";

         break;

      case 240:

         return "H4";

         break;

      case 1440:

         return "D1";

         break;

      case 10080:

         return "W1";

         break;

      case 43200:

         return "MN";

         break;

     }

   return "";

  }

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

bool TextCreate(const string            name="Text",              // 8<O >1J5:B0 

                datetime                time=0,                   // 2@5<O B>G:8 ?@82O7:8 

                double                  price=0,                  // F5=0 B>G:8 ?@82O7:8 

                const string            text="Text",              // A0< B5:AB 

                const color             clr=clrRed)               // F25B 

  {

   long              chart_ID=0;               // ID 3@0D8:0

   int               sub_window=0;             // =><5@ ?>4>:=0 

   string            font="Arial";             // H@8DB 

   int               font_size=10;             // @07<5@ H@8DB0 

   double            angle=0.0;                // =0:;>= B5:AB0 

   ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT; // A?>A>1 ?@82O7:8 

   bool              back=false;               // =0 704=5< ?;0=5 

   bool              selection=false;          // 2K45;8BL 4;O ?5@5<5I5=89 

   bool              hidden=false;              // A:@KB 2 A?8A:5 >1J5:B>2 

   long              z_order=0;                // ?@8>@8B5B =0 =060B85 <KHLN 



   ResetLastError();

   if(ObjectFind(name)==-1)

      ObjectCreate(chart_ID,name,OBJ_TEXT,sub_window,time,price);

   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);

   ObjectSetString(chart_ID,name,OBJPROP_FONT,font);

   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);

   ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle);

   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);

   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);

   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);

   ObjectSetString(chart_ID,name,OBJPROP_TOOLTIP,text);

   return(true);

  }

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

//|                                                                  |

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

int del(string name="all",ENUM_OBJECT type=-1)

  {

//Print("del  name="+name+"  type="+type);

   for(int n=ObjectsTotal()-1; n>=0; n--)

     {

      string Obj_Name=ObjectName(n);

      if((type==-1 && name!="all" && StringFind(Obj_Name,name,0)!=-1) || 

         (type>-1 && ObjectGetInteger(0,Obj_Name,OBJPROP_TYPE)==type && name!="all" && StringFind(Obj_Name,name,0)!=-1) ||

         (type>-1 && ObjectGetInteger(0,Obj_Name,OBJPROP_TYPE)==type && name=="all"))

        {

         ObjectDelete(Obj_Name);

        }

     }

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