如何在水平线与EMA线间填充颜色?仅填充EMA高于水平线的区域
解决Pine Script中指标线与水平线的条件填充问题
在Pine Script v5里,fill()函数要求两个参数必须是同类型对象——要么都是hline,要么都是plot。你之前的代码里hline是hline对象,ema是序列数据,跨类型无法实现条件填充的逻辑,所以需要调整实现方式:
解决方案代码
//@version=5 indicator("EMA高于水平线时填充") ema = ta.ema(close, 20) // 用plot绘制水平线,替代原生hline,保证和EMA的plot对象类型一致 plot_hline = plot(220, color=color.gray, title="220水平线") plot_ema = plot(ema, color=color.blue, title="20周期EMA") // 仅当EMA高于220时显示填充色,否则用na(透明)隐藏填充 fill(plot_hline, plot_ema, color=ema > 220 ? color.new(color.red, 80) : na)
关键说明
- 用
plot(220)生成水平线的plot对象,和EMA的plot对象类型匹配,满足fill()的参数要求 - 通过三元运算符控制填充颜色:当
ema > 220时显示半透明红色(color.new()用来调整透明度,数值0-100,越高越透明),否则传入na让填充区域透明 - 可根据需求修改颜色、透明度、周期或水平线数值
内容的提问来源于stack exchange,提问作者Ghan
相关产品推荐
相关产品推荐

