Floor_To_Step()
Еще одна постоянно нужная функция, которая округляет число до шага цены в сторону уменьшения. Например, у фьючерса на индекс РТС этот шаг равен 5 и все значения, передаваемые в транзакциях, необходимо соответствующим образом округлять. Я использую эту функцию очень часто в совершенно различных ситуациях.
' Округление первого параметра до ближайшего кратного шагy (второй параметр) вниз
FUNC Floor_To_Step(result,rts_step)
if 0+rts_step == 0
result = Floor(result)
else
result = Floor(result / rts_step) * rts_step
end if
END FUNC
Вариант для макропроцессора M4:
define(`Floor_To_Step',`(Floor($1 / $2) * $2)')
Эта функция округляет всегда в меньшую сторону. Для округления в бOльшую сторону можно использовать Ceil_To_Step(), а до ближайшего кратному шагу - функцию Round_To_Step().