простой код не работает

Страницы: 1
RSS
простой код не работает
 
Добрый день.
Какое то наваждение. Не работает простой код.
Код
class="SPBFUT"
sec="SRH7"
s=Subscribe_Level_II_Quotes(class, sec)
toLog (log, s) --s как и положено true
qt=getQuoteLevel2(class, sec)
toLog (log, qt) --qt выглядит так: bid_count=0.000000;offer_count=0.000000;
Unsubscribe_Level_II_Quotes(class, sec)    

вроде бы всё правильно, но данные приходят с нулями.
ФОРТС включен птичками, время - торговое.
 
Здравствуйте,
Попробуйте так:
Код
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
 
Да, дело было в sleep
надо ждать пока стакан придёт
 
Ещё вопрос.
У меня очень длинный тикер лист.

"ABRD,AESL,AGRO,ALBK,ALNU,AMEZ,APTK,AQUA,.......................... и до конца класса TQBR

в брокере Неттрейдер квик НЕ выдавал ошибку "Превышено число открытых стаканов", а в брокере Открытие появляется такая ошибка. Это зависит от настроек брокера? У всех разное число стаканов можно открыть?
Поэтому и пришлось использовать
Unsubscribe_Level_II_Quotes(class, sec) внутри прохода каждой акции
 
Цитата
Космонавт написал:
Это зависит от настроек брокера?

Да верно.
 
И ещё вопрос. Он не праздный. Может быть у дохлого брокера с одним сервером это будет проблемой.

Когда я заказываю данные с сервера, например, стакан, это создаёт нагрузку на сервер брокера?
ну например бесконечный цикл:
Код
class="SPBFUT" 
sec="SRH7"
for i=1,10000000000000000000 do
 qt=getQuoteLevel2(class, sec)
end
Вредит ли это способности брокера обслуживать других клиентов?
Например отправка заявок бесконечным потоком точно вредит. У других клиентов заявки будут дольше улетать на биржу.
 
дополнительный вопрос.
тот же цикл, но при этом постоянно подписываясь на стакан, и в конце итерации отписываясь?
 
Космонавт,
Если заказать большое количество стаканов, то да это создаст какую-то нагрузку на сервер брокера.
Если постоянно заказывать и отписываться то нет.
если просто дергать значения функцией getQuoteLevel2 то брокер этого даже не заметит
 
Цитата
Космонавт написал:
И ещё вопрос. Он не праздный. Может быть у дохлого брокера с одним сервером это будет проблемой.

Когда я заказываю данные с сервера, например, стакан, это создаёт нагрузку на сервер брокера?
ну например бесконечный цикл:
Код
  class =  "SPBFUT"  
sec =  "SRH7" 
 for  i =  1 , 10000000000000000000   do 
 qt =  getQuoteLevel2 (class, sec)
 end   
Вредит ли это способности брокера обслуживать других клиентов?
Например отправка заявок бесконечным потоком точно вредит. У других клиентов заявки будут дольше улетать на биржу.
Добрый день.
Предполагаю, что Вы таким способом реализовываете проверку о появлении данных по стакану после его заказа с сервера? Если это так, то посоветую Вам использовать функцию обратного вызова OnQuote(), которая будет вызвана сразу после прихода слепка заказанного стакана, а уже внутри функции OnQuote(), например, запоминать флаг, что слепок по такому-то инструменту и классу получен.
Перед тем как задать вопрос, убедитесь, что решение Вашей задачи не описано в официальном мануале - 'Использование Lua в Рабочем месте QUIK.pdf' https://arqatech.com/upload/Public/quik_lua.zip
 
Nikolay Pavlov,срабатывания будут происходить часто, а мне нужно обращаться к стакану существенно реже, чем приходят обновления.
 
Цитата
Космонавт написал:
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' https://arqatech.com/upload/Public/quik_lua.zip
 
Цитата
Nikolay Pavlov написал:
OnQu ote = function
OnQu ote = function... естественно без пробела, парсер форума сам зачем-то пробел добавляет.
Перед тем как задать вопрос, убедитесь, что решение Вашей задачи не описано в официальном мануале - 'Использование Lua в Рабочем месте QUIK.pdf' https://arqatech.com/upload/Public/quik_lua.zip
 
Цитата
Космонавт написал:
И ещё вопрос. Он не праздный. Может быть у дохлого брокера с одним сервером это будет проблемой.

Когда я заказываю данные с сервера, например, стакан, это создаёт нагрузку на сервер брокера?
ну например бесконечный цикл:
Код
  class =  "SPBFUT"  
sec =  "SRH7" 
 for  i =  1 , 10000000000000000000   do 
 qt =  getQuoteLevel2 (class, sec)
 end   
Вредит ли это способности брокера обслуживать других клиентов?
Например отправка заявок бесконечным потоком точно вредит. У других клиентов заявки будут дольше улетать на биржу.
это вредит только Вам, так как Вы таким циклом ничего не заказываете многократно а просто вешаете свой комп.
-----------------------------------------
За такие программы надо по рукам палкой.
Страницы: 1
Читают тему
Наверх