Pinescript-сюжет происходит на каждом баре, а не только наивысшем и наименьшем - PullRequest
1 голос
/ 23 октября 2019

Я пытаюсь, чтобы верхние и нижние столбцы гистограммы за последние 140 помечены в виде графика. Мой код работает с большим энтузиазмом, потому что он строит графики на каждом баре, а не только на самом высоком и самом низком.

Я какое-то время играл с ним и безуспешно искал ответы. Буду признателен за некоторые предложения, пожалуйста, если у вас есть свободное время.

Спасибо Али

study("Oscillator (AO)")
nLengthSlow = input(34, minval=1, title="Length Slow")
nLengthFast = input(5, minval=1, title="Length Fast")
xSMA1_hl2 = sma(hl2, nLengthFast)
xSMA2_hl2 = sma(hl2, nLengthSlow)

//indicator
AOval = xSMA1_hl2 - xSMA2_hl2

// Determine colour
lineColour = (AOval > AOval[1]) and (AOval > 0) ? lime :
            (AOval < AOval[1]) and (AOval > 0) ? green :
                (AOval > AOval[1]) and (AOval < 0) ? red :
                maroon

UPpeak = highest(AOval, 140) and (AOval > 0)
DNpeak = lowest(AOval, 140) and (AOval < 0)

plot(AOval, style=histogram, linewidth=3, color=lineColour)

plotshape(UPpeak, title="UPpeak", text="3", style=shape.circle, location=location.bottom, color=blue, size=size.auto, transp=60)
plotshape(DNpeak, title="DNpeak", text="3", style=shape.circle, location=location.bottom, color=orange, size=size.auto, transp=60)

1 Ответ

2 голосов
/ 23 октября 2019
Функции

highest() и lowest() возвращают series. Вы тогда "и" этот результат с условием. Который выглядит так: 150 and true. В результате переменные UPpeak или DNpeak остаются верными в течение некоторого периода.

Что вы можете сделать, это проверить, является ли текущее значение AOval равным равному максимальному/ минимальный за последние 140 баров. Таким образом, вы знаете, что этот бар в этой точке является пиком.

UPpeak = (AOval == highest(AOval, 140)) and (AOval > 0)
DNpeak = (AOval == lowest(AOval, 140)) and (AOval < 0)

enter image description here

...