#pine-script
#сценарий пайна
Вопрос:
Я пытаюсь построить стрелку каждый раз, когда преобразование Фишера пересекается. До сих пор я мог рисовать стрелки, показывающие восходящий или нисходящий тренд, но я не могу понять, как сохранить предыдущее состояние, чтобы указывалось только переключение тренда.
Итак, когда вы создаете новое преобразование Фишера, вы можете видеть 2 переменные fish1 и fish2. Каждый раз, когда ранее fish1> fish2, а теперь fish1 < fish2, должна быть построена стрелка. Ниже приведен полный код с использованием plotshape().
//@version=3
study(title="Fisher Transform", shorttitle="Fisher")
len = input(9, minval=1, title="Length")
high_ = highest(hl2, len)
low_ = lowest(hl2, len)
round_(val) => val > .99 ? .999 : val < -.99 ? -.999 : val
value = 0.0
value := round_(.66 * ((hl2 - low_) / max(high_ - low_, .001) - .5) .67 * nz(value[1]))
fish1 = 0.0
fish1 := .5 * log((1 value) / max(1 - value, .001)) .5 * nz(fish1[1])
fish2 = fish1[1]
plotshape(fish1 > fish2, style=shape.arrowup, location=location.belowbar, color=green, size=size.small, text="Buy")
plotshape(fish1 < fish2, style=shape.arrowdown, location=location.belowbar, color=red, size=size.small, text="Sell")
hline(1.5, color=orange)
hline(0.75)
hline(0, color=orange)
hline(-0.75)
hline(-1.5, color=orange)
plot(fish1, color=blue, title="Fisher")
plot(fish2, color=orange, title="Trigger")
Есть ли функция, которая позволила бы мне отображать стрелку только тогда, когда условие «больше» меняется на «меньше»?
Большое спасибо!
Ответ №1:
crossover()
и crossunder()
это те функции, которые вы ищете.
кроссовер
x
-series определяется как пересекшийy
-series, если значениеx
больше, чем значениеy
, а значениеx
было меньше значенияy
на панели, непосредственно предшествующей текущей панели.crossunder
x
-series определяется как пересекший нижнийy
ряд, если значениеx
меньше значенияy
, а значениеx
было больше значенияy
на панели, непосредственно предшествующей текущей панели.
plotshape(crossover(fish1, fish2), style=shape.arrowup, location=location.belowbar, color=green, size=size.small, text="Buy")
plotshape(crossunder(fish1, fish2), style=shape.arrowdown, location=location.belowbar, color=red, size=size.small, text="Sell")