Eldar (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 2
Использование Subscribe_Level_II_Quotes, получение данных стакана без открытия стакана
 
не редактируется сообщение

поломался код
Код
 function main()

    while is_run do

        for key, value in spairs(tikets) do

            Subscribe_Level_II_Quotes(class_code, key)

            Quotes(key)

     end

   end

end



function Quotes(code)

   sleep(250)

   for i=1, 30 do

      q = getQuoteLevel2(class_code, code)

--получаю стакан, перебираю его. добавляю в таблицу в окне данные. 

   max_bid_price и max_ask_price



   prevlegalclosepr=tonumber(getParamEx(class_code, code,"last").param_value)

      if (max_bid_price==0) or (max_ask_price==0) then

                delta==0

            else

         if max_bid_price >= max_ask_price then 

            delta = (prevlegalclosepr/max_bid_price)

         else

            delta = (prevlegalclosepr/max_ask_price)

         end

            end

   

   SetCell(Таблица, НомерСтрокиПоБумаге, 6, delta)
Использование Subscribe_Level_II_Quotes, получение данных стакана без открытия стакана
 
мне нужно по 30 бумагам получить цену закрытия предыдущего дня из ТТП (через getParamEx(class_code,tiket_code,"prevlegalclosepr").param_value)
найти в стакане самый большой объем на продажу и открытие. взять из них цену и вывести процентное соотношение.
чтобы не открывать 30 стаканов (а мне еще заявки ставить). пробую сделать через Subscribe_Level_II_Quotes.
работает медленно, но я пробую так:
из файла в таблицу TIKETS загружен список бумаг. key - код бумаги
function main()
   while is_run do
       for key, value in spairs(tikets) do
           Subscribe_Level_II_Quotes(class_code, key)
           Quotes(key)
 end
end
end

function Quotes(code)
sleep(250)
for i=1, 30 do
q = getQuoteLevel2(class_code, code)
--получаю стакан, перебираю его. добавляю в таблицу в окне данные.
max_bid_price и max_ask_price

prevlegalclosepr=tonumber(getParamEx(class_code, code,"last").param_value)
if (max_bid_price==0) or (max_ask_price==0) then
               delta==0
           else
if max_bid_price >= max_ask_price then
delta = (prevlegalclosepr/max_bid_price)
else
delta = (prevlegalclosepr)
end
           end

SetCell(Таблица, НомерСтрокиПоБумаге, 6, delta)

и т.д.
первая проблема -  перебор 30 строк в таблице это долго. вторая -  если сделаю меньший sleep то часто не получаю данные стакана.

в этой строке
delta = (prevlegalclosepr/max_bid_price)
временами ошибка attempt to perform arithmetic on local 'delta ' (a string value)
причину отловить не могу. механизмов отладки нет (или я не нашел где они).
как мне эффективнее сделать данный алгоритм?
или при инициализации, где я загружаю коды тикетов в таблицу сделать Subscribe_Level_II_Quotes по каждой бумаге, а потом просто перебирать через getQuoteLevel2?
Страницы: Пред. 1 2
Наверх