PineScript布尔值比较报错问题排查及代码实现需求
PineScript 布尔值比较类型不匹配问题解决
错误原因
你遇到的类型不匹配错误,核心原因是:PineScript的比较运算符(>/<等)仅支持数值类型(float/int),但你直接用>比较两个布尔值(series bool),导致类型不兼容。
在PineScript中,布尔值true等价于数值1,false等价于0,只需将布尔条件转换为数值类型,或直接用逻辑表达式替代比较操作,即可解决问题。
解决方案
你的代码意图是判断「前一根K线满足bullishCandle条件,当前K线不满足该条件」,以下两种方式均可实现:
方式1:将布尔值转为整数后比较
//@version=5 indicator('test', overlay=true) bullishCandle = close >= open[1] and close[1] < open[1] bearishCandle = close <= open[1] and close[1] > open[1] // 把布尔值转成整数(true=1,false=0)后执行比较 aaaaa = int(bullishCandle[1]) > int(bullishCandle)
方式2:直接用逻辑表达式(推荐,可读性更强)
//@version=5 indicator('test', overlay=true) bullishCandle = close >= open[1] and close[1] < open[1] bearishCandle = close <= open[1] and close[1] > open[1] // 直接通过逻辑判断:前一根满足bullishCandle,当前不满足 aaaaa = bullishCandle[1] and not bullishCandle
逻辑调整说明
如果你的目标逻辑不是「前满足当前不满足」,可直接修改逻辑表达式:
- 若要判断「当前满足,前一根不满足」:
aaaaa = bullishCandle and not bullishCandle[1] - 若要判断连续两根都满足:
aaaaa = bullishCandle[1] and bullishCandle
内容的提问来源于stack exchange,提问作者wookoii
相关产品推荐
相关产品推荐

