Как построить стрелку, когда трансформация Фишера пересекается? - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь построить стрелку каждый раз, когда преобразование Фишера пересекается.До сих пор я мог нарисовать стрелки, показывающие восходящий или нисходящий тренд, но я не могу понять, как сохранить предыдущее состояние, чтобы указывать только смену тренда.

Итак, когда вы создаете новый Fisherпреобразование, вы можете увидеть 2 переменные fish1 и fish2.Каждый раз, когда раньше fish1> fish2, а теперь fish1

//@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 Ответ

1 голос
/ 11 апреля 2019

crossover() и crossunder() - это функции, которые вы ищете.

Кроссовер

x -серия определяется как пересекшая y -серию, если значение x больше значения y, а значение x было меньше значения y на полосе, непосредственно предшествующей текущий бар.

crossunder

Серия x определяется как скрещенная с серией 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") 
...