带多入场条件的买入指标:复选框控制筛选信号失效问题求助
问题解决:复选框控制EMA买入信号失效修复
问题根源
- 逻辑错误:原代码中关闭复选框时返回
na,但and逻辑运算里只要存在na,整个表达式结果就会变成na,plotshape不会把na判定为有效信号。 - 语法笔误:代码里的
and nd是拼写错误,正确应为and。
修正方案
当复选框关闭时,将对应条件设为true(即该条件自动满足,不参与筛选),仅让开启的条件参与and运算,同时修正语法错误:
//@version=5 indicator("Test", overlay=true) // 复选框设置 ShowMA1 = input.bool(true, "20 EMA") ShowMA2 = input.bool(true, "50 EMA") ShowMA3 = input.bool(true, "100 EMA") ShowMA4 = input.bool(true, "200 EMA") // 均线条件定义 MA1 = close > ta.ema(close, 20) MA2 = close > ta.ema(close, 50) MA3 = close > ta.ema(close, 100) MA4 = close > ta.ema(close, 200) // 生成买入信号:关闭的复选框对应条件自动为true,仅校验开启的条件 BuySignal = (ShowMA1 ? MA1 : true) and (ShowMA2 ? MA2 : true) and (ShowMA3 ? MA3 : true) and (ShowMA4 ? MA4 : true) // 绘制买入信号 plotshape(BuySignal, title="BUY", text="BUY", location=location.belowbar, style=shape.labelup, size=size.tiny, color=color.rgb(7, 104, 201), textcolor=color.white, transp=0)
关键说明
- 关闭某个复选框时,
ShowMAx ? MAx : true会返回true,相当于该条件不做限制,仅让开启的条件共同生效。 - 修正了语法错误后,逻辑运算能正常执行,开启任意组合的复选框都能生成对应信号。
内容的提问来源于stack exchange,提问作者user2334436
相关产品推荐
相关产品推荐

