Pine Script中plotshape传入条件判断size参数时触发类型不匹配报错
报错核心原因
plotshape函数的size参数仅接受编译期确定的常量字符串入参,不支持绑定用户输入的动态三元表达式返回值- 代码中
size=(big?size.small:size.tiny)的判断条件big是用户输入的复选框值,属于运行时可调整的动态输入类型,导致三元表达式返回值不符合size参数的类型要求,无法匹配函数的合法重载形式,最终触发类型校验报错。
合规实现方式
要实现“勾选复选框调整形状大小”的交互效果,无需给单个plotshape传动态size值,拆分两个独立调用即可,每个调用硬编码符合要求的常量size,通过复选框状态控制形状触发逻辑:
ma = sma(hlc3,p) big = input(false,"Bigger shapes") cross_trig = crossover(hlc3, ma) // 大尺寸形状:仅当复选框勾选时触发绘制 plotshape(cross_trig and big, style=shape.triangleup, color=color.green, size=size.small) // 小尺寸形状:仅当复选框未勾选时触发绘制 plotshape(cross_trig and not big, style=shape.triangleup, color=color.green, size=size.tiny)
- 上述写法中两个plotshape调用的size参数都是直接硬编码的常量值,完全符合函数的类型校验规则,不会触发重载匹配错误
- 两个形状的触发逻辑通过逻辑判断和复选框状态绑定,触发条件互斥,不会出现重复绘制的冲突,最终实现切换大小的交互效果。
内容的提问来源于stack exchange,提问作者Cyril
相关产品推荐
相关产品推荐

