//+------------------------------------------------------------------+ //| Parabolic.mq4 | //| Âèòàëèê | //| wwwita@mail.ru | //+------------------------------------------------------------------+ extern double Lots=0.1; extern double Pip=5; extern double MoveBack=3; extern int chk=0; extern double SL=20; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { double hi=High[1]; double lo=Low[1]; double EMA, EMA1, EMA2, EMA3; int cnt=0, ticket, total; EMA=iMA(0,0,5,0,MODE_EMA,PRICE_MEDIAN,1); EMA1=iMA(0,0,10,0,MODE_EMA,PRICE_MEDIAN,1); EMA2=iMA(0,0,5,0,MODE_EMA,PRICE_MEDIAN,0); EMA3=iMA(0,0,10,0,MODE_EMA,PRICE_MEDIAN,0); total=OrdersTotal(); if(total<1) { if(AccountFreeMargin()<(1000*Lots)) { Print("Ó âàñ íåò äåíåã. Ñâîáîäíûå ñðåäñòâà = ", AccountFreeMargin()); return(0); } if(((EMA>EMA1) && (EMA2<EMA3)) || ((EMA<EMA1) && (EMA2>EMA3))) { chk=1; Print("Ïîçèöèÿ âîçìîæíà!"); } if(chk==1) { if(EMA3-EMA2>2*Point && Bid>=(lo+MoveBack*Point)) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0, "EMA position:",16385,0,Red); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Îòêðûò îðäåð SELL : ",OrderOpenPrice()); chk=0; } else { Print("Îøèáêà îòêðûòèÿ SELL îðäåðà : ",GetLastError()); return(0); } } if(EMA2-EMA3>2*Point && Ask<=(hi-MoveBack*Point)) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0, "EMA position:",16385,0,Green); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Îòêðûò îðäåð BUY : ",OrderOpenPrice()); chk=0; } else { Print("Îøèáêà îòêðûòèÿ BUY îðäåðà : ",GetLastError()); return(0); } } } return(0); } for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && // ýòî îòêðûòàÿ ïîçèöèÿ? OP_BUY èëè OP_SELL OrderSymbol()==Symbol()) // èíñòðóìåíò ñîâïàäàåò? { if(OrderType()==OP_BUY) // îòêðûòà äëèííàÿ ïîçèöèÿ { // ïðîâåðèì, ìîæåò óæå ïîðà çàêðûâàòüñÿ? if(Bid>=(OrderOpenPrice()+Pip*Point)) { chk=0; OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // çàêðûâàåì ïîçèöèþ return(0); // âûõîäèì } if(Bid<=(OrderOpenPrice()-SL*Point)) { chk=0; OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // çàêðûâàåì ïîçèöèþ return(0); // âûõîäèì } } else // èíà÷å ýòî êîðîòêàÿ ïîçèöèÿ { // ïðîâåðèì, ìîæåò óæå ïîðà çàêðûâàòüñÿ? if(Ask<=(OrderOpenPrice()-Pip*Point)) { chk=0; OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // çàêðûâàåì ïîçèöèþ return(0); // âûõîäèì } if(Ask>=(OrderOpenPrice()+SL*Point)) { chk=0; OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // çàêðûâàåì ïîçèöèþ return(0); // âûõîäèì } } } } return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains the highest prices of each bar
Series array that contains the lowest prices of each bar
Indicator Curves created:
Indicators Used:
Moving average indicator
Custom Indicators Used:
Order Management characteristics:
Checks for the total of open orders
It Closes Orders by itself
Other Features: