Иногда нам необходимо преобразовать дробное число в целое путем усечения, отбросив все знаки после запятой. Мы могли бы использовать округление, но в этом случае знаки до запятой могут измениться. Что же делать, если нам не нужно менять целую часть, а просто отбросить дробную?
В Pine Script существует 2 способа усечения числа:
- Функция int преобразует дробное значение в целое число, отсекая десятичную часть: 5,84622 становится 5.
- Написать свою пользовательскую функцию или индикатор, которая при помощи функции int сможет обрезать значение до определенного количества знаков после запятой. Можно преобразовать 5,84622 в 5,84 или 5,846.
Рассмотрим подробнее оба этих способа.
Как обрезать дробную часть
Чтобы превратить значение с плавающей запятой float в целое int число, мы просто вызываем функцию int(). Дробная часть числа отсекается, т.к. функция возвращает только целую часть, не меняя ее.
Так это выглядит в коде:
1 2 |
int(5.6485) // возвращает 5 |
Приведем примеры, как работает функция int:
Давайте построим график цен закрытия close и сравним его с графиком усеченных цен закрытия:
1 2 3 4 5 |
indicator("int", overlay=false) closeInt = int(close) // при помощи функции int усечем значения close и передадим их в переменную closeInt plot(series=close, title="Close") // при помощи функции plot выведем график цен close синим цветом (по умолчанию) plot(series=closeInt, title="closeInt", color=color.green) // при помощи функции plot выведем график цен closeInt зеленым цветом |
- синий график — цена закрытия с исходным количеством знаком после точки
- зеленый график — усеченные цены закрытия (график построен по целым числам)
Как сократить значения в Pine Script до нескольких знаков после запятой
Функция int в TradingView может усекать только до целого числа. Что же делать, если мы хотим сохранить определенное количество знаков после запятой и отбросить ненужные?
Предлагаем написать вот такой простой индикатор:
1 2 3 4 5 |
indicator(title='int', overlay=false) x=close*100 plot(series=int(x)/100, title="close_int", color=color.orange) plot(series=close, title="close", color=color.green) |
Как им пользоваться:
- если вы хотите оставить 2 знака после запятой, то умножайте серию исходных чисел или одно число на 100, а после того, как вычислите целую часть при помощи функции int, опять разделите на 100.
- если вы хотите оставить 3 знака после запятой, то умножайте серию исходных чисел на 1000, а после того, как вычислите целую часть при помощи функции int, разделите на 1000.
- если вы хотите оставить 4 знака после запятой, то умножайте на 10 000 и после выделения целой части, делите 10 000 и тд.
Этот индикатор отсекает 2 знака после запятой, не округляя при этом числа:
Заключение:
чтобы отсечь все знаки после запятой, используйте функцию int. Она возвращает целое число, не округляя его. Чтобы оставить несколько знаков после запятой, вам необходимо написать свой индикатор или функцию.