Андрей Шабанов та же проблема.
Аналогично, в 18:45 Гидра вылетает после того как несколько раз приходят ошибки, что бид больше оффера.
Вообще, не знаю, рассматривали ли вы такой вариант, но это можно вынести в настройки, пусть пользователь сам решает останавливать ли закачку или нет. В том, что бид больше оффера не всегда есть проблема. Например, в пред.торговые полчаса на споте все трейдеры ставят заявки, а сделки еще не проходят. Там бид больше оффера может быть спокойно, это не ошибка.
К тому же, пользователь сам может выбирать что он потом с этими стаканами будет делать. Их можно чистить самому или алгоритм обработки данных строить так, чтобы обходить такие вещи. А так получается, данных совсем нет, что есть грустно.
Вы постоянно модифицируете работу с данными, уже очень много сделали, молодцы.
К сожалению, я .NET только осваиваю, надеюсь выйти на хороший уровень и помочь. Из тех идей, которые есть по обработке данных по мимо инструмента чистки стаканов от ситуаций "оффер ниже бида", есть следующие (возможно, у кого-то дойдут руки и желание их сделать):
- Удаление плохих тиков (например, сделка была на 20% выше/ниже предыдущей)
- Проверка и удаление дублированных данных (это алгоритм может быть использован также в следующем пункте)
- Склеивание файлов, записанных их разных источников (как клеить стаканы, учитывая, что время пишется локального компьютера, я не знаю, но идеи есть)
- Приведение времени записанных стаканов ко времени проведения сделок (если это вообще возможно)
- Фильтрация стаканов (аналог создания свечек по сделкам, но тут еще проще - просто отфильтровать часть данных) по разным таймфреймам
- Заполнение данных по пустым дням из других источников (я так понял, что это есть в склеивании данных, но еще не тестировал, можно ли не склеивая заполнить пропуски)
Так образом, блок с манипуляциями будет, на мой взгляд достаточно полным и проведя их можно подойти к тестированию стратегий, будучи уверенным, что данные корректные, полные, время различных видов данных совпадает со временем сервера. Хотя насчет последнего не так все просто, ведь мы видим стакан уже с задержкой и когда он был на сервере биржи мы не знаем точно, а вот время сделки у нас серверное.