Данные из стакана котировок

Страницы: 1
RSS
Данные из стакана котировок
 
Прежде чем писать, я погуглил и почитал форумы. Но ответ на глаза не попался :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
 
Котировка на момент тестирования - 19 200!
 
[img]file:///F:/lua2018/offer.png[/img]
 
Возможно, кто-то отправил рыночную заявку большого объёма и собрал значительную часть стакана.
 
Женя Логинов,

У Вас в коде нет никакой проверки на инструмент, а значит легко может попасть цена от другого инструмента, если по нему открыт стакан в терминале или его заказал другой Lua скрипт.
Для решения добавьте проверку как в примере из документации
Код
function OnQuote(class, sec )   
  if class =="SPBFUT" and sec == "RIZ2" then
    ql2 = getQuoteLevel2(class, sec)   
  end
end


 
Описание лабораторной установки:квик версии см. выше. Через настройки получения данных отключены все рынки кроме ФОРТС, в рынке выбран только один инструмент - фьюч сбера; выбраны параметры лучшие цены спроса и предложения, и размеры спроса и предожения. Обезличенные сделки-отключены все рынки.
Таким образом, думаю я исключил получение левых данных. В терминале открыт стакан по выбранному фьючерсу.
В коде я задал переменные для класса и кода бумаги. И если удалось подписаться на заданный стакан, то ду вайл...
И такой ещё вопрос. Если я хочу подписаться на полные доски опционов по двум фьючерсам, на десяток стаканов по акциям и три десятка по облигациям- в сумме может превысить порог в 200 стаканов, про который написано в мануале по квику, или это количество установлено для рабочего места,- то как мне оптимально записать подписку на все эти стаканы, проверку их в ОнКвоут- очередью?  
 
Цитата
Женя Логинов написал:
Описание лабораторной установки:квик версии см. выше. Через настройки получения данных отключены все рынки кроме ФОРТС, в рынке выбран только один инструмент - фьюч сбера; выбраны параметры лучшие цены спроса и предложения, и размеры спроса и предожения. Обезличенные сделки-отключены все рынки.Таким образом, думаю я исключил получение левых данных. В терминале открыт стакан по выбранному фьючерсу.В коде я задал переменные для класса и кода бумаги. И если удалось подписаться на заданный стакан, то ду вайл...

и тем не менее, просьба выполнить рекомендацию.

Цитата
Женя Логинов написал:
И такой ещё вопрос. Если я хочу подписаться на полные доски опционов по двум фьючерсам, на десяток стаканов по акциям и три десятка по облигациям- в сумме может превысить порог в 200 стаканов, про который написано в мануале по квику, или это количество установлено для рабочего места,- то как мне оптимально записать подписку на все эти стаканы, проверку их в ОнКвоут- очередью?  

Это максимальное количество разрешенное конкретному пользователю. Контролирует его сервер QUIK а не рабочее место.
И обойти это ограничение нельзя, только если брокер установит Вам другое ограничение.
 
То есть даже для 10 бумаг нужно прописать все 10 проверок- выглядит не очень удобно. Или же есть другой способ?Спасибо
 
А таблица текущих параметров имёт ограничения по количеству бумаг? Можно ли в одном скрипте сочитать работу со стаканами нескольких бумаг и обращение getParamEx?
 
Цитата
Женя Логинов написал:
То есть даже для 10 бумаг нужно прописать все 10 проверок- выглядит не очень удобно. Или же есть другой способ?Спасибо
Вполне логично и правильно то что программа должна проверять поступающие ей данные, а не надеяться на пользователя.
Вы же в любом случае в программе будете где то прописывать нужные Вам инструменты.
Будь то таблица или просто строка со списком инструментов, но ведь будет же.
Что мешает проверить есть ли входящий sec_code в этом списке?


Цитата
Женя Логинов написал:
А таблица текущих параметров имёт ограничения по количеству бумаг?
Нет не имеет

Цитата
Женя Логинов написал:
Можно ли в одном скрипте сочитать работу со стаканами нескольких бумаг и обращение getParamEx?
Да можно.
 
Цитата
Женя Логинов написал:
Через настройки получения данных отключены все рынки кроме ФОРТС, в рынке выбран только один инструмент - фьюч сбера; выбраны параметры лучшие цены спроса и предложения, и размеры спроса и предожения. Обезличенные сделки-отключены все рынки.
Таким образом, думаю я исключил получение левых данных. В терминале открыт стакан по выбранному фьючерсу.
В коде я задал переменные для класса и кода бумаги. И если удалось подписаться на заданный стакан, то ду вайл...
Это всё равно, что вместо вентиля на смесителе, перекрывать подачу на водоснабжающей станции, чтобы уменьшить напор воды в кране.

Цитата
Женя Логинов написал:
То есть даже для 10 бумаг нужно прописать все 10 проверок- выглядит не очень удобно. Или же есть другой способ?Спасибо
Можно создать таблицу с ключами из seccode+classcode и значениями в виде методов, которые выполняют нужные дейтсвия, и вызывать эти методы прямо в onQuote, если не жалко основной поток QUIKа.
 
Такой ещё вопрос. Есть ситуация, когда я кидаю в стакан заявку по оционам, по цене хуже рынка-она сразу в таблице заявок принимает статус исполнена. Но в стакане она не отразилась-или глаз не успел увидеть)такого рода ситуации лучше отлавливать ОнКваут? Или же ОнПарам?
 
если кидаете заявку хуже рынка - она исполняется.

вы получите колбеки

onorder - о том, что заявка доехала до биржи
ontrade -  о том, что произошла сделка.
 
Вопрос в том, будут ли данные в ленте истории стакана, если я не видел её в стакане)
 
Цитата
Женя Логинов написал:
Вопрос в том, будут ли данные в ленте истории стакана, если я не видел её в стакане)
Стакан, также как и таблица текущих торгов транслируется срезами, т.е. раз в период. Если заявка исполняется сразу же то вполне возможно что она не успеет попасть в стакан.
 
Это поднимает вопрос о том, как получать максимально быстро изменения в котировках, если данные отправляются срезами? Здесь уже было обсуждение кто быстрее-получилось что ОнКвоут быстрее. А теперь получается что из-за срезов разницы может и не быть...
 
И вообще получается, что если сделка прошла до того как котировка попала в стакан- тогда она НЕРЫНОЧНАЯ! И могут быть правовые последствия..
 
Я просто хочу получить однозначный ответ- самый быстрый способ получать по возможности полные данные по котировкам инструмента это...
 
Сначала заявка на бирже проверяется на возможность исполнения, лишь затем не исполненные заявки попадают в очередь - т.н. стакан торгов.
 
Цитата
Женя Логинов написал:
И вообще получается, что если сделка прошла до того как котировка попала в стакан- тогда она НЕРЫНОЧНАЯ!

Это всё равно, что считать каплю не дождевой из-за того, что она стекла с лобового стекла автомобиля до того, как её смахнул стеклоочиститель.

Стакан отображается срезами, но заявки в нём исполняется непрерывно.
Страницы: 1
Читают тему (гостей: 1)
Наверх