MqlTradeRequest request; // отправляемый запрос MqlTradeCheckResult checkresult; MqlTradeResult result; // получаемый ответ сервера //------------------------------------------------------------------ OnStart void OnStart() { double point=SymbolInfoDouble(Symbol(), SYMBOL_POINT); double stop=SymbolInfoInteger(Symbol(), SYMBOL_TRADE_STOPS_LEVEL)*point; double ask=SymbolInfoDouble(Symbol(), SYMBOL_ASK); double op=NormalizeDouble(ask-2*stop-10*point, Digits()); ResetRequest(); // очистили запрос request.symbol=Symbol(); request.type=(ENUM_ORDER_TYPE)ORDER_TYPE_BUY_LIMIT; request.volume=1; request.price=op; request.sl=0; request.tp=0; request.deviation=1; request.comment=""; request.magic=0; request.expiration=0; request.type_time=ORDER_TIME_GTC; request.type_filling=ORDER_FILLING_FOK; request.action=TRADE_ACTION_PENDING; if (SymbolInfoInteger(Symbol(), SYMBOL_TRADE_EXEMODE)==SYMBOL_TRADE_EXECUTION_MARKET && request.action==TRADE_ACTION_DEAL) request.price=0; datetime dt=TimeLocal(); for(int i=0; i<100; i++) { if (!::OrderCheck(request, checkresult)) { return; } if (!::OrderSend(request, result)) { return; } } DeleteAllOrders(); Alert(int(TimeLocal()-dt)); } //------------------------------------------------------------------ ResetRequest void ResetRequest() { ZeroMemory(request); request.action=(ENUM_TRADE_REQUEST_ACTIONS)-1; // Тип выполняемого действия request.magic=0; // Штамп эксперта (идентификатор magic number) request.order=0; // Тикет ордера request.symbol=NULL; // Имя торгового инструмента request.volume=0; // Запрашиваемый объем сделки в лотах request.price=0; // Цена request.stoplimit=0; // Уровень StopLimit ордера request.sl=0; // Уровень Stop Loss ордера request.tp=0; // Уровень Take Profit ордера request.deviation=0; // Максимально приемлемое отклонение от запрашиваемой цены request.type=0; // Тип ордера request.type_filling=0; // Тип ордера по исполнению request.type_time=ORDER_TIME_GTC; // Тип ордера по времени действия request.expiration=0; // Срок истечения ордера (для ордеров типа ORDER_TIME_SPECIFIED) request.comment=""; // Комментарий к ордеру } void DeleteAllOrders() { ulong order_ticket; //--- пройдем по всем отложенным ордерам ResetRequest(); request.action=TRADE_ACTION_REMOVE; for(int i=OrdersTotal()-1;i>=0;i--) if((order_ticket=OrderGetTicket(i))>0) { request.order=order_ticket; OrderSend(request,result); } }