Решил сохранить историческую информацию о стаканах по отдельно взятому инструменту.
Есть 2 обработчика: OnQuote и OnAllTrades. В обоих стоит фильтрация по инструменту. События из них кладутся в некий общий список(std::list<std::any>),
который потом записывается в файл. Очередность в итоговом списке такая же, какая случилась при вызовах коллбэков. Это небольшой кусочек списка, где стакан обозначен знаком =, а сделка знаком *:
=**=****===*====*===*==*=========***=***=**********=====*
Видно, что данные приходят срезами(иначе не было бы нескольких сделок подряд без изменения стакана, такое невозможно). И тут возникает вопрос: а как определить временную метку полученного стакана?? У каждой сделки такая метка есть.
Если покупать подобную информацию(история заявок, из которой можно собрать стакан) на бирже, то она выглядит как список заявок по всем инструментам, где каждая заявка также имеет свою временную метку, по формату аналогичную тому, что используется в сделках. То есть там не сам кадр стакана имеет временную метку, а каждая заявка, и можно собрать стакан самому, и при этом выяснить, какую временную метку ему проставить.
А что в Quik? Сохранить последовательность стаканов я могу, но без временных меток они не имеют много смысла.
Поэтому вопросы к разработчикам:
1) Где-то в недрах ваших систем есть временные метки для стаканов? Ведь биржа время заявки шлет. Если это есть, то почему бы это не передать в тот же коллбэк OnQuote, или в getQuoteLevel2?
2) Если таких временных меток на стакане у вас нет, то как вообще вы синхронизируете тот же стакан и таблицу всех сделок, графики да и все остальное, что имеет метку времени? Или же НИКАК??
Моя задача проста: распределить сделки и полученные стаканы на оси времени в верном порядке. Готов выслушать любые предложения:)
P.S. Если кому интересно: файл с записью такой информации только за вечернюю сессию по одному из инструментов срочного рынка занял 97 Мб.
Есть 2 обработчика: OnQuote и OnAllTrades. В обоих стоит фильтрация по инструменту. События из них кладутся в некий общий список(std::list<std::any>),
который потом записывается в файл. Очередность в итоговом списке такая же, какая случилась при вызовах коллбэков. Это небольшой кусочек списка, где стакан обозначен знаком =, а сделка знаком *:
=**=****===*====*===*==*=========***=***=**********=====*
Видно, что данные приходят срезами(иначе не было бы нескольких сделок подряд без изменения стакана, такое невозможно). И тут возникает вопрос: а как определить временную метку полученного стакана?? У каждой сделки такая метка есть.
Если покупать подобную информацию(история заявок, из которой можно собрать стакан) на бирже, то она выглядит как список заявок по всем инструментам, где каждая заявка также имеет свою временную метку, по формату аналогичную тому, что используется в сделках. То есть там не сам кадр стакана имеет временную метку, а каждая заявка, и можно собрать стакан самому, и при этом выяснить, какую временную метку ему проставить.
А что в Quik? Сохранить последовательность стаканов я могу, но без временных меток они не имеют много смысла.
Поэтому вопросы к разработчикам:
1) Где-то в недрах ваших систем есть временные метки для стаканов? Ведь биржа время заявки шлет. Если это есть, то почему бы это не передать в тот же коллбэк OnQuote, или в getQuoteLevel2?
2) Если таких временных меток на стакане у вас нет, то как вообще вы синхронизируете тот же стакан и таблицу всех сделок, графики да и все остальное, что имеет метку времени? Или же НИКАК??
Моя задача проста: распределить сделки и полученные стаканы на оси времени в верном порядке. Готов выслушать любые предложения:)
P.S. Если кому интересно: файл с записью такой информации только за вечернюю сессию по одному из инструментов срочного рынка занял 97 Мб.