← Back

Не видит тики???

Стокшарп не видит тики с одинаковым временем. Что делать?

Тиковые данные

Screenshot_10.png

То, что вывел

Screenshot_11.png

Все миллисекунды разные, хотя в истории встречаются и одинаковые

Надеюсь Вы мне ответите)

Comments (11)

Login or Create account, Log in or register to leave a comment

Sprite
Sprite

А ещё такие тики стокшарп не умеет рисовать в разных свечках.

Sprite
Sprite

...разумеется если это не таймфрейм свечки...

Greenn
Greenn Author

sprite: ...разумеется если это не таймфрейм свечки...

Есть ли решение такой ситуации?

Sprite
Sprite

Greenn: Есть ли решение такой ситуации? То что пропускаются тики - не знаю, у меня вообще бардак с тиками какой-то. Транзак коннектор, когда сразу после торговой сессии соединяется и заливает данные в локальное хранилище для истории - иногда дублирует тики, иногда пропускает, я забил и вручную их фильтрую. В реалтайме (во время сессии) не отслеживал. А вот когда тики с одинаковым или очень близким временем надо делить на разные свечи - я добавляю к каждой такой следующей свече 1 тик к дате закрытия от предыдущей (DateTime.AddTicks(Int64)), если алгоритм построения свечи предполагает отрисовку нескольких свечек в очень короткий промежуток времени - то делаю это с каждой. Такое часто бывает во время открытия сессии (я рисую свечки по алгоритму который в ATAS называется RangeXV, это типа Range но с небольшим изменением в логике). На графике это выглядит как куча свечек с одинаковым временем в одну секунду и длительность каждой не видна, но хоть так. На картинке - открытие вечерки на фортс, все свечки в одной секунде. Ответов уже давно не жду и вопросов не задаю ((( У вас же, судя по активности на форуме - активная фаза разработки/изучения/исследования платформы. Желаю удачи!

Greenn
Greenn Author

sprite:

Greenn: Есть ли решение такой ситуации? То что пропускаются тики - не знаю, у меня вообще бардак с тиками какой-то. Транзак коннектор, когда сразу после торговой сессии соединяется и заливает данные в локальное хранилище для истории - иногда дублирует тики, иногда пропускает, я забил и вручную их фильтрую. В реалтайме (во время сессии) не отслеживал. А вот когда тики с одинаковым или очень близким временем надо делить на разные свечи - я добавляю к каждой такой следующей свече 1 тик к дате закрытия от предыдущей (DateTime.AddTicks(Int64)), если алгоритм построения свечи предполагает отрисовку нескольких свечек в очень короткий промежуток времени - то делаю это с каждой. Такое часто бывает во время открытия сессии (я рисую свечки по алгоритму который в ATAS называется RangeXV, это типа Range но с небольшим изменением в логике). На графике это выглядит как куча свечек с одинаковым временем в одну секунду и длительность каждой не видна, но хоть так. На картинке - открытие вечерки на фортс, все свечки в одной секунде. Ответов уже давно не жду и вопросов не задаю ((( У вас же, судя по активности на форуме - активная фаза разработки/изучения/исследования платформы. Желаю удачи!

Через окно "Ответить" все таки увидел) Благодарю за ответ

Sprite
Sprite

картинка почему-то не прилепилась к предыдущему посту image4853.png

Greenn
Greenn Author

sprite: картинка почему-то не прилепилась к предыдущему посту image4853.png

Не вижу, что Вы написали( Screenshot_13.png

Sprite
Sprite

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

Greenn
Greenn Author

sprite: Не за что. Поясню для размышления с тиками по российскому срочному рынку - я выкачиваю их стокшарп коннектором сразу же после закрытия сессии, параллельно выкачиваю их с сайта финама без стокшарповского кода, затем сравниваю по номерам и сращиваю, удаляя из выкачанных стокшарпом дубликаты. Всё это потому что финам не выкладывает значение открытого интереса, так бы я стокшарповский коннектор для этого вообще не использовал. В итоге получается более менее правдивый микс. Такая вот карусель (((

Не поделитесь кусочком кода, как Вы выкачиваете используя коннектор? Хотя бы примерно, чтобы иметь представление)

Sprite
Sprite

Вкратце логика такая:

Подписываемся на сообщения, сохраняем их в локальную коллекцию _connector.NewMessage += (message) => { if (message is ExecutionMessage executionMessage) { _executionMessages.Add(executionMessage); } };

Подписываемся на тики. Если указать конечную дату то тики получены не будут, возможно это только для Transaq так как сервер хранит тики только за день, возможно такая логика для всех коннекторов. Документация мягко говоря очень скудная: _connector.SubscribeTrades(_security, _from);

После того как тики получены сохраняем их в заранее определенное хранилище (Логику выявления что тиков на сегодня больше не будет постить не буду, но смысл такой - коннектор не знает что больше тиков не будет и продолжает слушать. Я через таймаут в пару минут от последнего тика просто считаю что тики поступать больше не будут, разумеется это не работает на малоликвидных инструментах и надо изобретать что-то другое.) _storageRegistry.GetTickMessageStorage(_securityId).Save(_executionMessages);

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

Greenn
Greenn
Greenn Author

Спасибо) Буду пробовать