首页 > 解决方案 > 想将三元运算符转换为循环

问题描述

我正在制作一个指标,我只想保存high[100]99 candelse 之后的值是否小于high[100].

我想保持这个值,直到我得到另一个类似的条件,最后一个high[100]高于或低于新high[100]条件都没有关系。

我试着在一个循环中做,但因为我对循环很陌生,所以我还没有成功。

 //@version=3
strategy("trend hybrid",overlay=true)

long_2 = highest(high,100)
high_long = high[100]
long_test = highest(high,99)

long = na
long := long_test <= high_long ? high_long : long[1]

plot(long) 


//@version=3
study("For Loop tutorial - Example 6")
l = high[100]
y = high
for i = 99 to 1
    if high[i] <= high[l]
        break    
    y := l

plot(y, style=line, color=green, linewidth=3)

标签: pine-script

解决方案


这可能是您正在寻找的。请记住,检测您的状况需要 100 条,因此蓝色标签和线条印有您length - 1过去的偏移量。只有检测到新高时出现的紫红色圆圈才会绘制在检测到的蜡烛上。您可以在Inputs中更改长度。

//@version=4
study("", "", true)
length = input(100)
highBar = -highestbars(length) == length - 1
var highValue = 0.
if highBar
    highValue := high[length - 1]
    label.new(bar_index[length - 1], highValue, tostring(highValue), xloc.bar_index, yloc.price, size = size.normal)
plot(highValue, "highValue", offset = -(length - 1))
plotchar(highBar, "High detected", "•", location.abovebar, color.fuchsia, size = size.small)

在此处输入图像描述


推荐阅读