Как отследить момент закрытия ордера и получить к нему доступ - страница 2

 
Vitaly Muzichenko:
Попрошу мне не ТЫкать, мы с вами не знакомы!
Не учи меня жить. Обращайся во фриланс.
 
Alexey Viktorov:
Не учи меня жить. Обращайся во фриланс.
Я ещё раз прошу, не нужно мне ТЫкать, Я с вами свиней не пас!
 
Vitaly Muzichenko:
Я ещё раз прошу, не нужно мне ТЫкать, Я с вами свиней не пас!
Конечно ты их пас без меня.
 

Концепция написания робота через аналоги OnTrade ошибочна. Тема немного затрагивалась здесь.

Очередной вызов On-функции никак не должен быть связан с предыдущим. Торговая логика не должна зависеть от запоминания чего угодно в конце On-функции.

Например, в MT5 большинство запоминают тикет OrderSendAsync, чтобы проверить его в OnTradeTransaction. Это принципиально неверный подход.


Торговая логика на каждом вызове On-функции должна полностью считывать торговое окружение. Это основной принцип написания торгового робота. При этом в тестере от этого принципа всегда целесообразно отказаться в пользу повышения скорости выполнения без каких-либо потерь, присущих реалу.


Поэтому в тестере OnCloseOrder может быть реализован, например, через запоминание Ticket и его OrderSelect(Ticket, SELECT_BY_TICKET) - обращения к истории нет.


Что же касается боевой торговой логики, то повторюсь, что никакого запоминания не должно быть. Не реклама, пример такого робота висит здесь - каждый раз считывается торговое окружение и по его результату принимаются Order-решения.

 
Andrey Egorov:


Спасибо )

на счету параленъльно работает несколько роботов и они могут тоже делать ордера и менять OrdersTotal()

и переменная total будет обнуляться при перезагрузке терминала, тогда не избежать потерь, можно конечно сделать через файл, но на каждом тике обращаться к файлу тоже не прибавит скорости.

При каждом тике нет смысла обращаться в файл, можно читать его в ините и записывать в деинит, если делать через файл.. а для проверки использовать промежуточный массив
Причина обращения: