От теории к практике - страница 227

Alexander Sevastyanov
6224
Alexander Sevastyanov  
Maxim Dmitrievsky:

потому что надо проверять результат исполнения сделки сначала, а потом уже проверять через ордерс тотал

У автора там несколько советников одинаковых, работающих асинхронно, каждый на графике своей пары и, по всей видимости, друг с другом не общаются. Поэтому возможны моменты, когда один советник отослал торговый приказ на открытие позиции и приказ находится на стадии обработки или ответ еще не пришел, т.е. позиция пока не открылась (OrdersTotal()==0). И тут другой советник ( а м.б. и не один) тоже отсылает торговый приказ, в итоге открываются сразу 2 или несколько позиций. По идее чтобы избежать таких накладок нужно по факту отсылки 1-го торгового приказа выставлять флаг - глобальную переменную терминала и читать ее другими советниками при формировании сигнала.

А ситуации такие повторяться могут вполне, особенно на новостях когда многие пары почти синхронно делают резкие рыки.

Maxim Dmitrievsky
30384
Maxim Dmitrievsky  
Alexander Sevastyanov:

У автора там несколько советников одинаковых, каждый на графике своей пары и, по всей видимости, друг с другом не общаются. Поэтому возможны моменты, когда один советник отослал торговый приказ на открытие позиции и приказ находится на стадии обработки или ответ еще не пришел, т.е. позиция пока не открылась (OrdersTotal()==0). И тут другой советник ( а м.б. и не один) тоже отсылает торговый приказ, в итоге открываются сразу 2 или несколько позиций. По идее чтобы избежать таких накладок нужно по факту отсылки 1-го торгового приказа выставлять флаг - глобальную переменную терминала и читать ее другими советниками при формировании сигнала.

А ситуации такие повторяться могут вполне, особенно на новостях когда многие пары почти синхронно делают резкие рыки.

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

Alexander_K2
2223
Alexander_K2  
Alexander Sevastyanov:

У автора там несколько советников одинаковых, каждый на графике своей пары и, по всей видимости, друг с другом не общаются. Поэтому возможны моменты, когда один советник отослал торговый приказ на открытие позиции и приказ находится на стадии обработки или ответ еще не пришел, т.е. позиция пока не открылась (OrdersTotal()==0). И тут другой советник ( а м.б. и не один) тоже отсылает торговый приказ, в итоге открываются сразу 2 или несколько позиций. По идее чтобы избежать таких накладок нужно по факту отсылки 1-го торгового приказа выставлять флаг - глобальную переменную терминала и читать ее другими советниками при формировании сигнала.

Именно так и есть, Александр.

Я внимательно читаю сейчас ветку и все рекомендации по устранению данной проблемы. Ибо с ужасом думаю, что будет, если сразу откроются сделки по всем 32 парам... Так быть, конечно, не должно.

Alexander Sevastyanov
6224
Alexander Sevastyanov  
Alexander_K2:

... читаю сейчас ветку и все рекомендации по устранению данной проблемы. Ибо с ужасом думаю, что будет, если сразу откроются сделки по всем 32 парам... Так быть, конечно, не должно.

Если нужна будет помощь - обращайтесь.

Да, кстати задержка открытия позиции складывается в основном из двойного пинга (туда-обратно) и времени обработки торгового приказа сервером. У хороших брокеров, не допускающих перегрузки реальных серверов и имеющих хороший канал связи с поставщиками ликвидности, время обработки торговых приказов составляет единицы миллисекунд. Пинг можно существенно сократить с сотен миллисекунд до единиц, разместив советник на VPS сервере. Общее время, затраченное на отсылку торгового приказа, его обработку и получение ответа от сервера, Вы можете видеть в журнале МТ4. 

Maxim Dmitrievsky
30384
Maxim Dmitrievsky  
Alexander Sevastyanov:

Если нужна будет помощь - обращайтесь.

Да, кстати задержка открытия позиции складывается в основном из двойного пинга (туда-обратно) и времени обработки торгового приказа сервером. У хороших брокеров, не допускающих перегрузки реальных серверов и имеющих хороший канал связи с поставщиками ликвидности, время обработки торговых приказов составляет единицы миллисекунд. Пинг можно существенно сократить с сотен миллисекунд до единиц, разместив советник на VPS сервере. Общее время, затраченное на отсылку торгового приказа, его обработку и получение ответа от сервера, Вы можете видеть в журнале МТ4. 

нет таких брокеров на форексе, десятки миллисекунд минимум, в среднем 200, при нулевом пинге

Andrei
3056
Andrei  
Maxim Dmitrievsky:

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

Там и по одному инструменту такой баг вполне может выскочить, если предыдущий поток еще не закончил исполнение и пришел новый тик - тогда возникает неопределенная ситуация записи и считывания актуальных данных...
Maxim Dmitrievsky
30384
Maxim Dmitrievsky  
Andrei:
Там и по одному инструменту такой баг вполне может выскочить, если предыдущий поток еще не закончил исполнение и пришел новый тик - тогда возникает неопределенная ситуация записи и считывания актуальных данных...

нет, не бывает таких ситуаций, онтик пропускает тики пока не обработается вся логика

Andrei
3056
Andrei  
Maxim Dmitrievsky:

нет, не бывает таких ситуаций, онтик пропускает тики пока не обработается вся логика

Я тоже так думал...

Maxim Dmitrievsky
30384
Maxim Dmitrievsky  
Andrei:

Я тоже как думал...

не знаю, ни разу не было, торговал у кучи брокеров скальпинг на мт4 и мт5

Andrei
3056
Andrei  
Maxim Dmitrievsky:

не знаю, ни разу не было, торговал у кучи брокеров скальпинг на мт4 и мт5

А как проверку делали? Я только на мт4 проверял...