не отправляется ордер

 
 MqlTradeRequest send; MqlTradeResult result;  MqlTradeCheckResult res;       
            send.action=TRADE_ACTION_DEAL; send.symbol=_Symbol;  send.volume=0.01;
            send.type_filling=ORDER_FILLING_FOK; send.price=SymbolInfoDouble(_Symbol,SYMBOL_BID);
            send.type=ORDER_TYPE_SELL; 
       
            send.tp=SymbolInfoDouble(_Symbol,SYMBOL_BID)-0.005; send.sl=SymbolInfoDouble(_Symbol,SYMBOL_BID)+0.005; 
            
            if(!OrderCheck(send,res)){Print(res.comment,"  ", res.equity, " ", res.margin_free);}
            if(!OrderSend(send,result)){ObjectSetString(0,constr_name+"22",OBJPROP_TEXT,result.retcode);  }

выдает 10013. 

не открывает в тестере! в потоке все работает!!!  я пробовал все комбинации.

почему там достаточно условий, а в тестере что ему нужно?

 
koko_moko:

выдает 10013. 

не открывает в тестере! в потоке все работает!!!  я пробовал все комбинации.

почему там достаточно условий, а в тестере что ему нужно?

   MqlTradeRequest send;
   MqlTradeResult result;
   MqlTradeCheckResult res;
   ZeroMemory(send);
   send.action=TRADE_ACTION_DEAL;
   send.symbol=_Symbol;
   send.volume=0.01;
   send.type_filling=ORDER_FILLING_FOK;
   send.price=SymbolInfoDouble(_Symbol,SYMBOL_BID);
   send.type=ORDER_TYPE_SELL;

   send.tp=SymbolInfoDouble(_Symbol,SYMBOL_BID)-0.005;
   send.sl=SymbolInfoDouble(_Symbol,SYMBOL_BID)+0.005;

   if(!OrderCheck(send,res))
     {
      Print(res.comment,"  ", res.equity, " ", res.margin_free);
     }
   if(!OrderSend(send,result))
     {
      ObjectSetString(0,constr_name+"22",OBJPROP_TEXT,result.retcode);
     }

Нужно обнулить структуру торгового запроса.

С уважением, Владимир.

 
MrBrooklin #:

Нужно обнулить структуру торгового запроса.

С уважением, Владимир.

работает. Спасибо большое. Не очевидное решение.

 
koko_moko #:

работает. Спасибо большое. Не очевидное решение.

Пожалуйста! Эта проблема тянется с "лохматых" годов, но так никто в Справочнике MQL5 не отредактировал описание в плане обнуления структуры.

Очень давно (уже не помню в каком именно анонсе билда МТ5) промелькнуло сообщение о принудительном обнулении структуры и на этом всё! А дальше, кто не видел этого сообщения, так и продолжали постоянно натыкаться на эту проблему. В то время нужно было явно прописывать MqlTradeRequest request= {0}; Правда, потом, по истечении некоторого периода, ноль в фигурных скобках уже не нужно было прописывать.

Кстати, ещё в 2016 году, Алексей Викторов пытался разобраться с данной проблемой и всё-таки разобрался почему нужно обнулять. Приведу выдержку из его сообщения: "... Поскольку все операции выполняются функцией OrderSend() с указателями на одни и те-же структуры, в частности на структуру типа MqlTradeRequest, то терминал/сервер распознаёт что от него хотят именно по заполненным полям структуры MqlTradeRequest, соответственно ВСЕ не используемые поля должны быть обнулены..."

С уважением, Владимир.

 
MrBrooklin #:

Пожалуйста! Эта проблема тянется с "лохматых" годов, но никто в Справочнике MQL5 не собирается менять примеры, связанные со структурой торгового запроса MqlTradeRequest, а также отредактировать описание в плане обнуления структуры.

Очень давно (уже не помню в каком именно анонсе билда МТ5) промелькнуло сообщение об обнулении структуры и на этом всё! А дальше, кто не видел этого сообщения, так и продолжают постоянно натыкаться на эту проблему.

Кстати, ещё в 2016 году, Алексей Викторов пытался разобраться с данной проблемой и всё-таки разобрался почему нужно обнулять. Приведу выдержку из его сообщения: "... Поскольку все операции выполняются функцией OrderSend() с указателями на одни и те-же структуры, в частности на структуру типа MqlTradeRequest, то терминал/сервер распознаёт что от него хотят именно по заполненным полям структуры MqlTradeRequest, соответственно ВСЕ не используемые поля должны быть обнулены..."

С уважением, Владимир.

Да неужели я такой умный и так смог написать? Не верю…

Обнулить можно ещё и при объявлении структуры

MqlTradeRequest send = {};

Не так давно я где-то читал объяснения этого, но искать конечно лениво. Да и пользоваться поиском я плохо умею.

А ещё, часто гаишникам говорил, медленно ездить я плохо умею…

 
Alexey Viktorov #:

Да неужели я такой умный и так смог написать? Не верю…


С уважением, Владимир.

 
Alexey Viktorov #:

Вот в том тексте который мне лениво искать, как-то красиво объяснено, что в таком случае обнуляется только первый элемент структуры. А в остальных возможен мусор.

Вот буквально на днях на это снова наткнулся.

Alexey Viktorov #:

А ещё раньше было много споров по поводу отмены таких записей и многим пришлось править все свои поделки.

Да, тоже пришлось кое-что старое править.