Курю формат QSH. Есть вопросы.

  1. Аватар Ramis
    Емае. О чем тут вообще речь?:)

    Тимофей Мартынов, обсждение формата файлов привода QScalp. Несколько броков пишут котиры с плазы в этом формате. Весьма полезно от туда выдирать данные для алго тестов.

    Андрей К,
    Андрей, добрый вечер! Напишите пожалуйста на почту pro---@mail.ru нужен ваш совет. Так и не разобрался как написать в личку на форуме
  2. Аватар Yesman
    Вопрос снят: в описании формата прописано что время кадра и файла в зоне (UTC). Не понятно, почему в StockSharp преобразование применяется и для серверного времени заявки, но это их дело :)

    Теперь «бенчмарк» «RTS-6.19.2019-04-08.OrdLog.qsh»:
    парсинг файла c# debug 3-4 сек, release 1-2 сек (возможно, ускорю, когда разберусь с многопоточностью/асинхронностью)
    парсинг и вывод в файл в формате qsh2txt в debug 23 сек release 18 сек (с оптимизацией _вывода_ особо не заморачивался)
    qsh2txt выполняется за 32 сек.

    А еще увидел что у цериха и финама эти логи отличаются на 4 заявки
  3. Аватар tranquility
    Yesman, тут думаю можно ориентироваться для начала на время работы программы qsh2txt. Она, конечно, не за 4 секунды отрабатывает, т.к. пишет большой объем данных на диск. Но вот не думаю что можно все распаковать в ОЗУ (без сохранения всего объема) сильно быстрее чем за 1 секунду. У меня стратегии на сях написанные секунд за 12 отрабатывали вроде, но там тоже достаточно много всего на диск в текстовом виде сбрасывалось. Если облегчить стратегию до минимума и не писать отчет в конце дня может и получится в районе секунды…

    P.S. Сейчас проверил — файл «RTS-6.19.2019-04-08.OrdLog.qsh» у меня «разматывается» за 13 секунд. Сохранение данных на диск отключено, но внутри все пишется в структуры для полного сохранения торгов в собственном формате. Если все это отключить, можно будет что-то выгадать, но есть у меня определенное чувство, что время размотки все равно будет больше 4 сек, причем на десятки %%, а то, может, и сотни.
    P.P.S. Как же мучительно бывает разбираться в своем же коде после того как его забросил на несколько месяцев!
  4. Аватар Yesman
    tranquility,
    оптимизация работы со стаканом мне еще только предстоит. Сейчас пока переписываю читателя — уж больно медленно он работает. Прикинул скорость скачивания — 20 мб сишки с FTP качается примерно 4 сек. Хочу довести скорость парсинга до этих значений — можно будет асинхронно параллельно со скачиванием разбирать файл. Не вижу смысла хранить у себя всё :)
  5. Аватар tranquility
    tranquility,
    Задам открытый вопрос — есть в OrderLog еще что-то, что можно смело пропускать? :)

    Yesman, это все, но нюансов много было разных пока разбирался со всем этим. Я, например, конвертировал формат ордерлога в формат котировок. Чтобы это делалось быстро, проверял, попадает ли текущее изменение в глубину стакана, которая будет в котировках (ордерлог ведь дает стакан на всю глубину и если изменение было вне отслеживаемой области, программа может посылать одинаковый стакан в тестер несколько раз, что излишне, запутывает логику алгоритмов и увеличивает время отлова ошибок при из возможном возникновении). В общем, то еще сношение мух. Когда уже за мои труды придет воздаяние? Причем, деньгами, причем чтобы это напрямую с рынка было, а не около и не через посредников вроде работодателя...)
  6. Аватар Андрей К
    Емае. О чем тут вообще речь?:)

    Тимофей Мартынов, обсждение формата файлов привода QScalp. Несколько броков пишут котиры с плазы в этом формате. Весьма полезно от туда выдирать данные для алго тестов.
  7. Аватар Тимофей Мартынов
  8. Аватар Yesman
    tranquility,
    Задам открытый вопрос — есть в OrderLog еще что-то, что можно смело пропускать? :)
  9. Аватар tranquility
    Скурил его пару месяцев назад. Использовал метод доведения до идеального совпадения с историей что продает мосбиржа (у меня были данные type B), вот их и пытался полностью воспроизвести из qsh за данный день, что в итоге и удалось.
    1) Я эти строчки игнорировал, в данных от биржи их нет.
    2) Там что, формат опять поменялся (я про саму документацию, ту что в pdf-ке небольшой)? Я помню только 2 времени: время кадра (видимо, время на той машине, которая записывала лог, она по идее может в любом часовом поясе находиться, лучше его вручную всегда проверять) и время заявки, оно — время биржи. Причем, если считывать/сохрянять котировки (стакан), то там нет уже биржевого времени последнего обновления стакана — только время на той машине, которая вела запись этого события.
    3) Видимо, чисто статистически не имеет смысла объем сохранять как разницу, т.к. она в любой момент может быть сколь угодно большая, чего не скажешь про цену (весь движ в основном в пределах текущей цены происходит) и ои (разность равна двойному текущему объему сделки, но сумма этих разностей обычно — очень большое число, которое передавть полностью каждый раз не практично).

    Предвосхищу еще вопрос, который неизбежно должен возникнуть — с внесистемными сделками. Их тоже нет в данных от мосбиржи (по крайней мере в type B). А какое значение они могли бы иметь для анализа рынка — самому интересно узнать.

Курю формат QSH. Есть вопросы.

Т.к. спецификации формата и примера от автора не хватило, чтобы понять все особенности, возникла пара вопросов:

1. Наткнулся на кадры с флагом FILL и EndOfTransaction, при этом DealID и dealPrice равны нулю. Показалось странным. Поясните в каком случае такая ситуация возникает?
2. Дата и время кадра и ордера (QshReader.CurrentDateTime, OrdLogEntry.DateTime и Deal.DateTime) хранятся в какой временной зоне? В примере от Морошкина берется просто дата и время, а в QshToStockSharp стоит преобразование DateTime.ApplyTimeZone(TimeHelper.Moscow). Поясните как правильно?
3. Показалось странным что в OrdLogStream поля DealPrice, Price и OI хранятся как приращение к предыдущему, а Amount и AmountRest — в абсолютных цифрах, хотя тип данных у всех — обычный int. Это «исторически сложилось» или есть какая-то глубинная суть, которую я еще не понял?

Спасибо за ответы :)
Чтобы купить акции, выберите надежного брокера: