Катаклизм getParamEx или брокера?

Страницы: 1
RSS
Катаклизм getParamEx или брокера?
 
Доброго времени суток дамы и господа, столкнулся со следующей проблемой.
Идея заключается в том, чтобы высчитать разницу в %. Вот собственно код который выполняется:
Код
local param_bids_num_RI = getParamEx("SPBFUT", SEC_NAME_RI, "NUMBIDS");
local param_offers_num_RI = getParamEx("SPBFUT", SEC_NAME_RI, "NUMOFFERS");

local status_num_RI, percent_num_RI = CalculatePercent(param_bids_num_RI.param_value, param_offers_num_RI.param_value);

function CalculatePercent(bid, offer)

   if bid > offer then
      local per = (bid / (offer / 100)) - 100;
      return 1, per;
   elseif bid < offer then
      local per = (offer / (bid / 100)) - 100;
      return -1, per;
   else
      return 0, 0;
   end;
 
end 

Но почему-то он не всегда правильно считает, было выявлено что возвращается отрицательное значение которого тут по определению быть не может, т.е. получается он путает местами бид и оффер.

Подскажите пожалуйста, что это может быть???
Спасибо.
 
 
Цитата
Павел Кривко написал:
Идея заключается в том, что...
тут нет никакой идеи...
Цитата
Павел Кривко написал:
т.е. получается он путает местами бид и оффер.
и как такое только могло произойтить о_О вай вай вай

ты на код свой повнимательней глянь для начала.

А лучше - начни с перва:
  1. Что за идея, что за процент?
  2. Напиши нормальную мат формулу.
  3. Что именно ты собираешься возвращать - какие значения и сколько?

 
Цитата
тот самый написал:
Цитата
Павел Кривко   написал:
Идея заключается в том, что...
тут нет никакой идеи...
Цитата
Павел Кривко   написал:
т.е. получается он путает местами бид и оффер.
и как такое только могло произойтить о_О вай вай вай

ты на код свой повнимательней глянь для начала.

А лучше - начни с перва:
 Что за идея, что за процент?
 Напиши нормальную мат формулу.
 Что именно ты собираешься возвращать - какие значения и сколько?
  1. Высчитать разницу в % между бидом и оффером.
  2. Формула нормальная и рабочая.
  3. Возвращается собственно сама разница в % и статус, в коде это четко написано.
Если Вы не можете что-то конкретное сказать, то лучше тогда вообще не писать.....я на этот код уже не раз смотрел и если бы увидел там ответ на свой вопрос, то пост в этом форуме не появился бы.  
 
Цитата
Anhel написал:
Если Вы не можете что-то конкретное сказать, то лучше тогда вообще не писать.
Помоему и так достаточно сказал. И ещё скажу...:
Прежде чем "совать" в свою "функцию" numbids и numoffers - следует, как минимум проверить входные значения на "nil" и "0" - бо как от Квика - всего можно ожидать. Глядишь и "путать" их перестанет и отрицательных значений не будет... :lol:
Цитата
Anhel написал:
Высчитать разницу в % между бидом и оффером.
так бидом или numbids - вот в чём вопрос?... :lol: Или для тебя - это одно и тоже?
 
Цитата
тот самый написал:
проверить входные значения на "nil" и "0" - бо как от Квика - всего можно ожидать
Спасибо за наводку.
 
Цитата
Anhel написал:
Спасибо за наводку.
незачто
 
Вопрос остается открытым. Решил проверить обычным делением с проверкой на "nil" и "0", на RI значения правильно высчитываются, а на BR не верно.
Код
function CalculatePercent(bid, offer)

   if (bid ~= nil and bid ~= 0) and (offer ~= nil and offer ~= 0) then
      if bid > offer then 
         return 1, bid/offer;
      elseif offer > bid then
         return -1, offer/bid;
      else 
         return 0, 0;
      end;
   else 
      return 0, 0;      
   end;
 
end
 
Версия квик 7.2.1.5. Получаю значения NUMBIDS и NUMOFFERS.
 
Так же BIDDEPTHT и OFFERDEPTHT тоже дают неверный результат по BR
 
скорей всего - проблема в сравнении вещественных чисел в LUA. Уже было где-то на форуме - гляньте комменты разработчика Михаила Булычева. (лень просто искать)
 
Цитата
тот самый написал:
скорей всего - проблема в сравнении вещественных чисел в LUA. Уже было где-то на форуме - гляньте комменты разработчика Михаила Булычева. (лень просто искать)
https://forum.quik.ru/messages/forum10/message1831/topic52/#message1831
 
Цитата
тот самый написал:
Цитата
тот самый   написал:
скорей всего - проблема в сравнении вещественных чисел в LUA. Уже было где-то на форуме - гляньте комменты разработчика Михаила Булычева. (лень просто искать)
https://forum.quik.ru/messages/forum10/message1831/topic52/#message1831
Спасибо ОГРОМНОЕ.
 
незачто :smile:
Страницы: 1
Читают тему
Наверх