← Zurück

Предложение по Trader.IsExportRunning

Сейчас Trader.IsExportRunning возвращает true когда запуск экспорта еще не завершен и экспортируются еще не все таблицы. Это приводит к сбоям в работе стратегий во время перезапуска экспорта. Будет лучше, если это свойство в данном случае вернет false.

War dieses Thema hilfreich?

Thema teilen

Kommentare (4)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Mikhail Sukhov
Mikhail Sukhov

А что за сбой?

Alter
Alter Autor

Ну например в квике оборвалась связь, reconnection manager переподключился и перезапустил экспорт. В какой-то момент уже запустился экспорт всех таблиц, кроме таблицы с позициями. В это время стратегия проверяет, заработал ли экспорт, IsExportRunning возвращает true, стратегия в полной уверенности, что все хорошо, запрашивает позицию и получает устаревшие данные. Дальше происходит все что угодно, вплоть до выставления ненужных заявок на добор позиции и превышения ее лимита. Поэтому хочется иметь IsExportRunning == true только при экспортировании всех предназначенных для вывода таблиц.

Mikhail Sukhov
Mikhail Sukhov

Так просто это не сделать. Дело в том, что нельзя точно сказать, что идет экспорт или нет. Только по косвенным признакам... Как обходной путь - подписаться на событие ITrader.PositionsChanged. А в ReConnectionManager.ConnectionRestored возводить спец. флаг - дожидаться изменения позиции.

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

Alter
Alter Autor

Судя по всему, ждать Changed для всех нужных таблиц - это единственное решение.