//+------------------------------------------------------------------+ //| Trend_way_Pending.mq4 | //| Apostol-Aristotel | //| http://www.apostol-aristotel.ru | //+------------------------------------------------------------------+ #property copyright "Apostol-Aristotel" #property link "http://www.apostol-aristotel.ru" extern int TakeProfit=30; extern int StopLoss=30; extern int padding=50; extern int Pending=1; extern int Magic=678; // Magic òîëüêî äëÿ îòëîæåííûõ îðäåðîâ int ticketB, ticketS, modify, Sell_Orders, Buy_Orders, Pending_Orders, sl; // Modify-áûë ëè îðäåð ìîäèôèöèðîâàí, 1 - äà, 0 - íåò. ticetB - òèêåò äëÿ îòëåæåííûõ îðäåðîâ íà ïîêóïêó, ticketS - íà ïðîäàæó. // sl - óðîâåíü òðåéëèíãà, îïðåäåëÿåòñÿ àâòîì. è = ìèí. ñòîïëîññó extern double Lots; //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- if(OrdersTotal()==0) { Sell_Orders=0; Buy_Orders=0; Pending_Orders=0; Lots=0; modify=0; } for (int i=1; i<=OrdersTotal(); i++) //Öèêë ïî âñåì îðäåðàì,.. { //îòðàæ¸ííûì â òåðìèíàëå if(OrderSelect(i-1,SELECT_BY_POS)==true) // âûáèðàåì îðäåð { sl=MarketInfo(Symbol(),MODE_STOPLEVEL); // Îïðåäåëÿåì ìèíèìàëüíûé ñòîï ëîññ if(OrderType()==OP_BUY) { if(modify==0) { OrderModify(OrderTicket(),0,OrderOpenPrice()-Point*StopLoss,OrderOpenPrice()+Point*TakeProfit,0,Blue); // Ìîäèôèöèðóåì (èçìåíÿåì òï è ñë) îðäåð íà ïîêóïêó îòíîñèòåëüíî öåíû îòêðûòèÿ modify++; Buy_Orders++; Lots=OrderLots(); } if(Bid>sl*Point+OrderOpenPrice()) // Åñëè äîñòèãíóò óðîâåíü áåçóáûòêà OrderModify(OrderTicket(),0,Bid-Point*sl,OrderTakeProfit(),0,Blue); // Ìîäèôèöèðóåì îðäåð if(OrderTakeProfit()==Bid || OrderStopLoss()>OrderOpenPrice()) // Åñëè ó îðäåðà òï èëè ñðàáîòàë òðåéëèíã { if(OP_SELLSTOP==1) // Åñëè åñòü îòëîæåííèêè íà ïðîäàæó OrderDelete(ticketS); // Óäàëÿåì åãî } } if(OrderType()==OP_SELL) { if(modify==0) { OrderModify(OrderTicket(),0,OrderOpenPrice()+Point*StopLoss,OrderOpenPrice()-Point*TakeProfit,0,Blue); // Ìîäèôèöèðóåì (èçìåíÿåì òï è ñë) îðäåð íà ïðîäàæó îòíîñèòåëüíî öåíû îòêðûòèÿ modify++; Sell_Orders++; Lots=OrderLots(); } if(Ask<OrderOpenPrice()-sl*Point) // Åñëè äîñòèãíóò óðîâåíü áåçóáûòêà OrderModify(OrderTicket(),0,Ask+Point*sl,OrderTakeProfit(),0,Blue); // Ìîäèôèöèðóåì îðäåð if(OrderTakeProfit()==Ask || OrderStopLoss()<OrderOpenPrice()) // Åñëè òï ó îðäåðà íà ïðîäàæó èëè ñðàáîòàë òðåéëèíã { if(OP_BUYSTOP==1) // Åñëè åñòü îòëîæåííèêè íà ïîêóïêó OrderDelete(ticketB); // Óäàëÿåì åãî } } if((OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP) && OrderMagicNumber()==Magic && Pending_Orders<2 && Pending==1) // Åñëè îðäåð îòëîæåííûâé è ñåé÷àñ òîëüêî 1 îðäåð îòëîæåí Pending_Orders++; } } if(Pending_Orders==0 && Pending==1) // Åñëè îòëîæåííûõ îðäåðîâ íåò è îòëîæåííèêè âêëþ÷åíû { if(Sell_Orders==1) // Åñëè åñòü îðäåð íà ïðîäàæó { ticketB++; OrderSend(Symbol(),OP_BUYSTOP,2*Lots,Ask+padding*Point,3,Bid-2*StopLoss*Point+padding*Point,Bid+0.5*TakeProfit*Point+padding*Point,"My order #"+ticketB,Magic,0,Green); //Ñòàâèì îòëîæåííûé íà ïîêóïêó } if(Buy_Orders==1) // Åñëè åñòü îðäåð íà ïîêóïêó { ticketS++; OrderSend(Symbol(),OP_SELLSTOP,2*Lots,Bid-padding*Point,3,Ask+2*StopLoss*Point-padding*Point,Ask-0.5*TakeProfit*Point-padding*Point,"My order #"+ticketS,Magic,0,Green); //Ñòàâèì îòëîæåííûé íà ïðîäàæó } } if(OrderType()==OP_BUYSTOP && Pending==1) // Åñëè îòëîæåííûé îðäåð íà ïîêóïêó { if(OrderSelect(ticketB, SELECT_BY_TICKET)==true) // Åñëè åãî óäàëîñü âûáðàòü { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && Bid-Point*sl>OrderOpenPrice()) // Åñëè ñèìâîë ãðàôèêà = ñèìâîëó ñäåëêè, åñëè ìàãè÷åñêèé íîìåð ñîâïàäàåò, è äîñòèãíóò óð. áåçóáûòêà if(Bid-Point*sl>OrderStopLoss()) OrderModify(OrderTicket(),0,Bid-Point*sl,OrderTakeProfit(),0,Blue); // Åñëè óðîâåíü íàñòîÿùåãî ñòîïà áîëüøå óñòàíîâëåííîãî, òî äâèãàåì ñòîï } } if(OrderType()==OP_SELLSTOP && Pending==1)// Åñëè îòëîæåííûé îðäåð íà ïðîäàæó { if(OrderSelect(ticketS, SELECT_BY_TICKET)==true) // Åñëè åãî óäàëîñü âûáðàòü { if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && Ask+Point*sl<OrderOpenPrice()) // Åñëè ñèìâîë ãðàôèêà = ñèìâîëó ñäåëêè, åñëè ìàãè÷åñêèé íîìåð ñîâïàäàåò, è äîñòèãíóò óð. áåçóáûòêà if(Bid-Point*sl>OrderStopLoss()) OrderModify(OrderTicket(),0,Ask+Point*sl,OrderTakeProfit(),0,Blue); // Åñëè óðîâåíü íàñòîÿùåãî ñòîïà áîëüøå óñòàíîâëåííîãî, òî äâèãàåì ñòîï } } //---- return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Checks for the total of open orders
It can change open orders parameters, due to possible stepping strategy
It automatically opens orders when conditions are reached
Other Features: