Price Data Components
Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
four_screens
//+------------------------------------------------------------------+
//| JobJobos.mq4 |
//| Ugar |
//| Ugar68@bk.ru |
//+------------------------------------------------------------------+
#property copyright "Ugar"
#property link "Ugar68@bk.ru"
#property strict
#property version "1.00"
//--- input parameters
extern int SL=20;
extern int TP=20;
extern int Trailing=10;
extern bool NowBarAfterProfit=true;
extern double Lot=0.1;
extern int Slippage=3;
extern int Magic=120428;
//+------------------------------------------------------------------+
//Ïåðåìåííûå íà ãëîáàëüíîì óðîâíå
string _name;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
_name=WindowExpertName();//Èìÿ ñîâåòíèêà
NowBar(0,true);//èíèöèàëèçàöèÿ ôóíêöèè íîâîãî áàðà
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//+------------------------------------------------------------------+
//Ïåðåìåííûå
static double Heiken51,Heiken52;
double Heiken151,Heiken152,Heiken301,Heiken302,Heiken601,Heiken602;
double lot,sl=0,tp=0,op=0,oop,osl;
int Signal=0,Spread,StopLevel,total,i,ticket,orders=0,LastHistOrder,cmd=0;
static int Signal_;
string SignalStr="íåò",SignalStr5,SignalStr15,SignalStr30,SignalStr60,alerts;
bool OrderSendRun=false,nowbar;
color arrow=Blue;
//+------------------------------------------------------------------+
//Ñïðåä, ìèíèìàëüíûé ñòîï è ïðîâåðêà êîððåêòíîñòè ñòîïîâ
//Ñïðåä
Spread=(int)MarketInfo(Symbol(),MODE_SPREAD);
//Stoplevel
StopLevel=(int)MathMax(Spread,MarketInfo(Symbol(),MODE_STOPLEVEL))+Spread+1;
//Ïðîâåðêà íà êîððåêòíîñòü SL
if(SL<=StopLevel)
{
alerts=StringConcatenate("SL äîæåí áûòü áîëüøå StopLevel ",StopLevel);
Alert(alerts);
}
//Ïðîâåðêà íà êîððåêòíîñòü TP
if(TP<=StopLevel)
{
alerts=StringConcatenate("TP äîæåí áûòü áîëüøå StopLevel ",StopLevel);
Alert(alerts);
}
//+------------------------------------------------------------------+
//Íîâûé áàð íà Ì5
nowbar=NowBar(5,false);
//+------------------------------------------------------------------+
//Èíäèêàòîðû
//Íà M5 èíäèêàòîð âûçûâàåòñÿ îäèí ðàç çà áàð
if(nowbar)
{
Heiken51=iCustom(NULL,5,"Heiken Ashi",2,1);
Heiken52=iCustom(NULL,5,"Heiken Ashi",3,1);
}
//èíäèêàòîð íà M15
Heiken151=iCustom(NULL,15,"Heiken Ashi",2,0);
Heiken152=iCustom(NULL,15,"Heiken Ashi",3,0);
//èíäèêàòîð íà M30
Heiken301=iCustom(NULL,30,"Heiken Ashi",2,0);
Heiken302=iCustom(NULL,30,"Heiken Ashi",3,0);
//èíäèêàòîð íà M60
Heiken601=iCustom(NULL,60,"Heiken Ashi",2,0);
Heiken602=iCustom(NULL,60,"Heiken Ashi",3,0);
//+------------------------------------------------------------------+
//Ñèãíàëû
SignalStr5=signal(Heiken52,Heiken51);
SignalStr15=signal(Heiken152,Heiken151);
SignalStr30=signal(Heiken302,Heiken301);
SignalStr60=signal(Heiken602,Heiken601);
//Îáùèé ñèãíàë
if(Heiken51<Heiken52 && Heiken151<Heiken152 && Heiken301<Heiken302 && Heiken601<Heiken602)
{
Signal=1;
SignalStr="Buy";
}
//Îáùèé ñèãíàë
if(Heiken51>Heiken52 && Heiken151>Heiken152 && Heiken301>Heiken302 && Heiken601>Heiken602)
{
Signal=-1;
SignalStr="Sell";
}
//Îòîáðàæåíèå ïîêàçàíèé èíäèêàòîðîâ è ñèãíàëîâ
alerts=StringConcatenate("Heiken Ashi íà",
"\n","M5 "+SignalStr5,
"\n","M15 ",SignalStr15,
"\n","M30 ",SignalStr30,
"\n","M60 ",SignalStr60,
"\n","Îáùèé ñèãíàë ",SignalStr);
Comment(alerts);
//+------------------------------------------------------------------+
//ïðîâåðêà ñâÿçè
if(!DCOk(30))return(0);
//+------------------------------------------------------------------+
//Ïðîâåðêà íàëè÷èÿ îòêðûòûõ îðäåðîâ è óïðàâëåíèå èìè
//ïîñëåäíèé íîìåð îðäåðà
total=OrdersTotal()-1;
//öèêë ïåðåáîðà îðäåðîâ
for(i=total; i>=0; i--)
{
//Âûáîð îðäåðà
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
Print("Îðäåð íå âûáðàí, îøèáêà = ",GetLastError());
return(0);
}
//Åñëè îðäåð ÷óæîãî ìàäæèêà èëè ñèìâîëà, ïðîïóñòèòü.
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic)continue;
//Öåíà îòêðûòèÿ îðäåðà
oop=OrderOpenPrice();
//Ñòîï îðäåðà
osl=OrderStopLoss();
//Óïðàâëåíèå Buy îðäåðàìè
if(OrderType()==OP_BUY)
{
//Åñòü îðäåð
orders++;
//Åñëè òðåéëèíã ðàçðåøîí
if(Trailing>0)
{
//ñòîï äëÿ òðåéëèíãà
sl=sltp(Trailing,Bid,-1);
//Óñëîâèå äëÿ òðåéëèíãà
if(sl>oop+0.5*Point && sl>osl+0.5*Point)
{
//Ìîäèôèêàöèÿ îðäåðà äëÿ òðåéëèíãà
if(!OrderModify(OrderTicket(),NormalizeDouble(oop,Digits),
NormalizeDouble(sl,Digits),OrderTakeProfit(),0,Blue))
{
//Åñëè îðäåð íå ìîäèôèöèðîâàëñÿ, ïå÷àòü îøèáêè è âûõîä ïîñëå ïàóçû
Sleep(ErrorTime());
}
}
}
}
//Óïðàâëåíèå Sell îðäåðàìè
if(OrderType()==OP_SELL)
{
//Åñòü îðäåð
orders++;
//Åñëè òðåéëèíã ðàçðåøîí
if(Trailing>0)
{
//ñòîï äëÿ òðåéëèíãà
sl=sltp(Trailing,Ask,1);
//Óñëîâèå äëÿ òðåéëèíãà
if(sl<oop-0.5*Point && sl<osl-0.5*Point)
{
//Ìîäèôèêàöèÿ îðäåðà äëÿ òðåéëèíãà
if(!OrderModify(OrderTicket(),NormalizeDouble(oop,Digits),
NormalizeDouble(sl,Digits),OrderTakeProfit(),0,Red))
{
//Åñëè îðäåð íå ìîäèôèöèðîâàëñÿ, ïå÷àòü îøèáêè è âûõîä ïîñëå ïàóçû
Sleep(ErrorTime());
}
}
}
}
}
//+------------------------------------------------------------------+
//Åñëè åñòü îòêðûòûå îðäåðà èëè íåò ñèãíàëà, âûõîä
//Åñëè åñòü îòêðûòûå îðäåðà
if(orders>0)
{
//Ñáðîñ ñèãíàëà îòêðûòèÿ
Signal_=0;
return(0);
}
//Åñëè íåò ñèãíàëà, âûõîä
if(Signal==0)return(0);
//+------------------------------------------------------------------+
//Ïîèñê ïîñëåäíåãî èñòîðè÷åñêîãî îðäåðà è ïðîâåðêà åãî ïðîôèòà
//Ëîò ïî óìîë÷àíèþ
lot=Lot;
//Ïîèñê ïîñëåäíåãî èñòîðè÷åñêîãî îðäåðà
LastHistOrder=LastHistotyOrder(Symbol(),Magic);
//åñëè îðäåð íàéäåí
if(LastHistOrder>=0)
{
//Âûáîð îðäåðà
int res=OrderSelect(LastHistOrder,SELECT_BY_TICKET);
//Åñëè ïðèáûëü îðäåðà îòðèöàòåëüíàÿ òî ëîò ïî ìàðòèíãåéëó
if(OrderProfit()<0)lot=OrderLots()*2;
//Åñëè ïðèáûëü >0, åñòü ñèãíàë, åñòü íîâûé áàð, íåò ñèãíàëà îòêðûòèÿ
//è ðåæèì NowBarAfterProfit ïðèñâîèòü ñèãíàëó îòêðûòèÿ ñèãíàë èíäèêàòîðà
if(OrderProfit()>0 && Signal!=0 && nowbar && Signal_==0 && NowBarAfterProfit)
{
Signal_=Signal;
}
if(OrderProfit()<0)Signal_=Signal;
}
//Åñëè èñòîðè÷åñêèé îðäåð íå íàéäåí èëè NowBarAfterProfit=false, èëè ïðîôèò <0
//ïðèñâîèòü ñèãíàëó îòêðûòèÿ ñèãíàë èíäèêàòîðà
if(LastHistOrder<0 || !NowBarAfterProfit)Signal_=Signal;
//+------------------------------------------------------------------+
//ïðîâåðêà ñâÿçè
if(!DCOk(30))return(0);
//+------------------------------------------------------------------+
//Îòêðûòèå îðäåðîâ
//Ïàðàìåòðû äëÿ Buy îðäåðîâ
if(Signal_>0)
{
op=Ask;
sl=sltp(SL,op,-1);
tp=sltp(TP,op,1);
cmd=OP_BUY;
arrow=Blue;
OrderSendRun=true;
}
//Ïàðàìåòðû äëÿ Sell îðäåðîâ
if(Signal_<0)
{
op=Bid;
sl=sltp(SL,op,1);
tp=sltp(TP,op,-1);
cmd=OP_SELL;
arrow=Red;
OrderSendRun=true;
}
//Îòêðûòèå îðäåðà
if(OrderSendRun)
{
ticket=OrderSend(Symbol(),cmd,lot,NormalizeDouble(op,Digits),Slippage,
NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),_name,Magic,0,arrow);
//Åñëè îðäåð íå îòêðûëñÿ, ïå÷àòü îøèáêè è âûõîä ïîñëå ïàóçû
if(ticket<0)Sleep(ErrorTime());
}
//----
return(0);
}
//+------------------------------------------------------------------+
//Ôóíêöèÿ ñðàâíåíèÿ çíà÷åíèé èíäèêàòîðà. Âîçâðàùàåò "áåëûé" åñëè äëÿ Buy íàïðàâëåíèÿ
//"êðàñíûé" äëÿ Sell íàïðàâëåíèÿ
string signal(double fast,double slow)
{
string ret="íåò";
if(fast>slow)ret="áåëûé";
if(fast<slow)ret="êðàñíûé";
return(ret);
}
//+------------------------------------------------------------------+
//| Ôóíêöèÿ îò Ugar eMail:ugar68@bk.ru |
/*+------------------------------------------------------------------+
Ôóíêöèÿ íîâîãî áàðà.
Âîçâðàùàåò true ïðè ïåðâîì âûçîâå ôóíêöèè ïîñëå ïîÿâëåíèÿ íîâîãî áàðà çàäàííîãî òàéì ôðåéìà,
èíà÷å false.
timeframe - òàéìôðåéì
initialization true ñáðîñ ñòàòè÷åñêîé ïåðåìåííîé âðåìåíè, false ðàáîòà*/
bool NowBar(int timeframe,bool initialization)
{
bool ret=false;
static datetime LastTime;
datetime TimeOpenBar;
if(initialization)LastTime=0;
else
{
TimeOpenBar=iTime(NULL,timeframe,0);
if(LastTime!=TimeOpenBar)ret=true;
LastTime=TimeOpenBar;
}
return(ret);
}
//+------------------------------------------------------------------+
//|Ôóíêöèÿ îò Ugar eMail:ugar68@bk.ru |
//+------------------------------------------------------------------+
//Ôóíêöèÿ ïå÷àòàåò îøèáêó èñïîëíåíèÿ ïðèêàçà è âîçâðàùàåò âðåìÿ çàäåðæêè íà ïîâòîíîå èñïîëíåíèå
// ñëó÷àå áåñïîëåçíîãî ïîâòîðà ïîïûòîê âîçâðàùàåò 60000.
int ErrorTime()
{
int err=GetLastError();
int sec= 0,s,c;
switch(err)
{
case 0: sec=0;
break;
case 1:
{
Print("Îøèáêà: 1 - ïîïûòêà èçìåíèòü óæå óñòàíîâëåííûå çíà÷åíèÿ òàêèìè æå çíà÷åíèÿìè");
sec=0;
break;
}
case 2:
{
Print("Îøèáêà: 2 - Îáùàÿ îøèáêà. Ïðåêðàòèòü âñå ïîïûòêè òîðãîâûõ îïåðàöèé äî âûÿñíåíèÿ îáñòîÿòåëüñòâ.");
sec=60000;
break;
}
case 3:
{
Print("Îøèáêà: 3 - Â òîðãîâóþ ôóíêöèþ ïåðåäàíû íåïðàâèëüíûå ïàðàìåòðû. Íåîáõîäèìî èçìåíèòü ëîãèêó ïðîãðàììû.");
sec=60000;
break;
}
case 4:
{
Print("Îøèáêà: 4 - Òîðãîâûé ñåðâåð çàíÿò. Ìîæíî ïîâòîðèòü ïîïûòêó ÷åðåç äîñòàòî÷íî áîëüøîé ïðîìåæóòîê âðåìåíè");
sec=60000;
break;
}
case 5:
{
Print("Îøèáêà: 5 - Ñòàðàÿ âåðñèÿ êëèåíòñêîãî òåðìèíàëà.");
sec=60000;
break;
}
case 6:
{
Print("Îøèáêà: 6 - Íåò ñâÿçè ñ òîðãîâûì ñåðâåðîì.");
for(c=0;c<36000;c++)
{
if(IsConnected())
{
sec=0;
break;
}
Sleep(100);
}
if(c==36000)
{
sec=5000;
}
break;
}
case 8:
{
Print("Îøèáêà: 8 - Ñëèøêîì ÷àñòûå çàïðîñû. ");
sec=60000;
break;
}
case 64:
{
Print("Îøèáêà: 64 - Ñ÷åò çàáëîêèðîâàí.");
sec=60000;
break;
}
case 65:
{
Print("Îøèáêà: 65 - Íåïðàâèëüíûé íîìåð ñ÷åòà. ");
sec=60000;
break;
}
case 128:
{
Print("Îøèáêà: 128 - Èñòåê ñðîê îæèäàíèÿ ñîâåðøåíèÿ ñäåëêè.");
sec=60000;
break;
}
case 129:
{
Print("Îøèáêà: 129 - Íåïðàâèëüíàÿ öåíà bid èëè ask, âîçìîæíî, íåíîðìàëèçîâàííàÿ öåíà.");
sec=5000;
break;
}
case 130:
{
Print("Îøèáêà: 130 - Ñëèøêîì áëèçêèå ñòîïû èëè íåïðàâèëüíî ðàññ÷èòàííûå èëè íåíîðìàëèçîâàííûå öåíû â ñòîïàõ ");
sec=5000;
break;
}
case 131:
{
Print("Îøèáêà: 131 - Íåïðàâèëüíûé îáúåì, îøèáêà â ãðàíóëÿöèè îáúåìà.");
sec=60000;
break;
}
case 132:
{
Print("Îøèáêà: 132 - Ðûíîê çàêðûò.");
sec=60000;
break;
}
case 133:
{
Print("Îøèáêà: 133 - Òîðãîâëÿ çàïðåùåíà. ");
sec=60000;
break;
}
case 134:
{
Print("Îøèáêà: 134 - Íåäîñòàòî÷íî äåíåã äëÿ ñîâåðøåíèÿ îïåðàöèè.");
sec=60000;
break;
}
case 135:
{
Print("Îøèáêà: 135 - Öåíà èçìåíèëàñü.");
sec=0;
break;
}
case 136:
{
Print("Îøèáêà: 136 - Íåò öåí. Áðîêåð ïî êàêîé-òî ïðè÷èíå (íàïðèìåð, â íà÷àëå ñåññèè öåí íåò, íåïîäòâåðæäåííûå öåíû, áûñòðûé ðûíîê) íå äàë öåí èëè îòêàçàë.");
sec=5000;
break;
}
case 138:
{
Print("Îøèáêà: 138 - Çàïðîøåííàÿ öåíà óñòàðåëà, ëèáî ïåðåïóòàíû bid è ask.");
sec=0;
break;
}
case 139:
{
Print("Îøèáêà: 139 - Îðäåð çàáëîêèðîâàí è óæå îáðàáàòûâàåòñÿ.");
sec=0;
break;
}
case 140:
{
Print("Îøèáêà: 140 - Ðàçðåøåíà òîëüêî ïîêóïêà.");
sec=0;
break;
}
case 141:
{
Print("Îøèáêà: 141 - Ñëèøêîì ìíîãî çàïðîñîâ.");
sec=3000;
break;
}
case 142:
{
Print("Îøèáêà: 142 - Îðäåð ïîñòàâëåí â î÷åðåäü. Ýòî íå îøèáêà, à îäèí èç êîäîâ âçàèìîäåéñòâèÿ ìåæäó êëèåíòñêèì òåðìèíàëîì è òîðãîâûì ñåðâåðîì. ");
sec=0;
break;
}
case 143:
{
Print("Îøèáêà: 143 - Îðäåð ïðèíÿò äèëåðîì ê èñïîëíåíèþ. Îäèí èç êîäîâ âçàèìîäåéñòâèÿ ìåæäó êëèåíòñêèì òåðìèíàëîì è òîðãîâûì ñåðâåðîì.");
sec=0;
break;
}
case 144:
{
Print("Îøèáêà: 144 - Îðäåð àííóëèðîâàí ñàìèì êëèåíòîì ïðè ðó÷íîì ïîäòâåðæäåíèè ñäåëêè. ");
sec=30000;
break;
}
case 145:
{
Print("Îøèáêà: 145 - Ìîäèôèêàöèÿ çàïðåùåíà, òàê êàê îðäåð ñëèøêîì áëèçîê ê ðûíêó è çàáëîêèðîâàí èç-çà âîçìîæíîãî ñêîðîãî èñïîëíåíèÿ.");
sec=15000;
break;
}
case 146:
{
Print("Îøèáêà: 146 - Ïîäñèñòåìà òîðãîâëè çàíÿòà.");
for(s=0;s<36000;s++)
{
if(!IsTradeContextBusy())
{
sec=0;
break;
}
Sleep(100);
}
if(s==36000)
{
sec=60000;
}
break;
}
case 147:
{
Print("Îøèáêà: 147 - Èñïîëüçîâàíèå äàòû èñòå÷åíèÿ îðäåðà çàïðåùåíî áðîêåðîì.");
sec=60000;
break;
}
case 148:
{
Print("Îøèáêà: 148 - Êîëè÷åñòâî îòêðûòûõ è îòëîæåííûõ îðäåðîâ äîñòèãëî ïðåäåëà, óñòàíîâëåííîãî áðîêåðîì.");
sec=60000;
break;
}
case 149:
{
Print("Îøèáêà: 149 - Ïîïûòêà îòêðûòü ïðîòèâîïîëîæíóþ ïîçèöèþ ê óæå ñóùåñòâóþùåé â ñëó÷àå, åñëè õåäæèðîâàíèå çàïðåùåíî.");
sec=60000;
break;
}
case 150:
{
Print("Îøèáêà: 150 - Ïîïûòêà çàêðûòü ïîçèöèþ ïî èíñòðóìåíòó â ïðîòèâîðå÷èè ñ ïðàâèëîì FIFO. Ñíà÷àëà íåîáõîäèìî çàêðûòü áîëåå ðàííèå ñóùåñòâóþùèå ïîçèöèè ");
sec=60000;
break;
}
default: Print("Íåèçâåñòíàÿ îøèáêà");
break;
}
return(sec);
}
//+------------------------------------------------------------------+
//|Ôóíêöèÿ îò Ugar eMail:ugar68@bk.ru |
//+------------------------------------------------------------------+
/*Ôóíêöèÿ ïðîâåðÿåò ôîçìîæíîñòü âûïîëíåíèÿ ïðèêàçîâ âîçâðàùàåò true åñëè âñ¸ â ïîðÿäêå
åñëè ÷òî òî íå â ïîðÿäêå ïèøåò ïðè÷èíó è âûäåðæèâàåò ïàóçó â 0.1 ñåêóíäû è ïîâòîðÿåò ïðîâåðêè
Åñëè â òå÷åíèè çàäàííîãî êîëè÷åñòâà ñåêóíä sec ñèòóàöèÿ íå íîðìàëèçîâàëàñü âîçâðâùàåò false
*/
bool DCOk(int sec)
{
bool ok=true,conn=true,trade=true;
int s=sec*10;
if(IsTesting() || IsOptimization())return(ok);
for(int n=0;n<s;n++)
{
ok=true;
conn=true;
trade=true;
if(!IsConnected())
{
//Print("Íåò ñâÿçè ñ ñåðâåðîì");
ok=false;
conn=false;
Sleep(100);
continue;
}
if(!IsTradeAllowed())
{
//Print("Òîðãîâûé ïîòîê çàíÿò èëè ñîâåòíèêó çàïðåùåíà òîðãîâëÿ");
ok=false;
trade=false;
Sleep(100);
continue;
}
}
if(!conn)Print("Íåò ñâÿçè ñ ñåðâåðîì");
if(!trade)Print("Òîðãîâûé ïîòîê çàíÿò èëè ñîâåòíèêó çàïðåùåíà òîðãîâëÿ");
if(ok)RefreshRates();
return(ok);
}
//+------------------------------------------------------------------+
//|Ôóíêöèÿ îò Ugar eMail:ugar68@bk.ru |
//+------------------------------------------------------------------+
//Ôóíêöèÿ íàõîäèò ïîñëåäíèé èñòîðè÷åñêèé îðäåð è âîçâðàùàåò åãî òèêåò. Åñëè íå íàõîäèò
//èñòîðè÷åñêèõ îðäåðîâ âîçâðàùàåò -1
/*
symb - ñèìâîë, All- âñå ñèìâîëû
mag - ìàäæèê íîìåð, -1 -ëþáîé
*/
int LastHistotyOrder(string symb,int mag)
{
datetime opentime=0;
int ticket=-1;
int hist=OrdersHistoryTotal();
for(int p=hist-1; p>=0; p--)
{
if(!OrderSelect(p,SELECT_BY_POS,MODE_HISTORY))
{
Print("Îðäåð íå âûáðàí, îøèáêà = ",GetLastError());
}
if(symb!="All" && OrderSymbol()!=Symbol())continue;
if(mag>=0 && OrderMagicNumber()!=mag)continue;
if(opentime<OrderCloseTime())
{
opentime=OrderCloseTime();
ticket=OrderTicket();
}
}
return(ticket);
}
//+------------------------------------------------------------------+
//|Ôóíêöèÿ îò Ugar eMail:ugar68@bk.ru |
//+------------------------------------------------------------------+
/*Ïðîñòîé ñòîïëîññ òåéêïðîôèò â ïóíêòàõ
po - ðàññòîÿíèå äî óðîâíÿ çàêðûòèÿ â ïóíêòàõ, åñëè =0 áåç óðîâíÿ
pr - öåíà îòêðûòèÿ
direct - íàïðàâëåíèå óðîâíÿ. 1 - ââåðõ, -1 âíèç, 0- íåò
*/
double sltp(int po,double pr,int direct)
{
if(po==0 || direct==0)return(0);
double step=MarketInfo(Symbol(),17);
if(direct==1)return(MathRound((pr+po*Point)/step)*step);
if(direct==-1)return(MathRound((pr-po*Point)/step)*step);
return(0);
}
//+------------------------------------------------------------------+
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
---