Самый высокий максимум за последние n дней, а не n дней назад

Если я хочу сравнить сегодняшнее закрытие с максимумом за последние 4 дня, в каком формате? я использовал

_hi = close > high[4] ? 1 : 0

Но это учитывает только максимум 4 дня назад, а не дни между ними. я пытался

_hi = close > high[1,2,3,4] ? 1 : 0

Сообщение об ошибке


person sunspore    schedule 30.10.2018    source источник


Ответы (1)


Вы можете использовать highest() для этой цели.

highest(source, length) → series

Однако вам нужно быть осторожным. close > highest(close, 4) никогда не может быть true. Потому что, если цена закрытия текущего бара самая высокая среди этих 4 баров, highest() вернет цену закрытия текущего бара. Следовательно, эта проверка будет close > close, что никогда не может быть правдой.

Вы можете сделать либо close > highest(nz(close[1]), 4), либо close == highest(close, 5) (это 5, потому что текущий бар также включен. Но вы хотите сравнить предыдущие 4 бара).

Взгляните на следующий код и диаграмму. Один использует close > highest(nz(close[1]), 4), а другой использует close == highest(close, 5). Как видите, результат идентичен.

//@version=3
study(title="Compare 2", overlay=true)

_hi = close > highest(nz(close[1]), 4)
plotshape(series=_hi, title="_hi", text="hi", style=shape.triangleup, location=location.belowbar, color=green, size=size.small, transp=40)

введите описание изображения здесь

person Baris Yakut    schedule 31.10.2018
comment
Очень круто, друг мой, я понимаю. Я не понимаю использование nz. Я читал его определение в руководстве Pine, но не понимаю, что он делает. Я провел ваше исследование как с nz, так и без него, и оно ничем не отличается. - person sunspore; 03.11.2018
comment
nz() заменяет значения Not a Number NaN на zeros. Попробуйте построить график close[1] и перейти к максимально возможному временному интервалу. Затем найдите самый первый бар. У него не будет значения (NaN). Потому что это первый бар, и close[1] запрашивает цену закрытия предыдущего бара. Но в этой точке нет предыдущего бара. Вот почему вы получите n/a. Теперь попробуйте построить график nz(close[1]) и найти самый первый бар. На этот раз вы получите 0. Таким образом, NaN будет заменено на 0. Таким образом, всегда рекомендуется заключать исторические значения в nz(), чтобы ваши расчеты были безопасными. - person Baris Yakut; 03.11.2018
comment
Спасибо, Барыш, теперь понял. - person sunspore; 04.11.2018