Добрый день.
Пишу робота на S#.
Подписан на событие формирования новой свечи. Timeframe 1 минута.
В момент прихода новой свечи цена close последней свечи отличается от close той же свечи,
полученной с Finam'a на 1-7 пунктов (контракт Si-9.13). Если отключаюсь и
заново подключаюсь, то цены закрытия тех же самых свечей в точности совпадают с ценами
закрытия по данным с Finam'а.
Цены open, high, low также идут с ошибками:
[Количество несовпадений (на примере одного дня)]:
open: 0
high: 17 несовпадений
low: 23 несовпадения
close: 188 несовпадений
Всего 532 бара.
Во время вечерней сессии данные по свечам приходят корректные.
Общение с техподдержкой SmartCOM позволило выделить 2 возможные причины данной проблемы:
1. Либо происходят потери при получении тиковых данных от сервера, на основе которых S# формирует свечи.
2. Либо платформа S# неверно формирует свечи по тем данным, по которым получает данные от серверов.
Учитывая, что после перезапуска приложения, приходят корректные данные о свечах, можно предположить, что более вероятен второй вариант. Чтобы проверить, выполняю подписку на исторические свечи каждый раз после прихода события формирования новой свечи. В обработчике события NewHistoryCandles отслеживаю повторно полученную информацию о серии. Результат: данные не меняются.
Вопросы:
1) Правильно ли я понимаю, что внутри метода, реализующего формирование новой свечи, вызов GetBars осуществляется всего один раз при самом первом запуске приложения, а затем, S# не запрашивает каждый раз сервер о параметрах сформировавшейся свечи, а сам каким-то образом формирует свечи?
2) Как можно вызвать GetBars (или метод, который запросит информацию от сервера посредством GetBars)?
3) В каком событии и как отлавливать пришедшую информацию?