вроде бы всё правильно, но данные приходят с нулями. ФОРТС включен птичками, время - торговое.
Пользователь
Сообщений: Регистрация: 23.01.2015
26.01.2017 20:26:05
Здравствуйте, Попробуйте так:
Код
function main()
class="SPBFUT"
sec="SRH7"
s=Subscribe_Level_II_Quotes(class, sec)
toLog (log, s) --s как и положено true
sleep(1000)
qt=getQuoteLevel2(class, sec)
toLog (log, qt) --qt выглядит так: bid_count=0.000000;offer_count=0.000000;
Unsubscribe_Level_II_Quotes(class, sec)
end
Пользователь
Сообщений: Регистрация: 05.02.2015
26.01.2017 21:46:50
Да, дело было в sleep надо ждать пока стакан придёт
Пользователь
Сообщений: Регистрация: 05.02.2015
26.01.2017 21:52:36
Ещё вопрос. У меня очень длинный тикер лист.
"ABRD,AESL,AGRO,ALBK,ALNU,AMEZ,APTK,AQUA,.......................... и до конца класса TQBR
в брокере Неттрейдер квик НЕ выдавал ошибку "Превышено число открытых стаканов", а в брокере Открытие появляется такая ошибка. Это зависит от настроек брокера? У всех разное число стаканов можно открыть? Поэтому и пришлось использовать Unsubscribe_Level_II_Quotes(class, sec) внутри прохода каждой акции
Пользователь
Сообщений: Регистрация: 23.01.2015
26.01.2017 22:02:24
Цитата
Космонавт написал: Это зависит от настроек брокера?
Да верно.
Пользователь
Сообщений: Регистрация: 05.02.2015
26.01.2017 22:06:07
И ещё вопрос. Он не праздный. Может быть у дохлого брокера с одним сервером это будет проблемой.
Когда я заказываю данные с сервера, например, стакан, это создаёт нагрузку на сервер брокера? ну например бесконечный цикл:
Код
class="SPBFUT"
sec="SRH7"
for i=1,10000000000000000000 do
qt=getQuoteLevel2(class, sec)
end
Вредит ли это способности брокера обслуживать других клиентов? Например отправка заявок бесконечным потоком точно вредит. У других клиентов заявки будут дольше улетать на биржу.
Пользователь
Сообщений: Регистрация: 05.02.2015
26.01.2017 22:08:32
дополнительный вопрос. тот же цикл, но при этом постоянно подписываясь на стакан, и в конце итерации отписываясь?
Пользователь
Сообщений: Регистрация: 23.01.2015
26.01.2017 22:59:37
Космонавт, Если заказать большое количество стаканов, то да это создаст какую-то нагрузку на сервер брокера. Если постоянно заказывать и отписываться то нет. если просто дергать значения функцией getQuoteLevel2 то брокер этого даже не заметит
Пользователь
Сообщений: Регистрация: 09.02.2015
QUIK software testing
27.01.2017 05:23:26
Цитата
Космонавт написал: И ещё вопрос. Он не праздный. Может быть у дохлого брокера с одним сервером это будет проблемой.
Когда я заказываю данные с сервера, например, стакан, это создаёт нагрузку на сервер брокера? ну например бесконечный цикл:
Код
class = "SPBFUT"
sec = "SRH7"
for i = 1 , 10000000000000000000 do
qt = getQuoteLevel2 (class, sec)
end
Вредит ли это способности брокера обслуживать других клиентов? Например отправка заявок бесконечным потоком точно вредит. У других клиентов заявки будут дольше улетать на биржу.
Добрый день. Предполагаю, что Вы таким способом реализовываете проверку о появлении данных по стакану после его заказа с сервера? Если это так, то посоветую Вам использовать функцию обратного вызова OnQuote(), которая будет вызвана сразу после прихода слепка заказанного стакана, а уже внутри функции OnQuote(), например, запоминать флаг, что слепок по такому-то инструменту и классу получен.
Перед тем как задать вопрос, убедитесь, что решение Вашей задачи не описано в официальном мануале - 'Использование Lua в Рабочем месте QUIK.pdf'
Пользователь
Сообщений: Регистрация: 05.02.2015
27.01.2017 18:15:13
Nikolay Pavlov,срабатывания будут происходить часто, а мне нужно обращаться к стакану существенно реже, чем приходят обновления.
Пользователь
Сообщений: Регистрация: 09.02.2015
QUIK software testing
30.01.2017 06:36:51
Цитата
Космонавт написал: Nikolay Pavlov,срабатывания будут происходить часто, а мне нужно обращаться к стакану существенно реже, чем приходят обновления.
Добрый день. Язык Lua - интерпретируемый язык, Вы можете в динамике определять содержимое функции OnQuote(), и "обнулять" ее когда Вам необходимо, так можно задействовать функцию OnQuote() только на время выяснения получен ли первоначальный слепок стакана или нет. Вот пример, который Вы можете доработать под себя и свою задачу:
Код
function OnInit(script)
is_run = true
quotes_is_received = false
end
function OnStop()
is_run = false
return 2000
end
OnQu ote = function()end
function main()
quotes = getQuoteLevel2('TQBR', 'LKOH')
message(string.format("bid_count %s offer_count %s", quotes.bid_count, quotes.offer_count))
My_Subscribe_Level_II_Quotes('TQBR', 'LKOH')
while is_run do
message('quotes_is_received ' .. tostring(quotes_is_received))
quotes = getQuoteLevel2('TQBR', 'LKOH')
message(string.format("bid_count %s offer_count %s", quotes.bid_count, quotes.offer_count))
sleep(1000)
end
end
function My_Subscribe_Level_II_Quotes(class_code, sec_code)
quotes_is_received = false
OnQu ote = function(cl_code, s_code)
if cl_code == class_code and s_code == sec_code then
quotes_is_received = true
message(string.format("Слепок стакана по инструменту %s [%s] получен", class_code, sec_code))
OnQu ote = function()end
end
end
is_subscribe = Subscribe_Level_II_Quotes(class_code, sec_code)
end
Перед тем как задать вопрос, убедитесь, что решение Вашей задачи не описано в официальном мануале - 'Использование Lua в Рабочем месте QUIK.pdf'
OnQu ote = function... естественно без пробела, парсер форума сам зачем-то пробел добавляет.
Перед тем как задать вопрос, убедитесь, что решение Вашей задачи не описано в официальном мануале - 'Использование Lua в Рабочем месте QUIK.pdf'
Пользователь
Сообщений: Регистрация: 30.01.2015
30.01.2017 16:03:58
Цитата
Космонавт написал: И ещё вопрос. Он не праздный. Может быть у дохлого брокера с одним сервером это будет проблемой.
Когда я заказываю данные с сервера, например, стакан, это создаёт нагрузку на сервер брокера? ну например бесконечный цикл:
Код
class = "SPBFUT"
sec = "SRH7"
for i = 1 , 10000000000000000000 do
qt = getQuoteLevel2 (class, sec)
end
Вредит ли это способности брокера обслуживать других клиентов? Например отправка заявок бесконечным потоком точно вредит. У других клиентов заявки будут дольше улетать на биржу.
это вредит только Вам, так как Вы таким циклом ничего не заказываете многократно а просто вешаете свой комп. ----------------------------------------- За такие программы надо по рукам палкой.