//+------------------------------------------------------------------+ //| ФУНКЦИЯ Выставления открытым ордерам Стопов и Тейка | //+------------------------------------------------------------------+ void STOP_TAKE() { int tip,Ticket; double OOP,OSL,OTP; int SPREAD = (int)MarketInfo(Symbol(),MODE_SPREAD); if (stoploss ",SL," TP ",OTP," -> ",TP); else Print(Symbol()," Error SetStop ",GetLastError()," Ticket ",Ticket); } if (tip==OP_SELL || tip==OP_SELLSTOP || tip==OP_SELLLIMIT) { if (takeprofit!=0) TP = NormalizeDouble(OOP - takeprofit*Point,Digits); else TP=OTP; if (stoploss!=0) SL = NormalizeDouble(OOP + (stoploss+SPREAD)* Point,Digits); else SL=OSL; if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP); else Print(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket); } } } //----------Если Ордера Оператора else if(tip<2 && OrderSymbol()==Symbol()&& OrderMagicNumber()!=Magic) { OSL = OrderStopLoss(); OTP = OrderTakeProfit(); if ((OSL==0&&stoploss!=0)||(OTP==0&&takeprofit!=0)) { OOP = OrderOpenPrice(); Ticket = OrderTicket(); if (tip==OP_BUY || tip==OP_BUYSTOP || tip==OP_BUYLIMIT) { if (takeprofit!=0) TP = NormalizeDouble(OOP + takeprofit*Point,Digits); else TP=OTP; if (stoploss!=0) SL = NormalizeDouble(OOP - (stoploss+SPREAD)* Point,Digits); else SL=OSL; if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP); else Print(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket); } if (tip==OP_SELL || tip==OP_SELLSTOP || tip==OP_SELLLIMIT) { if (takeprofit!=0) TP = NormalizeDouble(OOP - takeprofit*Point,Digits); else TP=OTP; if (stoploss!=0) SL = NormalizeDouble(OOP + (stoploss+SPREAD)* Point,Digits); else SL=OSL; if (OrderModify(Ticket,OOP,SL,TP,0,White)) Print("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP); else Print(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket); } } } } } }