Pine Script中如何将内联形态条件定义为if语句
Pine Script 下破标记三元逻辑转标准if语句实现
原代码通过三元运算符直接在plotshape参数内判断是否渲染下破标记,改写为标准if语句时,不要将整个plotshape函数包裹在if块内——Pine Script内置绘图函数需在全局作用域声明,仅通过传入na值控制显隐,放在if局部作用域会触发编译错误。
正确实现步骤:
- 第一步:提前通过if语句定义标记的渲染位置变量,条件成立时赋值对应价格,不成立时保持
na
// 初始化变量,默认不渲染标记 float breakout_pos = na // 标准if语句判断下破条件 if lower_breakout breakout_pos := high[length]
- 第二步:将定义好的变量传入plotshape的首个参数,替换原来的三元表达式即可
plotshape(breakout_pos, "Lower Break", shape.labeldown, location.absolute, #ef5350, -length, text="short", textcolor=color.white, size=size.tiny)
补充说明
- 上述写法和原三元逻辑执行效果完全一致:满足
lower_breakout条件时,在对应K线往前length根的最高价位置绘制向下的空单标签,不满足条件时不绘制任何内容 - Pine Script v5版本中初始化
na变量时建议显式声明类型(比如示例里的float),避免类型推断导致的编译警告
内容的提问来源于stack exchange,提问作者Kadir AKYIL
相关产品推荐
相关产品推荐

