Author: Sergey
Price Data Components
Miscellaneous
It issuies visual alerts to the screen
2 Views
0 Downloads
0 Favorites
Helpersent
ÿþ//+------------------------------------------------------------------+

//|                                          eaOandaDealsHandler.mq4 |

//|                                                           Sergey |

//|                                         http://vk.com/id29520847 |

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

//| !>25B=8: 2KAB02;O5B A45;:C =060B88 =0 :=>?:C TR (trade)                         |

//| CB>?;>A 4>;65= 1KBL 7040=K >1O70B5;L=>                                          |

//| 0?@02;5=85 A45;:8 >?@545;O5BAO @0A?>;>65=85< AB>?;>A0                          |

//|  8A: @0AAG8BK205BAO >B A2>1>4=>9 <0@68                                          |

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

#property copyright "Sergey"

#property link      "http://vk.com/id29520847"

#property version   "1.00"

#property strict



#include <Trade.mqh>



CTrade trade;

input int magic = 111087;  //magic

input string comment = "";

input int fnt = 10;



string pref = "Handler";

int mtp = 1;



int OnInit(){

//---

   trade.SetExpertMagic(magic);

   trade.SetExpertComment(comment);

   

   if(Digits() == 5 || Digits() == 3)mtp = 10;

   Comment("");

   ObjectsDelete();

   RectLabelCreate(  ChartID(), pref+"_RectLabel", 0, 124, 63, 122, 61);

   LabelCreate(      ChartID(), pref+"_LabelTP",   0, 94, 44, 3,      "TP");

   LabelCreate(      ChartID(), pref+"_LabelSL",   0, 94, 24, 3,      "SL");

   LabelCreate(      ChartID(), pref+"_LabelRisk", 0, 94, 4,  3,      "Risk");

   EditCreate(       ChartID(), pref+"_EditTP",    0, 92, 62, 58, 18, "0.00000");

   EditCreate(       ChartID(), pref+"_EditSL",    0, 92, 42, 58, 18, "0.00000");

   EditCreate(       ChartID(), pref+"_EditRisk",  0, 92, 22, 58, 18, "%");

   ButtonCreate(     ChartID(), pref+"_TR",        0, 32, 62, 28, 28, 3, "TR", "Arial", fnt, clrBlack, C'33,218,51');

   ButtonCreate(     ChartID(), pref+"_CLS",       0, 32, 32, 28, 28, 3, "CLS", "Arial", fnt, clrBlack, clrRed);

//---

   return(INIT_SUCCEEDED);

}



void OnDeinit(const int reason){

//---

   ObjectsDelete();

}



void OnTick(){

//---

   if(ObjectGetInteger(ChartID(), pref+"_TR", OBJPROP_STATE)){

      Trade();

      ObjectSetInteger(ChartID(), pref+"_TR", OBJPROP_STATE, false);

   }

   if(ObjectGetInteger(ChartID(), pref+"_CLS", OBJPROP_STATE)){

      trade.CloseTrades();

      ObjectSetInteger(ChartID(), pref+"_CLS", OBJPROP_STATE, false);

   }

}

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



  

//#40;O5B 2A5 >1J5:BK, 8A?>;L7C5<K5 MB8< A>25B=8:><

// ot = >1I55 :>;8G5AB2> 2A5E >1J5:B>2

// on = 8<O >1J5:B0

void ObjectsDelete(){

   int ot = ObjectsTotal();

   string on = "";

   if(ot > 0){

      for(int i = ot-1; i>=0; i--){

         on = ObjectName(ChartID(), i);

         if(StringFind(on, pref)!= -1) ObjectDelete(ChartID(), on);

      }

   }

}



void Trade(){

   string st = ObjectGetString(ChartID(), pref+"_EditTP",   OBJPROP_TEXT);

   string ss = ObjectGetString(ChartID(), pref+"_EditSL",   OBJPROP_TEXT);

   string sr = ObjectGetString(ChartID(), pref+"_EditRisk", OBJPROP_TEXT);

   StringReplace(st, ",", ".");

   StringReplace(ss, ",", ".");

   StringReplace(sr, ",", ".");

  

   double tp   = NormalizeDouble(StringToDouble(st), Digits());

   double sl   = NormalizeDouble(StringToDouble(ss), Digits());

   double risk = NormalizeDouble(StringToDouble(sr), 1);

   int    pts;

   //double ll;

   

   if(sl == 0.0){

      Alert("#:068B5 AB>?;>AA. -B> >1O70B5;L=K9 ?0@0<5B@. ");

      return;

   }

   if(tp == sl){

      Alert(""59:?@>D8B =5 <>65B 1KBL @025= AB>?;>AAC. ");

      return;

   }

  

   if(Bid > sl){

      //ll = NormalizeDouble((tp - sl)/100*25+sl, Digits());

      pts = (int)((MarketInfo(Symbol(), MODE_ASK)-sl)/Point());

      trade.Buy(Symbol(), AutoLot(risk, pts), sl, tp);

      

   }

   else{

      //ll = NormalizeDouble(sl-(sl - tp)/100*25, Digits());

      pts = (int)((sl-MarketInfo(Symbol(), MODE_BID))/Point());

      trade.Sell(Symbol(), AutoLot(risk, pts), sl, tp);

      

   }   

}



//r - @8A: %, p - ?C=:BK 4> AB>?;>AA0

double AutoLot(double r, int p){

   double l = MarketInfo(Symbol(), MODE_MINLOT);

   

   l = NormalizeDouble((AccountFreeMargin()/100*r/(p*MarketInfo(Symbol(), MODE_TICKVALUE))), 2);

   

   if(l > MarketInfo(Symbol(), MODE_MAXLOT))l = MarketInfo(Symbol(), MODE_MAXLOT);

   if(l < MarketInfo(Symbol(), MODE_MINLOT))l = MarketInfo(Symbol(), MODE_MINLOT);

   return l;

}



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'87,173,202',   // F25B D>=0 

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

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

                     const color            clr=clrGray,              // 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(!ObjectCreate(chart_ID,name,OBJ_RECTANGLE_LABEL,sub_window,0,0)) 

     { 

      Print(__FUNCTION__, 

            ": =5 C40;>AL A>740BL ?@O<>C3>;L=CN <5B:C! >4 >H81:8 = ",GetLastError()); 

      return(false); 

     } 

//--- CAB0=>28< :>>@48=0BK <5B:8 

   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); 

   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); 

//--- CAB0=>28< @07<5@K <5B:8 

   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width); 

   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height); 

//--- CAB0=>28< F25B D>=0 

   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); 

//--- CAB0=>28< B8? 3@0=8FK 

   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,border); 

//--- CAB0=>28< C3>; 3@0D8:0, >B=>A8B5;L=> :>B>@>3> 1C4CB >?@545;OBLAO :>>@48=0BK B>G:8 

   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); 

//--- CAB0=>28< F25B ?;>A:>9 @0<:8 (2 @568<5 Flat) 

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); 

//--- CAB0=>28< AB8;L ;8=88 ?;>A:>9 @0<:8 

   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style); 

//--- CAB0=>28< B>;I8=C ?;>A:>9 3@0=8FK 

   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,line_width); 

//--- >B>1@078< =0 ?5@54=5< (false) 8;8 704=5< (true) ?;0=5 

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); 

//--- 2:;NG8< (true) 8;8 >B:;NG8< (false) @568< ?5@5<5I5=8O <5B:8 <KHLN 

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); 

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); 

//--- 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_HIDDEN,hidden); 

//--- CAB0=>28< ?@8>@8B5B =0 ?>;CG5=85 A>1KB8O =060B8O <KH8 =0 3@0D8:5 

   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); 

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

   return(true); 

} 



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

                 const string            name="Label",             // 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 ENUM_BASE_CORNER  corner=CORNER_RIGHT_LOWER,// C3>; 3@0D8:0 4;O ?@82O7:8 

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

                 const string            font="Arial",             // H@8DB 

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

                 const color             clr=clrBlack,               // F25B 

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

                 const ENUM_ANCHOR_POINT anchor=ANCHOR_RIGHT_LOWER,// A?>A>1 ?@82O7:8 

                 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< B5:AB>2CN <5B:C 

   if(!ObjectCreate(chart_ID,name,OBJ_LABEL,sub_window,0,0)) 

     { 

      Print(__FUNCTION__, 

            ": =5 C40;>AL A>740BL B5:AB>2CN <5B:C! >4 >H81:8 = ",GetLastError()); 

      return(false); 

     } 

//--- CAB0=>28< :>>@48=0BK <5B:8 

   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); 

   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); 

//--- CAB0=>28< C3>; 3@0D8:0, >B=>A8B5;L=> :>B>@>3> 1C4CB >?@545;OBLAO :>>@48=0BK B>G:8 

   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); 

//--- CAB0=>28< B5:AB 

   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); 

//--- CAB0=>28< H@8DB B5:AB0 

   ObjectSetString(chart_ID,name,OBJPROP_FONT,font); 

//--- CAB0=>28< @07<5@ H@8DB0 

   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size); 

//--- CAB0=>28< C3>; =0:;>=0 B5:AB0 

   ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle); 

//--- CAB0=>28< A?>A>1 ?@82O7:8 

   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor); 

//--- CAB0=>28< F25B 

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); 

//--- >B>1@078< =0 ?5@54=5< (false) 8;8 704=5< (true) ?;0=5 

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); 

//--- 2:;NG8< (true) 8;8 >B:;NG8< (false) @568< ?5@5<5I5=8O <5B:8 <KHLN 

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); 

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); 

//--- 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_HIDDEN,hidden); 

//--- CAB0=>28< ?@8>@8B5B =0 ?>;CG5=85 A>1KB8O =060B8O <KH8 =0 3@0D8:5 

   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); 

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

   return(true); 

}



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

                const string           name="Edit",              // 8<O >1J5:B0 

                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 string           text="Text",              // B5:AB 

                const string           font="Arial",             // H@8DB 

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

                const ENUM_ALIGN_MODE  align=ALIGN_RIGHT,        // A?>A>1 2K@02=820=8O 

                const bool             read_only=false,          // 2>7<>6=>ABL @540:B8@>20BL 

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

                const color            clr=clrBlack,             // F25B B5:AB0 

                const color            back_clr=clrWhite,        // F25B D>=0 

                const color            border_clr=clrNONE,       // F25B 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< ?>;5 22>40 

   if(!ObjectCreate(chart_ID,name,OBJ_EDIT,sub_window,0,0)) 

     { 

      Print(__FUNCTION__, 

            ": =5 C40;>AL A>740BL >1J5:B \">;5 22>40\"! >4 >H81:8 = ",GetLastError()); 

      return(false); 

     } 

//--- CAB0=>28< :>>@48=0BK >1J5:B0 

   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); 

   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); 

//--- CAB0=>28< @07<5@K >1J5:B0 

   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width); 

   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height); 

//--- CAB0=>28< B5:AB 

   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); 

//--- CAB0=>28< H@8DB B5:AB0 

   ObjectSetString(chart_ID,name,OBJPROP_FONT,font); 

//--- CAB0=>28< @07<5@ H@8DB0 

   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size); 

//--- CAB0=>28< A?>A>1 2K@02=820=8O B5:AB0 2 >1J5:B5 

   ObjectSetInteger(chart_ID,name,OBJPROP_ALIGN,align); 

//--- CAB0=>28< (true) 8;8 >B<5=8< (false) @568< B>;L:> 4;O GB5=8O 

   ObjectSetInteger(chart_ID,name,OBJPROP_READONLY,read_only); 

//--- CAB0=>28< C3>; 3@0D8:0, >B=>A8B5;L=> :>B>@>3> 1C4CB >?@545;OBLAO :>>@48=0BK >1J5:B0 

   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); 

//--- CAB0=>28< F25B B5:AB0 

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); 

//--- CAB0=>28< F25B D>=0 

   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); 

//--- CAB0=>28< F25B 3@0=8FK 

   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr); 

//--- >B>1@078< =0 ?5@54=5< (false) 8;8 704=5< (true) ?;0=5 

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); 

//--- 2:;NG8< (true) 8;8 >B:;NG8< (false) @568< ?5@5<5I5=8O <5B:8 <KHLN 

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); 

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); 

//--- 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_HIDDEN,hidden); 

//--- CAB0=>28< ?@8>@8B5B =0 ?>;CG5=85 A>1KB8O =060B8O <KH8 =0 3@0D8:5 

   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); 

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

   return(true); 

  }

  

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

                  const string            name="Button",            // 8<O :=>?: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 :=>?:8 

                  const int               height=18,                // 2KA>B0 :=>?:8 

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

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

                  const string            font="Arial",             // H@8DB 

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

                  const color             clr=clrBlack,             // F25B B5:AB0 

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

                  const color             border_clr=clrNONE,       // F25B 3@0=8FK 

                  const bool              state=false,              // =060B0/>B60B0 

                  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< :=>?:C 

   if(!ObjectCreate(chart_ID,name,OBJ_BUTTON,sub_window,0,0)) 

     { 

      Print(__FUNCTION__, 

            ": =5 C40;>AL A>740BL :=>?:C! >4 >H81:8 = ",GetLastError()); 

      return(false); 

     } 

//--- CAB0=>28< :>>@48=0BK :=>?:8 

   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x); 

   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y); 

//--- CAB0=>28< @07<5@ :=>?:8 

   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width); 

   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height); 

//--- CAB0=>28< C3>; 3@0D8:0, >B=>A8B5;L=> :>B>@>3> 1C4CB >?@545;OBLAO :>>@48=0BK B>G:8 

   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner); 

//--- CAB0=>28< B5:AB 

   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text); 

//--- CAB0=>28< H@8DB B5:AB0 

   ObjectSetString(chart_ID,name,OBJPROP_FONT,font); 

//--- CAB0=>28< @07<5@ H@8DB0 

   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size); 

//--- CAB0=>28< F25B B5:AB0 

   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr); 

//--- CAB0=>28< F25B D>=0 

   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr); 

//--- CAB0=>28< F25B 3@0=8FK 

   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_COLOR,border_clr); 

//--- >B>1@078< =0 ?5@54=5< (false) 8;8 704=5< (true) ?;0=5 

   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back); 

//--- ?5@52545< :=>?:C 2 7040==>5 A>AB>O=85 

   ObjectSetInteger(chart_ID,name,OBJPROP_STATE,state); 

//--- 2:;NG8< (true) 8;8 >B:;NG8< (false) @568< ?5@5<5I5=8O :=>?:8 <KHLN 

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection); 

   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection); 

//--- 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_HIDDEN,hidden); 

//--- CAB0=>28< ?@8>@8B5B =0 ?>;CG5=85 A>1KB8O =060B8O <KH8 =0 3@0D8:5 

   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order); 

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

   return(true); 

  }

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