请求修改EMA 150指标代码:EMA线穿K线时添加圆形标记
EMA与K线交叉的标记实现方案
要实现EMA线穿过K线时添加圆形标记,核心是判断EMA从K线价格区间(low到high)的一侧穿越到另一侧的瞬间,具体代码如下:
study(title="EMA 150 with Cross Markers", overlay=true) // 计算150周期EMA longer = ema(close, 150) // 获取前一根K线对应的EMA值 longer_prev = longer[1] // 判断EMA完全穿过K线的两种情况 cross_up = (longer_prev < low[1] and longer > high) // EMA从K线下方穿到上方 cross_down = (longer_prev > high[1] and longer < low) // EMA从K线上方穿到下方 // 绘制EMA线 plot(longer, color = aqua) // 在交叉位置绘制圆形标记 plotshape(cross_up, title="Cross Up", location=location.belowbar, color=color.green, style=shape.circle, size=size.small) plotshape(cross_down, title="Cross Down", location=location.abovebar, color=color.red, style=shape.circle, size=size.small)
关键逻辑说明:
longer_prev = longer[1]:通过索引获取前一根K线的EMA值,用于对比当前EMA的位置变化。- 交叉条件:判断EMA是否从K线区间的一侧完全进入另一侧,确保捕捉到“穿过”的瞬间而非EMA停留在K线区间内的情况。
plotshape:根据交叉方向绘制不同颜色的圆形标记,上穿标记在K线下方(绿色),下穿标记在K线上方(红色)。
如果需要捕捉EMA穿过K线实体(而非完全穿越整个K线)的场景,可替换交叉条件为:
// 穿过K线实体的上穿 cross_up_body = (longer_prev < close[1] and longer > open) // 穿过K线实体的下穿 cross_down_body = (longer_prev > open[1] and longer < close)
内容的提问来源于stack exchange,提问作者chprot
相关产品推荐
相关产品推荐

