Подскажите, пож-та, если кто знает, где можно раздобыть исторические тики FORTS, с миллисекундами, номерами сделок и открытым интересом, т.е. такие как в Квике. Сразу, про Финам знаю, но там не то, время урезано, ОИ нет, внебиржевых нет, спредов нет.
Нужно именно как в Квике, всего несколько дней не хватает из 2019 и 2020 года, но весь FORTS, по всем инструментам FUT и OPT. Может у кого свой архив есть, но тоже не все данные, могу поменяться.
Подскажите, пож-та, если кто знает, где можно раздобыть исторические тики FORTS, с миллисекундами, номерами сделок и открытым интересом, т.е. такие как в Квике. Сразу, про Финам знаю, но там не то, время урезано, ОИ нет, внебиржевых нет, спредов нет.
Нужно именно как в Квике, всего несколько дней не хватает из 2019 и 2020 года, но весь FORTS, по всем инструментам FUT и OPT. Может у кого свой архив есть, но тоже не все данные, могу поменяться.
1. Система/Заказ данных/Поток котировок... нужные параметры и инструменты на классе А где вообще хранятся все эти настройки?
2. И как их можно вручную сохранить/загрузить, ибо они регулярно и непредсказуемо сбрасываются? (функционал через меню "сохранить настройки в файл/загрузить из файла" на эти настройки не влияет)
В соседних ветках много сообщений о проблемах с версией 8.5, но системы у всех сложные, грешить не понятно на что..
Вот очень простой скрипт, который рушит Квик во время торгов. Упасть может и не сразу, поработав недолго, видимо зависит от интенсивности потока тиков. Ошибок в скрипте нет, он элементарный. Да если бы и были ошибки, то рушиться весь Квик не должен, только скрипт. Для 100% краха можно перезаказать данные текущей сессии. Тогда упадет сразу.
Код
local ticksIn = 0
function OnAllTrade(tick)
if (math.fmod(ticksIn, 5000)==0) then
message("OnAllTrade " .. ticksIn .. " tick: " .. tostring(tick.trade_num))
end
ticksIn = ticksIn + 1
end
mainRun = false
function OnStop(flag)
message("OnStop")
mainRun = false
return 3000;
end
function main()
mainRun = true
message("main run...")
local n = 0
while mainRun do
local ticksNum = getNumberOf("all_trades")
if (ticksNum > 0) then
local tick = getItem("all_trades", ticksNum - 1);
if (math.fmod(n, 1000) == 0) then
message("AllTrades num: " .. ticksNum .. " tick: " .. tostring(tick.trade_num))
end
end
n = n + 1
sleep(1)
end
message("main exit")
end
1. Ошибка: - Версия 8.4.1.6 (вообще любая) - Выключить "Умный" заказ параметров, отключить заказ всех параметров (все галки убраны) - Перезаказать данные текущей сессии - Открыть таблицу Текущих торгов - Видим большинство параметров пустые, но некоторые есть (видимо статичные) - Например "Дата торгов" (TRADE_DATE_CODE) и она правильная (еще тип инструмента и еще несколько) - Попытаться получить этот параметр getParamEx2(marketCode, secCode, "TRADE_DATE_CODE") или getParamEx, не важно - В ответ - Пусто - Параметр как бы есть и как бы его нет.
Любопытно, что параметр "Дата торгов" вообще отсутствует в списке параметров для заказа, т.е. заказать его явно как бы и нельзя. Но! Если включить в настройках заказ хотя бы одного любого другого параметра, то и "TRADE_DATE_CODE" начнет нормально возвращаться через getParamEx2. Аналогично SECTYPESTATIC будет нормально читаться только если включить заказ любого другого параметра, не включая даже при этом заказ параметра "Тип инструмента". Признаете вышеуказанное поведение ошибочным?
2. Вообще, что за такие static параметры? Может есть смысл выдавать их в составе getSecurityInfo()?
3. SECTYPESTATIC, SECSUBTYPESTATIC (и т.п.) - строковые, и они как бы есть всегда. Каким образом они определяется? Ведь не строкой же с сервера приходят? Значит есть исходные кодовые поля? Как их получить?
1. Открытых таблиц всех сделок нет. В настройках Quik установить запрос всех (обезличенных) сделок по классу - Сделки не загружаются (можно проверить через LUA, т.к. открытых таблиц нет). Зайти снова в настройки - все галочки запроса сделок стоят как и были. Видимо ОШИБКА поведения интерфейса, учитывая неявную логику формирования потока всех сделок Квика.
2. Открыты 2 таблицы всех сделок: в одной все сделки по классу (без фильтра по инструментам), в другой тоже сделки по тому же классу, но с фильтром по отдельным инструментам. В настройках стоит запрос всех сделок по классу (без фильтра), пока все ок, поток идет. Открыть настройки 2-ой таблицы (которая с фильтром по инструментам) - и просто закрыть ее по ОК, ничего не меняя. В итоге ОШИБКА: фильтр по инструментам из 2-ой таблицы накладывается на весь поток сделок, что видно и в запроса всех сделок, а 1-я таблица хоть и без фильтра, но туда сделки соотв. перестают приходить.
3. Просьба объяснить, если запрос всех сделок происходит неявно и только из реально открытых таблиц всех сделок, то зачем вообще тогда нужен диалог настройки заказа данных потока всех сделок???
4. Напрашивается доработка аналогично запроса параметров: "Исходя из открытых таблиц" / "исходя из настроек заказа данных потока всех сделок".
ОШИБКИ - просьба признать критичными и оперативно поправить. Доработку - запланировать хотя бы на ближайшую пятилетку.
Хочется поделиться мнениями с коллегами по цеху (с трейдерами, не с техподдержкой).
Работаю над таким безостановочным режимом своей системы, что называется 24х7, всегда включена. Используется Quik+QLua. Но вот чем дальше в лес... Нескончаемый поток проблем, которые все изощреннее приходится преодолевать, что уверенности в стабильной работе системы все меньше и меньше.
Если кто двигается в подобном направлении, не посещают мысли, что направление разработки такой безостановочной автоматической системы выбрано в корне не верно? Что Quik+QLua для этого просто не подходят.
Тут нет задачи обсуждать конкретные проблемы и способы их решения. Интересуют мнения в целом. С одной стороны, Quik нивелирует разнообразные нюансы биржи и ее протоколов, приводя все "к одному знаменателю", дает простой скриптовый язык. Но с другой стороны Quik накладывает свои нюансы, обусловленные внутренней архитектурой платформы, хранением данных, ограниченностью АПИ, отсутствием настоящей мультипоточности и т.п. И складывается ощущение, что будет гораздо дешевле (время разработки - тоже деньги и не малые) и эффективнее разрабатывать систему на прямом доступе к бирже. Вопрос тут не в скорости (тягаться с современными HFT смысла особого не вижу), вопрос только в стабильности и надежности. Пусть даже и придется тогда на более низком уровне писать систему.
Охота услышать мнения и, главное, опыт коллег по использованию Quik+QLua для систем 24х7...
1. В транзакции, приходящей по OnTransReply есть поле flags. Что означают установленные там флаги?
2. Что означают все остальные поля транзакции, передаваемой в OnTransReply? (в документации есть описание файла .tro, но там, мягко говоря, почти все не то)