如何筛选完全未触碰15周期EMA线的K线?
筛选完全位于15周期EMA线上方或下方且未触碰的K线
要实现这类K线的筛选,核心是判断K线的整个价格区间是否完全处于EMA的单侧:
- 完全在EMA上方:K线的最低价(
low)大于15周期EMA值,说明从最低到最高的所有价格都在EMA之上,无任何部分触碰EMA - 完全在EMA下方:K线的最高价(
high)小于15周期EMA值,说明从最高到最低的所有价格都在EMA之下,无任何部分触碰EMA
以下是实现该逻辑的Pine Script代码示例,我们保留了你原有的策略框架,同时添加了筛选标记和对应交易逻辑:
strategy("My script", overlay=true) ema = ta.ema(close, 15) plot(ema, color=color.blue) // 定义核心筛选条件 isAboveEma = low > ema // 完全位于EMA上方的K线 isBelowEma = high < ema // 完全位于EMA下方的K线 // 用形状标记符合条件的K线,方便可视化验证 plotshape(isAboveEma, title="Above EMA", location=location.belowbar, color=color.new(color.green, 0), style=shape.labelup, text="Above") plotshape(isBelowEma, title="Below EMA", location=location.abovebar, color=color.new(color.red, 0), style=shape.labeldown, text="Below") // 原时间范围控制 start = timestamp(2022,1,1,0,0,0) end = timestamp(2022,6,1,0,0,0) if time >= start and time <= end // 示例:基于筛选条件触发交易信号 if isAboveEma strategy.entry("long", strategy.long, 100) if isBelowEma strategy.entry("short", strategy.short, 100) // 原平仓逻辑(可按需调整) buy_price = strategy.opentrades.entry_price(strategy.opentrades-1) strategy.close("short", when=buy_price*1.00)
关键说明
isAboveEma和isBelowEma是筛选的核心判断,直接通过K线的高低价与EMA的对比实现plotshape函数用于在图表上直观标记符合条件的K线,便于你快速验证筛选结果- 你可以根据实际需求,将这些筛选条件替换或应用到自定义的交易信号、指标计算场景中
内容的提问来源于stack exchange,提问作者black panther
相关产品推荐
相关产品推荐

