Orders Execution
Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
Aver12345
//+------------------------------------------------------------------+
//| Aver12345.mq4 |
//| Copyright © 2011, rockyhoangdn |
//| rockyhoangdn@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, rockyhoangdn"
#property link "rockyhoangdn@gmail.com"
//+------------------------------------------------------------------+
//| Vars |
//+------------------------------------------------------------------+
double iStouchvalue1 = 0;
double iStouchvalue2 = 0;
double iStouchvalue3 = 0;
double iStouchvalue4 = 0;
double iStouchvalue = 0;
double iWprvalue1 = 0;
double iWprvalue2 = 0;
double iWprvalue3 = 0;
double iWprvalue4 = 0;
double iWprvalue = 0;
double Postzigzagvalue1=0;
double Postzigzagvalue2=0;
double Buyvalue = 0, Sellvalue = 0;
double Signalbuyvalue = 0, Signalsellvalue = 0;
int Buyposition = 0, Sellposition =0;
int MagicNumber = 162429;
int Slippage = 3;
double StopLoss = 0;//inpip
double TakeProfit = 0;//in pip
double Maximum.Ft.Profit = 0;
double Minimum.Ft.Profit = 0;
int Buycount=0,Sellcount=0;
double B1=0,B2=0,B3=0,B4=0,B5=0,S1=9999,S2=9999,S3=9999,S4=9999,S5=9999;
//---- input parameters
extern string LotsOptimized = "====== LotsOptimized ======";
extern bool MoneyManagement = true;
extern bool UseMinilot=true;
extern double Lots=0.1;
extern double MaximumRisk=0.1;//10%
extern double MinLot=0.1;
extern string Stoploss_Takeprofit = "====== Setup Stoploss/Takeprofit ======";
extern double MyStopLoss = 800;
extern double MyTakeProfit = 0;
extern double Stopoutlevel=50;
extern string Nextopenposition_in_point = "====== Nextopenposition in point ======";
extern int Nextopenposition =150;
extern string Delay_open_in_point = "====== Delay open in point ======";
extern double Delay = 0;//delay inpoint when signal appearent
extern int Maxiposition=5;//Maximum=5
extern string Close_Optimized = "====== Close_Optimized ======";
extern bool Closebyprofit = false;
extern double Needprofit =1000;//Maximum Profit per Order
extern double Losscan = 500; //Maximum Loss per Order
extern string TimeFrame = "====== TimeFrame ======";
extern bool TimeFrameM1=false;
extern bool TimeFrameM5=true;//Best timeframe to trade
extern bool TimeFrameM15=true;
extern bool TimeFrameM30=false;
extern bool TimeFrameM60=false;
extern bool TimeFrameM240=false;
extern string IndicatorsPeriod = "====== Indicators Period ======";
extern int iStochPeriod = 26;
extern int iWPRPeriod = 26;
extern int PostzigzagPeirod = 14;
string comments="";
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//+------------------------------------------------------------------+
//| Select Next open position in point |
//+------------------------------------------------------------------+
if (Symbol() == "USDJYP") Nextopenposition=150;
if (Symbol() == "EURUSD") Nextopenposition=450;
if (Symbol() == "EURJYP") Nextopenposition=300;
//+------------------------------------------------------------------+
//| indicator |
//+------------------------------------------------------------------+
iStouchvalue1= iStochastic(NULL,0,iStochPeriod,3,3,MODE_SMMA,1,MODE_MAIN,1);
iStouchvalue2= iStochastic(NULL,0,iStochPeriod*3,3,3,MODE_SMMA,1,MODE_MAIN,1);
iStouchvalue3= iStochastic(NULL,0,iStochPeriod*6,3,3,MODE_SMMA,1,MODE_MAIN,1);
iStouchvalue4= iStochastic(NULL,0,iStochPeriod*12,3,3,MODE_SMMA,1,MODE_MAIN,1);
iStouchvalue= (iStouchvalue1+iStouchvalue2+iStouchvalue3+iStouchvalue4)/4;
iWprvalue1= iWPR(NULL,0,iWPRPeriod,1);
iWprvalue2= iWPR(NULL,0,iWPRPeriod*3,1);
iWprvalue3= iWPR(NULL,0,iWPRPeriod*6,1);
iWprvalue4= iWPR(NULL,0,iWPRPeriod*12,1);
iWprvalue= (iWprvalue1+iWprvalue2+iWprvalue3+iWprvalue4)/4;
Postzigzagvalue1=iCustom(NULL, 0, "Post-zigzag",PostzigzagPeirod,1,1);
Postzigzagvalue2=iCustom(NULL, 0, "Post-zigzag",PostzigzagPeirod,2,1);
if (iStouchvalue < 0.1 && iWprvalue <- 90 )
{
Buyvalue=1;
Signalbuyvalue=Ask;
Signalsellvalue=9999;
Sellvalue=0;
ObjectCreate("Trendup", OBJ_LABEL, 0, 0, 0);
ObjectSetText("Trendup","UP",25, "Verdana", Lime);
ObjectSet("Trendup", OBJPROP_CORNER, 0);
ObjectSet("Trendup", OBJPROP_XDISTANCE, 39);
ObjectSet("Trendup", OBJPROP_YDISTANCE, 46);
ObjectDelete("Trend");
}
if (iStouchvalue > 99.9 && iWprvalue >-5)
{
Sellvalue=1;
Signalsellvalue=Bid;
Signalbuyvalue=0;
Buyvalue=0;
ObjectCreate("Trend", OBJ_LABEL, 0, 0, 0);
ObjectSetText("Trend","DOWN",25, "Verdana", Red);
ObjectSet("Trend", OBJPROP_CORNER, 0);
ObjectSet("Trend", OBJPROP_XDISTANCE, 9);
ObjectSet("Trend", OBJPROP_YDISTANCE, 46);
ObjectDelete("Trendup");
}
if(Buyvalue==1)
{
if(((Ask - Signalbuyvalue) < -Delay*Point) && Postzigzagvalue2!=0)
{
Buyvalue=2;
Alert("Signal Buy at " + Symbol());
}
}
if(Sellvalue==1)
{
if(((Bid - Signalsellvalue) > Delay*Point) && Postzigzagvalue1 !=0)
{
Sellvalue=2;
Alert("Signal Sell at "+Symbol());
}
}
//----Exit indicator
//+------------------------------------------------------------------+
//| Print last trade info |
//+------------------------------------------------------------------+
ObjectCreate("BUY POSITION", OBJ_LABEL, 0, 0, 0);
ObjectSetText("BUY POSITION","++ BUY ++",11, "Verdana", Lime);
ObjectSet("BUY POSITION", OBJPROP_CORNER, 1);
ObjectSet("BUY POSITION", OBJPROP_XDISTANCE, 10);
ObjectSet("BUY POSITION", OBJPROP_YDISTANCE, 10);
ObjectCreate("B1", OBJ_LABEL, 0, 0, 0);
ObjectSetText("B1",DoubleToStr(B1,5),10, "Verdana", Lime);
ObjectSet("B1", OBJPROP_CORNER, 1);
ObjectSet("B1", OBJPROP_XDISTANCE, 10);
ObjectSet("B1", OBJPROP_YDISTANCE, 30);
ObjectCreate("B2", OBJ_LABEL, 0, 0, 0);
ObjectSetText("B2",DoubleToStr(B2,5),10, "Verdana", Lime);
ObjectSet("B2", OBJPROP_CORNER, 1);
ObjectSet("B2", OBJPROP_XDISTANCE, 10);
ObjectSet("B2", OBJPROP_YDISTANCE, 50);
ObjectCreate("B3", OBJ_LABEL, 0, 0, 0);
ObjectSetText("B3",DoubleToStr(B3,5),10, "Verdana", Lime);
ObjectSet("B3", OBJPROP_CORNER, 1);
ObjectSet("B3", OBJPROP_XDISTANCE, 10);
ObjectSet("B3", OBJPROP_YDISTANCE, 70);
ObjectCreate("B4", OBJ_LABEL, 0, 0, 0);
ObjectSetText("B4",DoubleToStr(B4,5),10, "Verdana", Lime);
ObjectSet("B4", OBJPROP_CORNER, 1);
ObjectSet("B4", OBJPROP_XDISTANCE, 10);
ObjectSet("B4", OBJPROP_YDISTANCE, 90);
ObjectCreate("B5", OBJ_LABEL, 0, 0, 0);
ObjectSetText("B5",DoubleToStr(B5,5),10, "Verdana", Lime);
ObjectSet("B5", OBJPROP_CORNER, 1);
ObjectSet("B5", OBJPROP_XDISTANCE, 10);
ObjectSet("B5", OBJPROP_YDISTANCE, 110);
ObjectCreate("SELL POSITION", OBJ_LABEL, 0, 0, 0);
ObjectSetText("SELL POSITION","++ SELL ++",11, "Verdana", Red);
ObjectSet("SELL POSITION", OBJPROP_CORNER, 1);
ObjectSet("SELL POSITION", OBJPROP_XDISTANCE, 10);
ObjectSet("SELL POSITION", OBJPROP_YDISTANCE, 130);
ObjectCreate("S1", OBJ_LABEL, 0, 0, 0);
ObjectSetText("S1",DoubleToStr(S1,5),10, "Verdana", Red);
ObjectSet("S1", OBJPROP_CORNER, 1);
ObjectSet("S1", OBJPROP_XDISTANCE, 10);
ObjectSet("S1", OBJPROP_YDISTANCE, 150);
ObjectCreate("S2", OBJ_LABEL, 0, 0, 0);
ObjectSetText("S2",DoubleToStr(S2,5),10, "Verdana", Red);
ObjectSet("S2", OBJPROP_CORNER, 1);
ObjectSet("S2", OBJPROP_XDISTANCE, 10);
ObjectSet("S2", OBJPROP_YDISTANCE, 170);
ObjectCreate("S3", OBJ_LABEL, 0, 0, 0);
ObjectSetText("S3",DoubleToStr(S3,5),10, "Verdana", Red);
ObjectSet("S3", OBJPROP_CORNER, 1);
ObjectSet("S3", OBJPROP_XDISTANCE, 10);
ObjectSet("S3", OBJPROP_YDISTANCE, 190);
ObjectCreate("S4", OBJ_LABEL, 0, 0, 0);
ObjectSetText("S4",DoubleToStr(S4,5),10, "Verdana", Red);
ObjectSet("S4", OBJPROP_CORNER, 1);
ObjectSet("S4", OBJPROP_XDISTANCE, 10);
ObjectSet("S4", OBJPROP_YDISTANCE, 210);
ObjectCreate("S5", OBJ_LABEL, 0, 0, 0);
ObjectSetText("S5",DoubleToStr(S5,5),10, "Verdana", Red);
ObjectSet("S5", OBJPROP_CORNER, 1);
ObjectSet("S5", OBJPROP_XDISTANCE, 10);
ObjectSet("S5", OBJPROP_YDISTANCE, 230);
if(OrdersTotal()==0||B1==0) ObjectSetText("B1","0.00000",10, "Verdana", Yellow);
if(OrdersTotal()==0||B2==0) ObjectSetText("B2","0.00000",10, "Verdana", Yellow);
if(OrdersTotal()==0||B3==0) ObjectSetText("B3","0.00000",10, "Verdana", Yellow);
if(OrdersTotal()==0||B4==0) ObjectSetText("B4","0.00000",10, "Verdana", Yellow);
if(OrdersTotal()==0||B5==0) ObjectSetText("B5","0.00000",10, "Verdana", Yellow);
if(OrdersTotal()==0||S1==9999) ObjectSetText("S1","0.00000",10, "Verdana", Yellow);
if(OrdersTotal()==0||S2==9999) ObjectSetText("S2","0.00000",10, "Verdana", Yellow);
if(OrdersTotal()==0||S3==9999) ObjectSetText("S3","0.00000",10, "Verdana", Yellow);
if(OrdersTotal()==0||S4==9999) ObjectSetText("S4","0.00000",10, "Verdana", Yellow);
if(OrdersTotal()==0||S5==9999) ObjectSetText("S5","0.00000",10, "Verdana", Yellow);
//+------------------------------------------------------------------+
//| Check for last trade |
//+------------------------------------------------------------------+
LastTrade();
//+------------------------------------------------------------------+
//| Open position |
//+------------------------------------------------------------------+
if((TimeFrameM1==true && Period()==1) || (TimeFrameM5==true && Period()==5) || (TimeFrameM15==true && Period()==15) || (TimeFrameM30==true && Period()==30) || (TimeFrameM60==true && Period()==60) || (TimeFrameM240==true && Period()==240) )
{
if (OrdersTotal() < 1)
{
if (Buyvalue ==2)
{
Openbuy();
Buyposition = 1;
}
if (Sellvalue ==2)
{
Opensell();
Sellposition = 1;
}
}
if (OrdersTotal() == 1 && Maxiposition > 1)
{
if((Ask - B1) < -Nextopenposition*Point && Buyposition == 1)
{
Openbuy();
Buyposition = 2;
}
if((Bid - S1) > Nextopenposition*Point && Sellposition == 1)
{
Opensell();
Sellposition = 2;
}
}
if (OrdersTotal() == 2 && Maxiposition > 2)
{
if((Ask - B2) < -Nextopenposition*1.5*Point && Buyposition == 2)
{
Openbuy();
Buyposition = 3;
}
if((Bid - S2) > Nextopenposition*1.5*Point && Sellposition == 2)
{
Opensell();
Sellposition = 3;
}
}
if (OrdersTotal() == 3 && Maxiposition > 3 && (AccountEquity()*100/(AccountMargin()+0.00000000000001)) >500)
{
if((Ask - B3) < -Nextopenposition*2*Point && Buyposition == 3)
{
Openbuy();
Buyposition = 4;
}
if((Bid - S3) > Nextopenposition*2*Point && Sellposition == 3)
{
Opensell();
Sellposition = 4;
}
}
if (OrdersTotal() == 4 && Maxiposition > 4 && (AccountEquity()*100/(AccountMargin()+0.00000000000001)) >400 )
{
if((Ask - B4) < -Nextopenposition*3*Point && Buyposition == 4)
{
Openbuy();
Buyposition = 5;
}
if((Bid - S4) > Nextopenposition*3*Point && Sellposition == 4)
{
Opensell();
Sellposition = 5;
}
}
//Exit lock position
}
//+--Exit open position----------------------------------------------+
//+------------------------------------------------------------------+
//| Print detail |
//+------------------------------------------------------------------+
Printdetail();
//+------------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Close position by indicator |
//+------------------------------------------------------------------+
if((TimeFrameM1==true && Period()==1) || (TimeFrameM5==true && Period()==5) || (TimeFrameM15==true && Period()==15) || (TimeFrameM30==true && Period()==30) || (TimeFrameM60==true && Period()==60) || (TimeFrameM240==true && Period()==240) )
{
if (Buyvalue == 2)
{
Closesell();
}
if (Sellvalue == 2)
{
Closebuy();
}
}
//+------------------------------------------------------------------+
//| Close by profit optimized |
//+------------------------------------------------------------------+
if(AccountMargin()>0)
{
if((AccountEquity()*100/(AccountMargin()+0.00000000000001))<Stopoutlevel )
{
CloseAll();
}
}
if (Closebyprofit == true)
{
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==Symbol())
{
if((OrderType()==OP_BUY && OrderProfit()>Needprofit)||(OrderType()==OP_BUY && OrderProfit()<-Losscan))
{
Closebuy();
}
if((OrderType()==OP_SELL && OrderProfit()>Needprofit)||(OrderType()==OP_SELL && OrderProfit()<-Losscan))
{
Closesell();
}
}
}
if (AccountProfit() > Needprofit+1 || AccountProfit() < -Losscan-1)
{
CloseAll();
}
}
//+--Exit close position --------------------------------------------------+
return(0);
}
//+--Exit start------------------------------------------------------------+
//+--Start Function Define-------------------------------------------------+
//+------------------------------------------------------------------+
//| Close Open Position function |
//+------------------------------------------------------------------+
int Closebuy()
{
for(int i=0; i<OrdersTotal(); i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderType()==OP_BUY && OrderSymbol()==Symbol())
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Yellow);
Sellvalue=0;
B1 = 0;
B2 = 0;
B2 = 0;
B4 = 0;
B5 = 0;
Buyposition = 0;
}
}
}
int Closesell()
{
for(int i=0; i<OrdersTotal(); i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderType()==OP_SELL && OrderSymbol()==Symbol())
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Yellow);
Buyvalue =0;
S1=9999;
S2=9999;
S3=9999;
S4=9999;
S5=9999;
Sellposition = 0;
}
}
}
int CloseAll()
{
while(OrdersTotal()>0)
{
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
switch(OrderType())
{
case OP_BUY :OrderClose(OrderTicket(),OrderLots(),Bid,NULL,Red); break;
case OP_SELL :OrderClose(OrderTicket(),OrderLots(),Ask,NULL,Red); break;
case OP_BUYLIMIT :OrderDelete(OrderTicket()); break;
case OP_SELLLIMIT :OrderDelete(OrderTicket()); break;
case OP_BUYSTOP :OrderDelete(OrderTicket()); break;
case OP_SELLSTOP :OrderDelete(OrderTicket()); break;
default :break;
}
Buyvalue =0;
S1=9999;
S2=9999;
S3=9999;
S4=9999;
S5=9999;
Sellposition = 0;
Sellvalue=0;
B1 = 0;
B1 = 0;
B3 = 0;
B4 = 0;
B5 = 0;
Buyposition = 0;
}
}
}
//+----------------------End Close Open Position---------------------+
//+------------------------------------------------------------------+
//| Calculate optimal lot size function |
//+------------------------------------------------------------------+
double LotsOptimized()
{
double lot=Lots;
if (!MoneyManagement)return (Lots);
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);
if(lot<MinLot || UseMinilot==true) lot=MinLot;
if(OrdersTotal()<1)
{
lot=lot;
}
if(OrdersTotal()==1)
{
lot=2*lot;
}
if(OrdersTotal()==2)
{
lot=3*lot;
}
if(OrdersTotal()==3 )
{
lot=4*lot;
}
if(OrdersTotal()==4)
{
lot=5*lot;
}
return(lot);
}
//+-------------------End Calculate optimal lot size-----------------+
//+------------------------------------------------------------------+
//| Open Position function |
//+------------------------------------------------------------------+
int Openbuy()
{
if ( MyStopLoss == 0) StopLoss = 0;
if ( MyTakeProfit == 0) TakeProfit = 0;
if ( MyStopLoss >0) StopLoss = Ask - MyStopLoss * Point;
if ( MyTakeProfit >0)
{
if(OrdersTotal()<1) TakeProfit = Ask + MyTakeProfit * Point;
if(OrdersTotal()==1) TakeProfit = Ask + MyTakeProfit * Point + Nextopenposition * Point;
if(OrdersTotal()==2) TakeProfit = Ask + MyTakeProfit * Point + Nextopenposition * 1.5 * Point;
if(OrdersTotal()==3) TakeProfit = Ask + MyTakeProfit * Point + Nextopenposition * 2 * Point;
if(OrdersTotal()==4) TakeProfit = Ask + MyTakeProfit * Point + Nextopenposition * 3 * Point;
}
OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,Slippage,StopLoss,TakeProfit,NULL,MagicNumber,0,Green);
Buyvalue=0;
Signalbuyvalue=0;
}
int Opensell()
{
if ( MyStopLoss == 0) StopLoss = 0;
if ( MyStopLoss >0) StopLoss = Bid + MyStopLoss * Point;
if ( MyTakeProfit == 0) TakeProfit = 0;
if ( MyTakeProfit >0)
{
if(OrdersTotal()<1) TakeProfit = Bid - MyTakeProfit * Point;
if(OrdersTotal()==1) TakeProfit = Bid - MyTakeProfit * Point - Nextopenposition * Point;
if(OrdersTotal()==2) TakeProfit = Bid - MyTakeProfit * Point - Nextopenposition * 1.5 * Point;
if(OrdersTotal()==3) TakeProfit = Bid - MyTakeProfit * Point - Nextopenposition * 2 * Point;
if(OrdersTotal()==4) TakeProfit = Bid - MyTakeProfit * Point - Nextopenposition * 3* Point;
}
OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,Slippage,StopLoss,TakeProfit,NULL,MagicNumber,0,Red);
Sellvalue=0;
Signalsellvalue=9999;
}
//+------------------------------------------------------------------+
//| Print Trade Detail function |
//+------------------------------------------------------------------+
void Printdetail()
{
comments =
"Account Balance:-->" + DoubleToStr(AccountBalance(),1)+
" |Account Equity:-->" + DoubleToStr(AccountEquity(),1) +
" |Account Margin:-->" + DoubleToStr(AccountMargin(),1) +
" |Account Level:-->" + DoubleToStr(AccountEquity()*100/(AccountMargin()+0.00000000000001),1) +
" |Free Margin:-->" + DoubleToStr(AccountFreeMargin(),1) +
" |Floating Profit:-->" + DoubleToStr(AccountProfit(),1) +"\n"+
"Spread:-->" + DoubleToStr((Ask-Bid)/Point,0) + " Point"+
" |Total Order:-->" + DoubleToStr(OrdersTotal(),0) +
" |Period is "+ Period() +
" |Bas in chart: " + DoubleToStr(Bars,0)
;
Comment(comments);
}
//+------------------------------------------------------------------+
//| Trading history function |
//+------------------------------------------------------------------+
double LastTrade()
{
for(int j=0;j<OrdersTotal()+1;j++)
{
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==false)
{
B1=0;
S1=9999;
}
if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES)==true)
{
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY)
{
Sellcount=0;
Buycount=OrdersTotal();
S1=9999;
S2=9999;
S3=9999;
S4=9999;
S5=9999;
if ( OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==true) B1=OrderOpenPrice(); else B1=0;
if ( OrderSelect(1,SELECT_BY_POS,MODE_TRADES)==true) B2=OrderOpenPrice(); else B2=0;
if ( OrderSelect(2,SELECT_BY_POS,MODE_TRADES)==true) B3=OrderOpenPrice(); else B3=0;
if ( OrderSelect(3,SELECT_BY_POS,MODE_TRADES)==true) B4=OrderOpenPrice(); else B4=0;
if ( OrderSelect(4,SELECT_BY_POS,MODE_TRADES)==true) B5=OrderOpenPrice(); else B5=0;
}
if(OrderType()==OP_SELL)
{
Buycount=0;
Sellcount=OrdersTotal();
B1=0;
B2=0;
B3=0;
B4=0;
B5=0;
if ( OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==true) S1=OrderOpenPrice(); else S1=9999;
if ( OrderSelect(1,SELECT_BY_POS,MODE_TRADES)==true) S2=OrderOpenPrice(); else S2=9999;
if ( OrderSelect(2,SELECT_BY_POS,MODE_TRADES)==true) S3=OrderOpenPrice(); else S3=9999;
if ( OrderSelect(3,SELECT_BY_POS,MODE_TRADES)==true) S4=OrderOpenPrice(); else S4=9999;
if ( OrderSelect(4,SELECT_BY_POS,MODE_TRADES)==true) S5=OrderOpenPrice(); else S5=9999;
}
}
}
}
}
//+-------------------------Exit trading history----------------------------------+
//+--------------------------------Exit Function----------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---