Проверка открытой позиции - объмен опытом.

 

Все-таки решил воспользоваться мнением знатоков. У кого какой опыт в использовании обработчиков событий OnTrade() и OnTradeTransaction() для проверки наличия открытых позиций.

Можно проверять наличие открытой позиции прямо из функции OnTick() с помощью PositionSelect(). Плюс в том, что можно менять ход выполнения программы прямо на месте, не дожидаясь возникновения события OnTradeTransaction(). Минус в том, что, по опыту некоторых разработчиков (сам с таким не сталкивался), функция PositionSelect() иногда срабатывает некорректно. Еще раз сам никогда с этим не сталкивался, поэтому предпочитаю именно этот метод.

Можно проверять наличие открытых позиций в обработчиках торговых событий. Минус в том, что изменить ход выполнения программы я могу только после обработки торгового события и изменения соответствующего флага. А значит, чисто теоретически, если новый тик придет раньше обработки события (флаг еще опущен, новый тик снова показывает сигнал на сделку) советник заключит еще одну сделку.

Поделитесь вашими предпочтениями, как все-таки лучше. 

 
Очень большой плюс в том, что в структурах OnTradeTransaction() столько информации об отрытой позиции, что столько не всегда надо...
Причина обращения: