Код |
---|
-- Приводит переданную цену к требуемому для транзакции по инструменту виду
GetCorrectPrice = function(price) -- STRING
-- Получает точность цены по инструменту
local scale = getSecurityInfo(CLASS_CODE, SEC_CODE).scale
-- Получает минимальный шаг цены инструмента
local PriceStep = tonumber(getParamEx(CLASS_CODE, SEC_CODE, "SEC_PRICE_STEP").param_value)
-- Если после запятой должны быть цифры
if scale > 0 then
price = tostring(price)
-- Ищет в числе позицию запятой, или точки
local dot_pos = price:find('.')
local comma_pos = price:find(',')
-- Если передано целое число
if dot_pos == nil and comma_pos == nil then
-- Добавляет к числу ',' и необходимое количество нулей и возвращает результат
price = price..','
for i=1,scale do price = price..'0' end
return price
else -- передано вещественное число
-- Если нужно, заменяет запятую на точку
if comma_pos ~= nil then price:gsub(',', '.') end
-- Округляет число до необходимого количества знаков после запятой
price = math_round(tonumber(price), scale)
-- Корректирует на соответствие шагу цены
price = math_round(price/PriceStep)*PriceStep
price = string.gsub(tostring(price),'[\.]+', ',')
return price
end
else -- После запятой не должно быть цифр
-- Корректирует на соответствие шагу цены
price = math_round(price/PriceStep)*PriceStep
return tostring(math.floor(price))
end
end
|
Функция тоже показывает не реальные цены