Проверка на реквоты в МT5

 
Есть у кого-нибудь ф-я проверки открытия позиции и переоткрытия в случае реквота или оффквота для мт5? Буду премного преблагодарен, а то сам уже подзабодался коды писать ) Или подскажите как делать правильно, через обработчик онтрейд или как?
 
Maxim Dmitrievsky:
Есть у кого-нибудь ф-я проверки открытия позиции и переоткрытия в случае реквота или оффквота для мт5? Буду премного преблагодарен, а то сам уже подзабодался коды писать ) Или подскажите как делать правильно, через обработчик онтрейд или как?

Что за оффквот? По поводу реквота - если запрос синхронный (через OrderSend) то в result (структура MqlTradeResult) будет соответствующий retcode (TRADE_RETCODE_REQUOTE).

Вот и выполняйте запрос пока он корректно не пройдет.

 
akuloff:

Что за оффквот? По поводу реквота - если запрос синхронный (через OrderSend) то в result (структура MqlTradeResult) будет соответствующий retcode (TRADE_RETCODE_REQUOTE).

Вот и выполняйте запрос пока он корректно не пройдет.

Да, синхронный. Я не могу вкупить в какой момент нужно получать результат исполнения сделки на сервере, там как я понял событие OnTrade возникает несколько раз в процессе отправки торгового приказа. Потому что пока сделка сервером не обработана, структура будет содержать результат выполнения предыдущей сделки. Т.е. как понять что запрашиваемый результат относится к нужному ордеру.
 
Maxim Dmitrievsky:
Да, синхронный. Я не могу вкупить в какой момент нужно получать результат исполнения сделки на сервере, там как я понял событие OnTrade возникает несколько раз в процессе отправки торгового приказа. Потому что пока сделка сервером не обработана, структура будет содержать результат выполнения предыдущей сделки. Т.е. как понять что запрашиваемый результат относится к нужному ордеру.
Если синхронный то непосредственно traderesult который в ordersend и содержит информацию о данном выставленном ордере (его статусе).
 
akuloff:
Если синхронный то непосредственно traderesult который в ordersend и содержит информацию о данном выставленном ордере (его статусе).

Вот так пойдет? еще слип туда на 1 сек вставил, что бы не молотил подряд кучу ордеров

 if(CountPosBuy("EURGBP")==0) 
       {
        m_Trade.PositionOpen("EURGBP",ORDER_TYPE_BUY,Lot,priceEurGbpBuy,NormalizeDouble(priceEurGbpBuy-EURGBPstoploss*0.00001,5),0,NULL);
        
        while(m_Trade.ResultRetcode()!=10009)
         {
          m_Trade.PositionOpen("EURGBP",ORDER_TYPE_BUY,Lot,priceEurGbpBuy,NormalizeDouble(priceEurGbpBuy-EURGBPstoploss*0.00001,5),0,NULL);
         }
       } 
Причина обращения: