Получение стакана без открытия стакана

Страницы: 1
RSS
Получение стакана без открытия стакана, Получение стакана без открытия стакана
 
Мне нужно получить стакан без открытия стакана в Квике.

Я так понял это три основные функции:

-OnQuote
-getQuoteLevel2
-Subscribe_Level_II_Quotes


OnQuote: я так понял - это глоабльная функция Квика, которая вызывается каждый раз на изменение во всех стаканах Квика, открытых и не открытых, всех классов и бумаг.

getQuoteLevel2: заказывает сам стакан по конкретному классу и бумаге и получает таблицу данных стакана, НО только, если стакан открыт в Квик, что очень печально и с какого перепуга нельзя сделать без открытого стакана ?

Subscribe_Level_II_Quotes: а вот эта функция мне что то совсем не понятна. В описании написано, что:


[quote]Функция заказывает на сервер получение стакана по указанному классу и бумаге.[/quote]

Но для работы OnQuote - это не требуется.
Для getQuoteLevel2 - тоже вызов Subscribe_Level_II_Quotes - не требуется.

Так что в итоге делает Subscribe_Level_II_Quotes ?
 
Почему данный код вызывает ошибку: "attempt to index a nil value (local 'local_table_stock')"  ??

Код
function main()


local my_class_code  = "TQBR"
local my_class_paper = "SBER"

local Subscribe_Level_II__BOOLEAN = Subscribe_Level_II_Quotes(my_class_code, my_class_paper)     

message("Subscribe_Level_II__BOOLEAN:" .. tostring(Subscribe_Level_II__BOOLEAN))


if Subscribe_Level_II__BOOLEAN == true then

local local_table_stock = getQuoteLevel2(class, sec)

message("bid_count:" .. tostring(local_table_stock.bid_count))

end





-------------------------
while not stopped do 
sleep(1)
end 
-------------------------



end -- end main()
 
Вы как-то странно воспринимаете документацию.

Терминал - это клиент. Данные на сервере. Поэтому: заказ-получение-обработка. Все как при любом клиент-серверном взаимодействии. Сервер же может и не ответить, например.

Поэтому и сделаны функции заказа потока данных для получения и обработки той или иной информации.
Т.е. нужен стакан по инструменту:

Заказать поток на сервере - Subscribe_Level_II_Quotes
Получить данные о текущем состоянии, если данные заказаны успешно - getQuoteLevel2
Колбек о изменении OnQuote можно использовать как триггер о необходимости повторного считывания данных. Обрабатавать данные в самом колбеке - не очень хорошая затея.
 
Код
local local_table_stock = getQuoteLevel2(class, sec) 
ну так что это за переменные class, sec
Где их инициализация?

Советую Вам использовать любой linter кода. Уйдут такого рода ошибки.
 
Цитата
Nikolay написал:
Код
   local  local_table_stock  =   getQuoteLevel2 (class, sec) 
  
ну так что это за переменные class, sec
Где их инициализация?

Советую Вам использовать любой linter кода. Уйдут такого рода ошибки.
Да, много простых ошибок не подсвечивается. Все заработало.
 
Цитата
Nikolay написал:
Заказать поток на сервере - Subscribe_Level_II_QuotesПолучить данные о текущем состоянии, если данные заказаны успешно - getQuoteLevel2Колбек о изменении OnQuote можно использовать как триггер о необходимости повторного считывания данных. Обрабатавать данные в самом колбеке - не очень хорошая затея.
Я правильно понимаю, что саму getQuoteLevel2 - не возможно связать с каким то конкретным кобеком, чтобы он вызвался по мере готовности данных с сервера ? Только через OnQuote ?
 
Нет. Да и смысла нет, т.к. истории по стакану нет.

getQuoteLevel2 - просто получить текущий стакан на момент запроса. А OnQuote - признак, что стакан изменился. Только признак. Здесь нет такого понятие готовы данные или нет. Пришел колбек OnQuote - значит есть изменения в данных.
 
Цитата
Nikolay написал:
Нет. Да и смысла нет, т.к. истории по стакану нет.

getQuoteLevel2 - просто получить текущий стакан на момент запроса. А OnQuote - признак, что стакан изменился. Только признак. Здесь нет такого понятие готовы данные или нет. Пришел колбек OnQuote - значит есть изменения в данных.
Просто, если нужно сделать срез стакана в произвольный момент времени - то в этом случае без колбека неудобно, нужно в цикле ждать появление данных.
 
Зачем? После заказа данных и начала их поступления, Вы в любой момент времени можете получить данные через getQuoteLevel2. Это будут данные в момент запроса. Это же условно "непрерывный" поток данных.
Т.о. Вы можете "смотреть" на данные хоть каждые 10 млс. Если хватит производительности по их обработке. При этом "слепок" данных может не отличаться от того, что смотрели 10 млс. назад.
Поэтому и удобно и использовать колбек OnQuote для получения сигнала на повторное чтение. А если колбека нет, то данные те же, т.е. не требуется их заново читать.

Есть инструменты, где стакан изменяется раз в 10 минут. Какой смысл читать постоянно стакан. Пришел колбек OnQuote, установили некий флаг, что надо обновить данные, прочитали НОВЫЕ данные. Не пришел - данные те же самые.
 
Понял. Спасибо!
Страницы: 1
Читают тему
Наверх