Сейчас Trader.IsExportRunning возвращает true когда запуск экспорта еще не завершен и экспортируются еще не все таблицы. Это приводит к сбоям в работе стратегий во время перезапуска экспорта. Будет лучше, если это свойство в данном случае вернет false.
Комментарии (4)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
А что за сбой?
Ну например в квике оборвалась связь, reconnection manager переподключился и перезапустил экспорт. В какой-то момент уже запустился экспорт всех таблиц, кроме таблицы с позициями. В это время стратегия проверяет, заработал ли экспорт, IsExportRunning возвращает true, стратегия в полной уверенности, что все хорошо, запрашивает позицию и получает устаревшие данные. Дальше происходит все что угодно, вплоть до выставления ненужных заявок на добор позиции и превышения ее лимита. Поэтому хочется иметь IsExportRunning == true только при экспортировании всех предназначенных для вывода таблиц.
Так просто это не сделать. Дело в том, что нельзя точно сказать, что идет экспорт или нет. Только по косвенным признакам... Как обходной путь - подписаться на событие ITrader.PositionsChanged. А в ReConnectionManager.ConnectionRestored возводить спец. флаг - дожидаться изменения позиции.
Насчет этой проблемы я подумаю как ее решить. Не обещаю, что смогу (не тривиально, а значит легко можно наделать ошибок еще больше). Если есть идеи как это реализовать - готов их обсудить.
Судя по всему, ждать Changed для всех нужных таблиц - это единственное решение.