Непрочитанное сообщение BugsDigger » 21 сен 2019, 08:50
Спасибо за пояснение. Более-менее это (с физическим исполнением заявок) очевидно, однако, насколько я понимаю, роботу это все вроде как до лампочки, т.к. он ведет виртуальную позицию (по крайней мере, везде в документации это подчеркивается).
Хотя, если позиция робота чисто виртуальная, тогда не совсем понятно, откуда ему брать учетную цену позиции... Разве что опять же при маркетных заявках - по последней известной цене, при лимитных - по цене лимита, если он был пройден в текущем обрабатываемом баре...
Эта тактика (или что-то близкое), по всей видимости, реализована в классах, отвечающих за тестирование (они, как видно из дизассемблера, существуют отдельно). Что делается в реале - не знаю.
В АД3 были роботы, работавшие (через COM) в Excel. Там реальные заявки маркировались в примечании к заявке именем робота, так что он был способен выделить из общего списка именно свои заявки и из них извлечь статус исполнеия и цифры. Сейчас комментарий вроде как пустой (или я ошибаюсь ?), и я не знаю, контролирует ли робот реальное исполнение или живет исключительно в своей виртуальной реальности.
Как я уже цитировал из документации, "CurrentPosition() – возвращение объем текущей позиции (штук), которые посчитаны по сделкам только данной стратегии (робота). Робот ведет собственную виртуальную позицию на основании собственных сделок, которая может не совпадать с реальной позицией по субсчету." Это можно понимать по-разному: либо это говорит о чистой виртуальности позиции (тогда не совсем понятно, почему новое значение этой виртуальной позиции не читается через CurrentPosition немедленно после любой операции), либо отмечает только тот простой факт, что на субсчете, где работают несколько роботов и/или дополнительно проводятся ручные операции, суммарная позиция не будет равна позиции в отдельном роботе.