找到有条件的最高点。 Pinescript

问题描述 投票:0回答:1

需要一个算法来找到有条件的最高点。

我们有布林带 (20,3) 并绘制了所有穿过布林带上轨的蜡烛图。这样的情况太多了。因此,需要在那些越过上线的蜡烛中找到最高点,并从最高点(左右长度为 5 根蜡烛)过滤掉附近的标记,并仅在最高的一根上绘制形状。

我所能做的就是标记那些穿过布林带上方的蜡烛...

//@version=5
indicator(shorttitle="BBM", title="BBM", overlay=true, max_labels_count = 500)
length = input.int(20, minval=1)
src = input(close, title="Source")
mult = input.float(3, minval=0.001, maxval=50)
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
plot(basis, style=plot.style_circles, color=color.blue)
p1 = plot(upper, color=color.rgb(155, 39, 176, 30))
p2 = plot(lower, color=color.rgb(155, 39, 176, 30))

A = high > upper

plotshape(A ? upper : na, color=color.rgb(255, 255, 255),style = shape.circle, text = "A", textcolor = color.white, size=size.tiny, location=location.abovebar)

谢谢。

pine-script pine-script-v5 algorithmic-trading
1个回答
0
投票

我想到了几种方法来做到这一点,但我认为这种方法最有意义。我创建了两个新变量,一个用于上 bb 上方的最高价,另一个用于跟踪柱线索引。我还创建了一个标签而不是使用 plotshape,这样如果在 5 个柱内出现新的更高的高点,您可以删除之前的标签。

//@version=5
indicator(shorttitle="BBM", title="BBM", overlay=true, max_labels_count = 500)
length = input.int(20, minval=1)
src = input(close, title="Source")
mult = input.float(3, minval=0.001, maxval=50)
[basis, upper, lower] = ta.bb(src,length,mult)
plot(basis, style=plot.style_circles, color=color.blue)
p1 = plot(upper, color=color.rgb(155, 39, 176, 30))
p2 = plot(lower, color=color.rgb(155, 39, 176, 30))

var float highestBar = 0
var int highestIndex = 0
var label labelA = na
A = high > upper and high > highestBar   

if A
    highestIndex := bar_index
    highestBar := high
    labelA := label.new(bar_index, high, 'A', style = label.style_circle,size = size.tiny)

if A and highestIndex < highestIndex[1] + 5
    (labelA[1]).delete()

if high < upper
    highestBar := 0
© www.soinside.com 2019 - 2024. All rights reserved.