Женя Логинов (Автор тем)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Запрос списка инструментов Lua
 
Есть одно неудобство, связанное с постоянным обновлением списка опционов руками ( я знаю что есть возможность обновлять их по сообщению системы). Но мне бы хотелось получать список всех опционов, допустим, на фьючерс РТС - к примеру, и потом уже подписываться на интересные даты и страйки. Посмотрел мануал по Луа, там есть STRING getClassesList (), но он вернет - OPTEXP,USDRUB,PSOPT,PSFUT,SPBFUT. из него я допустим беру SPBFUT и передаю его в sec_list = getClassSecurities("SPBFUT"). в итоге получу кучу всего: RSH3,VBZ2,O4Z2,O2Z2,SiM3,SiH3......из всего разнообразия надо вспомнить какой код у ближайщего фьюча, и потом как-то запросить опционы с подходящими датами и страйками...
Существуют ли реализованные способы?
Или проще сначала спарсить сайт биржи, а потом уже подписываться на опционы?
Спасибо
onParam, как работает?
 
Подскажите по onParam. Вчера при просмотре файла ордеров по опционам заметил нечто странное. Скрипт по onParam проверяет класс и если класс - опционы, то запрашивает данные по цене и виду опциона, затем записывает строку в файл. В настройках самого квика подписан только на оционы- сбер си и золото. Так вот сама суть наблюдения: в периоды активного изменения данных файл строится по хронологии, по столбцу времени все выглядит правильно, но потом появляются целые блоки, в которых видно что onParam, проходится в алфавитном порядке по опционам и записывает старые данные- это я понял по времени изменения котировки. Потом опять появляются данные с текущим временем, затем снова блок старых данных...могу прислать скрипт, настройки квика и файл с данными.

скрипт:
Код
function main()
   op = io.open("D:\\market_orders\\orders_op.csv","w")
   io.output(op)
   op:write("code;strike;time;q_bid;bid;offer;q_offer;theor_price;go_sell;go_buy;exp_date\n")
   message("SCRIPT IS RUNNING!")
    while IsRun do
   end
end


function OnParam( class, sec )
   if class =="SPBOPT" then
      ttime = getParamEx(class,  sec, "CHANGETIME")
      tq_bid = getParamEx(class,  sec, "BIDDEPTH")
      tbid = getParamEx(class,  sec, "BID")
      toffer_l = getParamEx(class,  sec, "OFFER")
      tq_offer = getParamEx(class,  sec, "OFFERDEPTH")
      strike = getParamEx(class,  sec, "STRIKE")
      theor = getParamEx(class,  sec, "THEORPRICE")
      exp = getParamEx(class,  sec, "EXPDATE")
      gobuy = getParamEx(class,  sec, "BUYDEPO")
      gosell = getParamEx(class,  sec, "BGONP")
      op:write(sec,";",tonumber(strike.param_value),";",tonumber(ttime.param_value),
             ";",tonumber(tq_bid.param_value),";",tonumber(tbid.param_value),
             ";",tonumber(toffer_l.param_value),";",tonumber(tq_offer.param_value),
             ";",tonumber(theor.param_value),
             ";",tonumber(gosell.param_value),";",tonumber(gobuy.param_value),
             ";",tonumber(exp.param_value),"\n")
   end
end
вот что только что записал:
code;strike;time;q_bid;bid;offer;q_offer;theor_price;go_sell;go_buy;exp_date
...
RI147500BT9;147500;192814;3;11880;12200;3;12020;20867.82;15788.69;20190815
RI150000BT9;150000;192857;3;14320;14640;3;14470;20929.07;17960.38;20190815
RI152500BT9;152500;185157;10;200;149990;3;16950;20952.51;19481.91;20190815
RI155000BT9;155000;190009;20;18490;20650;20;19440;20964.48;20365.78;20190815
RI157500BT9;157500;185157;10;60;0;0;21930;20978.17;20811.5;20190815
RI160000BT9;160000;190009;15;23220;25910;15;24430;20979.02;21035.9;20190815
RI162500BT9;162500;185131;1;30;0;0;26930;20980.91;21146.42;20190815
RI165000BT9;165000;185131;1;30;0;0;29430;20983.77;21203;20190815
RI167500BT9;167500;185131;1;30;0;0;31920;21001.68;21219.32;20190815
RI170000BT9;170000;185131;1;30;0;0;34420;21006.41;21236.55;20190815
RI172500BT9;172500;185131;1;30;0;0;36920;21012.09;21246.78;20190815
RI175000BT9;175000;185131;1;30;0;0;39420;21018.71;21253.16;20190815
RI177500BT9;177500;185131;1;30;0;0;41920;21026.28;21257.29;20190815
RI180000BT9;180000;185131;1;30;0;0;44420;21034.75;21260.09;20190815
RI182500BT9;182500;185131;1;30;0;0;46920;21044.09;21262.05;20190815
...
стал ли Квик быстрее?
 
С 18 февраля биржа отменила 3мс батчинг(вроде они так его называют)котировок. И соответственно сервера теперь отправляют изменения по заявкам онлай так сказать.(Об этом написала сама биржа на своём сайте). Я ожидал увидеть увеличение количества изменений по ордерам, но все также получаю 4-8 строчек за секунду. К ого просить ускориться? Брокера или арку?
Данные из стакана котировок
 
Прежде чем писать, я погуглил и почитал форумы. Но ответ на глаза не попался :sad: . Вот код:
Код
local class_code = "SPBFUT"
local sec_code = "SRZ8"

function main()
    if Subscribe_Level_II_Quotes(class_code, sec_code) then
        while IsRun do
        end
    end
end

function OnQuote(class_code, sec_code)
    ql2 = getQuoteLevel2(class_code, sec_code)
    --bidCount = ql2.bid_count
    --message(ql2.bid[0+bidCount].price ..'-' .. ql2.bid[0+bidCount].quantity)
    message(ql2.offer[1].price ..'-'.. ql2.offer[1].quantity)
end

решил сравнить со стаканом котировок, вроде совпадает, НО если начать просматривать сообщения по очереди, то проскакивает котировка типа 19588 или 19533 - видать из дна стакана.
Как такое может быть, если выводится только первая строка?
тоже самое происходит и при просмотре БИДа

По поводу манула по QLua - в примере можно было бы указать как обратиться к строке таблицы через индекс строки (да до меня не дошло) - пришлось искать по форумам.
Помогите разобраться почему проскакивает левая цена?
Спасибо.
версия 7.19.0.51
заполнение созданной таблицы
 
потаюсь реализовать свое видение тестирования системы. пришел к выводу, что неплохо было бы сигналы от ТС выносить на график инструмента. Я представляю себе это так. эксель обсчитывает данные, записывает параметр сигнала - время, цена, кол-во- в файл, а Квик забирает записанную строчку в созданную таблицу, и по данным этой таблицы строиться уже индикатор в реальном времени. в общем так работает нанесение на график меток исполненных сделок (треугольник вниз-вверх).
вот мне интересно, если квик забирает строчку из файла .tri и она записывается в таблицу заявок, то как из произвольного файла записать строку (состоит из данных время, цена, объем) в созданную таблицу в Квик.
такое "кривое" исполнение потому, что не силен в программировании, и все реализовано на Квик-ДДЕ-Эксель-.tri
Страницы: 1
Наверх