Чемпионат Automated Trading Championship 2010 стартовал! - страница 13

 
arnautov:

Или я один с такой байдой столкнулся?

Аналогичная байда. Постоянно. И два, и три ордера с одинаковыми параметрами в одну секунду выставляет. https://www.mql5.com/ru/forum/2248  Но в причине я пока не разобрался.
OrderSend() Вопросы
OrderSend() Вопросы
  • www.mql5.com
дожидается ли получения request], или после отправки торгового запроса на сервер сразу же переходит к следующему оператору (блоку)?
 
Yedelkin:
Аналогичная байда. Постоянно. И два, и три ордера с одинаковыми параметрами в одну секунду выставляет. https://www.mql5.com/ru/forum/2248  Но в причине я пока не разобрался.
После выставления ордера в сон на несколько секунд уходилил?
 
Yedelkin:
Аналогичная байда. Постоянно. И два, и три ордера с одинаковыми параметрами в одну секунду выставляет. https://www.mql5.com/ru/forum/2248  Но в причине я пока не разобрался.

Сначала я боролся с этим, ставя Sleep

а потом начал проверять по магику

примерно так

otkr_b2=0; //флажок открытия ордера

 if(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_BUY_LIMIT&&OrderGetInteger(ORDER_MAGIC)==8001)

{otkr_b2=1;}//флажок открытия ордера


Наверное, есть специалисты, которые смогут предложить более корректный код, но так у меня вроде получилось и выставляется только 1 ордер.

 

 

 
Manov:

А почему

2010.10.04 16:30:38'630165' : requote 1.43081 / 1.43133 (instant sell 0.10 EURAUD at 1.43106)

 если:  

 1.43006  - 1.43206  не надо будеть  реквот...

Сервер глючит ??? или я ??? :)))   

2010.10.04 16:33:38'630165' : requote 1.37887 / 1.37900 (instant sell 0.10 EURUSD at 1.37888) 


В правилах соревнований явно указано, что исполнение будет происходить с реквотами. Это означает, что не зависимо от параметра diviation сервер время от времени будет слать отказы принять ордер. Лично я готовился к подобной ситуации. Во-первых, всегда обновляю цены непосредственно перед отправкой заявки, во вторых, я засыпаю на целых семь секунд после совершение операции  (ибо в правилах указано исполнение до 7 секунд). Если за это время произошла реквота и заявка не была принята, повторяю попытку еще два раза (с аналогичным обновлением и засыпанием), если и в этом случае был получен отказ, дожидаюсь следующего тика и уже на нем запускаю повтор процедуры. Все это делает специализированная система циклов.

Вообще странно слышать подобные вопросы, так как ответы на них весьма очевидны и должны быть заранее проработаны разработчиками. 

 
C-4:
После выставления ордера в сон на несколько секунд уходилил?
Нет, про такие тонкости я и не знал. Но, как видим, arnautov'у это не помогло.
 
C-4:


В правилах соревнований явно указано, что исполнение будет происходить с реквотами. Понятно - еще одно поле за кухонии ДЛично я готовился к подобной ситуации. Во-первых, всегда обновляю цены непосредственно перед отправкой заявки, во вторых, я засыпаю на целых семь секунд после совершение операции  (ибо в правилах указано исполнение до 7 секунд). Если за это время произошла реквота и заявка не была принята, повторяю попытку еще два раза (с аналогичным обновлением и засыпанием), если и в этом случае был получен отказ, дожидаюсь следующего тика и уже на нем запускаю повтор процедуры. Все это делает специализированная система циклов.

Вообще странно слышать подобные вопросы, так как ответы на них весьма очевидны и должны быть заранее проработаны разработчиками. 

Спасибо.  Вы абсолютно прав. Это бесспорное....

Я готовился к нормалны условия, а здесь ....     устаревшея заявка.........

Извините..... Я пропустиль что-то..... И перепутал...  

Еще раз - Спасибо. 

Понятно все  !! :)))      " Это означает, что не зависимо от параметра diviation сервер время от времени будет слать отказы принять ордер."        :)))

 

 
Yedelkin:
Нет, про такие тонкости я и не знал. Но, как видим, arnautov'у это не помогло.
Но еще не известно, как он реализовал свои проверки. Все-таки для того, что бы выставить два ордера нужно два вызова OrderSend. Почему его советник решил вызвать функцию два раза, в этом весь вопрос. А вообще надо было бы использовать встроенные классы - многие ненужные тонкости в них скрыты и уже учтены, чего нельзя сказать о ручных проверках всего и вся.
Документация по MQL5: Торговые функции / OrderSend
Документация по MQL5: Торговые функции / OrderSend
  • www.mql5.com
Торговые функции / OrderSend - Документация по MQL5
 
C-4:
 Все-таки для того, что бы выставить два ордера нужно два вызова OrderSend.
Это может произойти и тогда, когда одна и та же функция OrderSend() с тождественными параметрами вызывается на двух последовательно обрабатываемых тиках. А эксперт при этом по какой-то причине не видит, что на первом обрабатываемом тике ордер уже выставлен.
 
Yedelkin:
Это может произойти и тогда, когда одна и та же функция OrderSend() с тождественными параметрами вызывается на двух последовательно обрабатываемых тиках. А эксперт при этом по какой-то причине не видит, что на первом обрабатываемом тике ордер уже выставлен.

Я хоть и не учавствую в чемпе, но на обычном демо такая - же история. вместо одного иногда штампует 2 ордера, хотя после OrderSend() стоит такая проверка

            if(result.retcode==10009)
              {
               flagNewSeries=false;
               PositionSelect(_Symbol);
               ID=(int)PositionGetInteger(POSITION_IDENTIFIER);
              }
 

снова посмотрел внутри кода....ВЕДЬ есть же разрешение на работу

bool            AUDUSD_TradeUp        = true;    

НИ ОДНОЙ сделки по символу...ни на тесте , ни на АТС2010.... загадка природы.... :/ надо выбрать время посмотреть еще раз..но что интересно, перед отправлением последней версии робота , сделки на тестере дома были :)


Причина обращения: