报错无法调用‘operator >’,如何实现3个EMA指标的比较?
问题描述
报错信息:无法调用‘operator >’,参数‘expr1’为series[bool]类型,该参数应为float类型。
尝试比较3个EMA指标时出现上述报错,本人不擅长编程,求修改代码实现EMA指标的比较。当前使用RSI指标的代码如下:
RSI50 = rsi(close, 1000) RSI25 = rsi(close, 25) RSI100 = rsi(close, 100) Long = RSI25 > RSI100 > RSI50 Short = RSI25 < RSI100 < RSI50 strategy.entry("buy", strategy.long, 100.0, when = Long) strategy.entry("sell", strategy.short, 100.0, when = Short)
注:需将rsi函数替换为ema函数来比较EMA指标。
解决方案
报错原因
RSI25 > RSI100 > RSI50这种连续比较方式在Pine Script里不支持。RSI25 > RSI100会返回布尔值(true/false),接着用这个布尔值和RSI50比较,就会触发“bool类型与float类型无法比较”的错误。
修改后的代码
把连续比较拆成两个独立条件,用逻辑与运算符and连接:
// 替换为EMA指标,调整变量名更贴合指标类型 EMA25 = ema(close, 25) EMA100 = ema(close, 100) EMA1000 = ema(close, 1000) // 拆分连续比较为两个独立条件,用and确保同时成立 Long = EMA25 > EMA100 and EMA100 > EMA1000 Short = EMA25 < EMA100 and EMA100 < EMA1000 strategy.entry("buy", strategy.long, 100.0, when = Long) strategy.entry("sell", strategy.short, 100.0, when = Short)
说明
- 先将所有
rsi函数替换为ema,同时调整变量名对应EMA指标(比如原RSI50对应参数1000,改为EMA1000) - 拆分连续比较为两个独立的大小判断,用
and连接后,就能保证两个条件同时满足,避免类型不匹配的问题
内容的提问来源于stack exchange,提问作者Cesar Llano
相关产品推荐
相关产品推荐

