OnParam присылает нулевые колбеки

Страницы: 1
RSS
OnParam присылает нулевые колбеки
 
Здравствуйте, почему OnParam наряду с правильными постоянно присылает нулевые колбеки?

01/15/16 10:57:12,660 SBER пишет колбек бид 0
01/15/16 10:57:12,660 SBER пишет колбек аск 0
01/15/16 10:57:16,067 SBER пишет колбек бид 0
01/15/16 10:57:16,067 SBER пишет колбек аск 0
01/15/16 10:57:18,332 OGKB пишет колбек бид 0
01/15/16 10:57:18,332 OGKB пишет колбек аск 0
01/15/16 10:57:21,082 HYDR пишет колбек бид 0
01/15/16 10:57:21,082 HYDR пишет колбек аск 0
01/15/16 10:57:31,785 AFLT пишет колбек бид 0
01/15/16 10:57:31,785 AFLT пишет колбек аск 0
01/15/16 10:57:44,364 RASP пишет колбек бид 0
01/15/16 10:57:44,364 RASP пишет колбек аск 0
01/15/16 10:57:55,285 RTKM пишет колбек бид 0
01/15/16 10:57:55,285 RTKM пишет колбек аск 0
01/15/16 10:58:00,051 ALRS пишет колбек бид 0
01/15/16 10:58:00,051 ALRS пишет колбек аск 0
01/15/16 10:58:00,223 SBERP пишет колбек бид 0
01/15/16 10:58:00,223 SBERP пишет колбек аск 0
01/15/16 10:58:00,567 CHMF пишет колбек бид 0
01/15/16 10:58:00,567 CHMF пишет колбек аск 0
01/15/16 10:58:06,989 AFKS пишет колбек бид 0
01/15/16 10:58:06,989 AFKS пишет колбек аск 0
01/15/16 10:58:09,301 NVTK пишет колбек бид 0
01/15/16 10:58:09,301 NVTK пишет колбек аск 0
01/15/16 10:58:10,176 MTSS пишет колбек бид 0
01/15/16 10:58:10,176 MTSS пишет колбек аск 0
 
Здравствуйте,
Приведите пример кода
 
function OnParam (class, sec)
    if string.find(ticker_list,sec)~=nil then
       tablebid=getParamEx(class,  sec, "bid")
       tableoffer=getParamEx(class,  sec, "offer")
       if bid_best[sec]==0 then toLog (log, sec.." пишет колбек бид 0") end
       if offer_best[sec]==0 then toLog (log, sec.." пишет колбек аск 0") end
           if  bid_best[sec]~=tablebid.param_value then
               bid_best[sec]=tonumber(toPrice(sec, tablebid.param_value))
           end
           
           if offer_best[sec]~=tableoffer.param_value then
               offer_best[sec]=tonumber(toPrice(sec, tableoffer.param_value))
           end
    end
end
 
Не по всем классам может быть спрос предложение, и это нормально.
У Вас же функция пишет в лог инструменты из всех классов
 
не верно.
Там же есть строка if string.find(ticker_list,sec)~=nil then
Если вы прочитаете заглавное сообщение, то увидите нули по ликвидным акциям, которых не может быть в торговое время.
 
И потом, в таблицу bid_best и offer_best тоже попадают данные без проверки класса, а значит легко может оказаться что правильные данные затрутся неправильными.
И при первичном запуске тоже в лог запишутся нули.
В общем рекомендация переделать логику, а уже потом делать выводы что в колбеке нули
Хотя бы так:

Код
function OnParam (class, sec)
     if string.find(ticker_list,sec)~=nil then
      if getParamEx(class,  sec, "bid").param_value==0 then toLog (log, class.." "..sec.." пишет колбек бид 0") end
      if getParamEx(class,  sec, "offer").param_value==0 then toLog (log, class.." "..sec.." пишет колбек аск 0") end
   end
 end
 
Цитата
Космонавт пишет:
Там же есть строка if string.find(ticker_list,sec)~=nil then
Если вы прочитаете заглавное сообщение, то увидите нули по ликвидным акциям, которых не может быть в торговое время.
я не вижу проверки на класс в этой функции
Проверка инструмента да есть, а что если один инструмент в двух классах?
 
Добрый день.
По приведенному коду нельзя сказать ничего конкретного. На первый взгляд все работает корректно и вполне могут быть такие ситуации.
 
проверил.
Класс - TQBR
то есть правильный, основной
 
Цитата
Космонавт пишет:
проверил.
Класс - TQBR
то есть правильный, основной
Что проверили? где класс корректный? Какой код используется?
 
этот код выдаёт нули на акциях класса TQBR


Код
function OnParam (class, sec)
     if string.find(ticker_list,sec)~=nil then
        tablebid=getParamEx(class,  sec, "bid")
        tableoffer=getParamEx(class,  sec, "offer")
        if bid_best[sec]==0 then 
        toLog (log, sec.." пишет колбек бид 0") 
        toLog (log, class)
        end
        if offer_best[sec]==0 then 
        toLog (log, sec.." пишет колбек аск 0") 
        toLog (log, class)
        end
        

            if  bid_best[sec]~=tablebid.param_value then
                bid_best[sec]=tonumber(toPrice(sec, tablebid.param_value))
            end
            
            if offer_best[sec]~=tableoffer.param_value then
                offer_best[sec]=tonumber(toPrice(sec, tableoffer.param_value))
            end    
        
     end


01/15/16 14:30:39,817 HYDR пишет колбек бид 0
01/15/16 14:30:39,817 TQBR
01/15/16 14:30:39,832 HYDR пишет колбек аск 0
01/15/16 14:30:39,832 TQBR
01/15/16 14:30:40,364 TRMK пишет колбек бид 0
01/15/16 14:30:40,364 TQBR
01/15/16 14:30:40,364 TRMK пишет колбек аск 0
01/15/16 14:30:40,364 TQBR
01/15/16 14:30:40,379 SBER пишет колбек бид 0
01/15/16 14:30:40,379 TQBR
01/15/16 14:30:40,379 SBER пишет колбек аск 0
01/15/16 14:30:40,379 TQBR
01/15/16 14:30:40,379 PIKK пишет колбек бид 0
01/15/16 14:30:40,379 TQBR
01/15/16 14:30:40,379 PIKK пишет колбек аск 0
01/15/16 14:30:40,379 TQBR
01/15/16 14:30:40,489 ALRS пишет колбек бид 0
01/15/16 14:30:40,489 TQBR
01/15/16 14:30:40,489 ALRS пишет колбек аск 0
01/15/16 14:30:40,489 TQBR
01/15/16 14:30:41,270 GAZP пишет колбек бид 0
01/15/16 14:30:41,270 TQBR
01/15/16 14:30:41,270 GAZP пишет колбек аск 0
 
имею в виду, что наряду с правильными значениями всё время попадаются нулевые
 
то есть гипотеза, что нули приходят из за какого то левого класса - не верна
 
выслал письмо с кодом
"нули в колбеке OnParam"
 
Цитата
Космонавт пишет:
то есть гипотеза, что нули приходят из за какого то левого класса - не верна
Вы меняете bid_best и offer_best после того как пришел колбэк, это уже некорректно
Выполните эксперимент на нашем примере который был указан выше
 
Цитата
Sergey Gorokhov пишет:
Цитата
Космонавт пишет:
то есть гипотеза, что нули приходят из за какого то левого класса - не верна
Вы меняете bid_best и offer_best после того как пришел колбэк, это уже некорректно
Выполните эксперимент на нашем примере который был указан выше
Посмотрите сами,
Допустим пришел колбэк с нулями, по инструменту НЕ из TQBR
Согластно коду он записался в  bid_best[sec] и offer_best[sec]
Потом пришел другой колбэк без нулей по тому же самому инструменту но из класса TQBR
Согласно коду bid_best[sec] и offer_best[sec] возьмутся из первого колбэка то есть не из того класса который запишется в лог
 
спасибо
разобрался.
блок записи в лог переместил вниз кода и посыпалось:

01/15/16 15:00:10,364 SMAL
01/15/16 15:00:10,707 CHMF пишет колбек бид 0
01/15/16 15:00:10,707 SMAL
01/15/16 15:00:10,707 CHMF пишет колбек аск 0
01/15/16 15:00:10,707 SMAL
01/15/16 15:00:11,332 CHMF пишет колбек бид 0
01/15/16 15:00:11,332 SMAL
01/15/16 15:00:11,332 CHMF пишет колбек аск 0

то есть это был класс "неполные лоты", а не TQBR
 
Цитата
Космонавт пишет:
то есть это был класс "неполные лоты", а не TQBR
то есть гипотеза была верной
Страницы: 1
Читают тему
Наверх