//+------------------------------------------------------------------+ //| ytg_2MA_4Level.mq4 | //| Yuriy Tokman | //| yuriytokman@gmail.com | //+------------------------------------------------------------------+ #property copyright "Yuriy Tokman" #property link "yuriytokman@gmail.com" /* 2 SMA ïåðâàÿ ñ ïàðàìåòðàìè 14 âòîðàÿ ñ 180 òàêæå åñòü ïàðàëëåëüíûå ëèíèè: SMA 180 + 250 ïóíêòîâ ïî Y SMA 180 + 500 ïóíêòîâ ïî Y SMA 180 - 250 ïóíêòîâ ïî Y SMA 180 - 500 ïóíêòîâ ïî Y Ðàáîòàåò âîò òàê: ïðè ïåðåñå÷åíèå MA14 ëþáóþ ëèíèþ ïðîèñõîäèò ëèáî ïîêóïêà, ëèáî ïðîäàæà*/ extern string _____1_____ = "Òîðãîâûå íàñòðîéêè "; extern int òåéê_ïðîôèò = 130; extern int ñòîï_ëîññ = 1000; extern int ëîòû = 1; extern string _____2_____ = "Íàñòðîéêè èíäèêàòîðîâ "; extern int ðàñ÷¸òíûé_áàð = 1; extern int ïåðèîä_áûñòðîé_ÌÀ = 14; extern int ìåòîä_áûñòðîé_ÌÀ = 2;//0-3 extern int öåíîâ_êîíñò_áûñòðîé_ÌÀ = 4;//0-6 extern int ïåðèîä_ìåäëí_ÌÀ =180; extern int ìåòîä_ìåäëí_ÌÀ =2;//0-3 extern int öåíîâ_êîíñò_ìåäëí_ÌÀ =4;//0-6 extern string _____3_____ = "Íàñòðîéêè óðîâíåé "; extern int âåðõíèé_1 = 500; extern int âåðõíèé_2 = 250; extern int íèæíèé_1 = 500; extern int íèæíèé_2 = 250; #include <stdlib.mqh> // Ñòàíäàðòíàÿ áèáëèîòåêà ÌÒ4 //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- if(!IsDemo()) { Comment("Âåðñèÿ òîëüêî äëÿ òåñòîâ"); return(0); } else Comment("Òåñòîâàÿ âåðñèÿ"); if(!ExistPositions()) { if( GetSignal()==1)OpenPosition("",OP_BUY,ëîòû,Bid-ñòîï_ëîññ*Point,Ask+òåéê_ïðîôèò*Point); if( GetSignal()==-1)OpenPosition("",OP_SELL,ëîòû,Ask+ñòîï_ëîññ*Point,Bid-òåéê_ïðîôèò*Point); } //---- return(0); } //+------------------------------------------------------------------+ int GetSignal() { double MA_1_0=iMA(Symbol(),0,ïåðèîä_áûñòðîé_ÌÀ,0,ìåòîä_áûñòðîé_ÌÀ,öåíîâ_êîíñò_áûñòðîé_ÌÀ,ðàñ÷¸òíûé_áàð); double MA_1_1=iMA(Symbol(),0,ïåðèîä_áûñòðîé_ÌÀ,0,ìåòîä_áûñòðîé_ÌÀ,öåíîâ_êîíñò_áûñòðîé_ÌÀ,ðàñ÷¸òíûé_áàð+1); double MA_2_0=iMA(Symbol(),0,ïåðèîä_ìåäëí_ÌÀ,0,ìåòîä_ìåäëí_ÌÀ,öåíîâ_êîíñò_ìåäëí_ÌÀ,ðàñ÷¸òíûé_áàð); double MA_2_1=iMA(Symbol(),0,ïåðèîä_ìåäëí_ÌÀ,0,ìåòîä_ìåäëí_ÌÀ,öåíîâ_êîíñò_ìåäëí_ÌÀ,ðàñ÷¸òíûé_áàð+1); int vSignal = 0; if(MA_1_1<=MA_2_1&&MA_1_0>MA_2_0)vSignal = 1;//up else if(MA_1_1<=MA_2_1+âåðõíèé_1*Point&&MA_1_0>MA_2_0+âåðõíèé_1*Point)vSignal = 1;//up else if(MA_1_1<=MA_2_1+âåðõíèé_2*Point&&MA_1_0>MA_2_0+âåðõíèé_2*Point)vSignal = 1;//up else if(MA_1_1<=MA_2_1-íèæíèé_1*Point&&MA_1_0>MA_2_0-íèæíèé_1*Point)vSignal = 1;//up else if(MA_1_1<=MA_2_1-íèæíèé_2*Point&&MA_1_0>MA_2_0-íèæíèé_2*Point)vSignal = 1;//up else if(MA_1_1>=MA_2_1&&MA_1_0<MA_2_0) vSignal =-1;//down else if(MA_1_1>=MA_2_1+âåðõíèé_1*Point&&MA_1_0<MA_2_0+âåðõíèé_1*Point) vSignal =-1;//down else if(MA_1_1>=MA_2_1+âåðõíèé_2*Point&&MA_1_0<MA_2_0+âåðõíèé_2*Point) vSignal =-1;//down else if(MA_1_1>=MA_2_1-íèæíèé_1*Point&&MA_1_0<MA_2_0-íèæíèé_1*Point) vSignal =-1;//down else if(MA_1_1>=MA_2_1-íèæíèé_2*Point&&MA_1_0<MA_2_0-íèæíèé_2*Point) vSignal =-1;//down return (vSignal); } //+----------------------------------------------------------------------------+ //| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Âåðñèÿ : 06.03.2008 | //| Îïèñàíèå : Âîçâðàùàåò ôëàã ñóùåñòâîâàíèÿ ïîçèöèé | //+----------------------------------------------------------------------------+ //| Ïàðàìåòðû: | //| sy - íàèìåíîâàíèå èíñòðóìåíòà ("" - ëþáîé ñèìâîë, | //| NULL - òåêóùèé ñèìâîë) | //| op - îïåðàöèÿ (-1 - ëþáàÿ ïîçèöèÿ) | //| mn - MagicNumber (-1 - ëþáîé ìàãèê) | //| ot - âðåìÿ îòêðûòèÿ ( 0 - ëþáîå âðåìÿ îòêðûòèÿ) | //+----------------------------------------------------------------------------+ bool ExistPositions(string sy="", int op=-1, int mn=-1, datetime ot=0) { int i, k=OrdersTotal(); if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (ot<=OrderOpenTime()) return(True); } } } } } } return(False); } //+----------------------------------------------------------------------------+ //| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Âåðñèÿ : 13.06.2007 | //| Îïèñàíèå : Îòêðûòèå ïîçèöèè. Âåðñèÿ ôóíêöèè äëÿ òåñòîâ íà èñòîðèè. | //+----------------------------------------------------------------------------+ //| Ïàðàìåòðû: | //| sy - íàèìåíîâàíèå èíñòðóìåíòà ("" - òåêóùèé ñèìâîë) | //| op - îïåðàöèÿ | //| ll - ëîò | //| sl - óðîâåíü ñòîï | //| tp - óðîâåíü òåéê | //| mn - MagicNumber | //+----------------------------------------------------------------------------+ void OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int mn=0) { color clOpen; double pp; int err, ticket; if (sy=="") sy=Symbol(); if (op==OP_BUY) { pp=MarketInfo(sy, MODE_ASK); clOpen=Green; } else { pp=MarketInfo(sy, MODE_BID); clOpen=Red; } ticket=OrderSend(sy, op, ll, pp,5, sl, tp, "", mn, 0, clOpen); if (ticket<0) { err=GetLastError(); Print("Error(",err,") open ",GetNameOP(op),": ",ErrorDescription(err)); Print("Ask=",Ask," Bid=",Bid," sy=",sy," ll=",ll, " pp=",pp," sl=",sl," tp=",tp," mn=",mn); } } //+----------------------------------------------------------------------------+ //| Àâòîð : Êèì Èãîðü Â. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Âåðñèÿ : 01.09.2005 | //| Îïèñàíèå : Âîçâðàùàåò íàèìåíîâàíèå òîðãîâîé îïåðàöèè | //+----------------------------------------------------------------------------+ //| Ïàðàìåòðû: | //| op - èäåíòèôèêàòîð òîðãîâîé îïåðàöèè | //+----------------------------------------------------------------------------+ string GetNameOP(int op) { switch (op) { case OP_BUY : return("Buy"); case OP_SELL : return("Sell"); case OP_BUYLIMIT : return("Buy Limit"); case OP_SELLLIMIT: return("Sell Limit"); case OP_BUYSTOP : return("Buy Stop"); case OP_SELLSTOP : return("Sell Stop"); default : return("Unknown Operation"); } }
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Moving average indicator
Custom Indicators Used:
Order Management characteristics:
Checks for the total of open orders
It automatically opens orders when conditions are reached
Other Features: