Определить очередь моей заявки в стакане в любой момент времени.

Страницы: 1
RSS
Определить очередь моей заявки в стакане в любой момент времени., Определение очереди.
 
Добрый день.

Вопрос в названии темы. При постановке заявки я могу посчитать какое количество контрактов до меня по этой же цене. Но стакан ведь "живой", данные меняются, кто-то снимает заявки, кто-то ставит. Как в любой момент времени посчитать сколько контрактов передо мной?
 
Здравствуйте,
Никак. Ибо биржа эту информацию не транслирует
 
Простого решения нет, но первая мысль, которая приходит в голову следующая:
Предположим, что Вы выставили заявку на покупку (bid) по классу SPBFUT инструмент RIZ6, по цене 123.45 (my_order_price) с количеством 10 (my_order_qty)
Код
is_run = true

_bid = {}

function OnQuote(class, sec)
  if class =="SPBFUT" and sec == "RIZ6" then
    ql2_bid = getQuoteLevel2(class, sec).bid
    table.insert(_bid, ql2_bid)
  end
end

function OnStop(signal)
  is_run = false
end

function main()
  
  while is_run do
  
    if #_bid == 1 then 
      for k,q in ipairs(_bid[1]) do
        if q.price == my_order_price and q.quantity == my_order_qty then
          message(string.format("Моя заявка %i в очереди", k))
        elseif q.price == my_order_price and q.quantity > my_order_qty then
          message(string.format("Моя заявка %i в очереди, но так же по данной цене еще %i лотов не моей заявки", k, q.quantity - my_order_qty))
        end
      end
      _bid = {}
    end
    
    sleep(100)
  end
end
Код не проверял, это просто пример логики решения задачи, ее можно расширять, с учетом, что заявка может быть не только на покупку, а так же заявка может исполниться, т.е. нужно вводить проверку, что заявка еще активна, + нужно учесть, что некоторые рынки транслируют не полный стакан, например, 10x10 и Ваша заявка может выйти за эти границы и не отображаться в стакане, тогда уже точно не узнать какая она в очереди, но точно можно будет утверждать, что она больше 10. Также если торговля по инструменту оживленная, OnQuote() может сработать очень часто, и тогда в таблице _bid будет не одна запись, и в этом случае их придется обрабатывать все в цикле. Аналогично, можно реализовать проверку очередности при срабатывании OnOrder(), т.е. в тот момент, когда Ваша заявка только выставилась.
Перед тем как задать вопрос, убедитесь, что решение Вашей задачи не описано в официальном мануале - 'Использование Lua в Рабочем месте QUIK.pdf' https://arqatech.com/upload/Public/quik_lua.zip
 
берете стакан и ищите свою заявку по цене.
это и будет ваш номер в стакане.
 
Здравствуйте.
Возможно, ранее обсуждался данный вопрос, Да, видимо, остался в архиве, который недоступен.
Суть в следующем.
Порой в OnQuote приходит количество строк на покупку/продажу больше нормального 20/50.
Пожалуйста посоветуйте как интерпретировать такие данные. Какие строки из 52-х bid (например) верны? Как понимать в этом случае спред?
Заранее спасибо.
Страницы: 1
Читают тему
Наверх