如何用Pine Script实现多时间框架下相同长度EMA指标同屏展示
Pine Script 同参数多时间框架EMA实现方案
要实现同一参数的EMA在不同时间框架独立计算,核心是将EMA计算逻辑嵌入跨时间框架数据请求request.security()的内部,不要在当前图表周期完成计算后再做时间框架转换,否则所有EMA都会绑定当前图表的周期。
完整可运行代码
//@version=5 indicator("多时间框架同参数EMA", overlay=true) // 公共参数设置 ema_len = input.int(20, title="EMA长度", minval=1) bar_merge_setting = barmerge.lookahead_off // 禁用未来数据,避免信号漂移 // 各时间框架20EMA计算 ema_current = ta.ema(close, ema_len) // 当前图表周期(示例为1分钟)EMA ema_10min = request.security(syminfo.tickerid, "10", ta.ema(close, ema_len), bar_merge_setting) ema_60min = request.security(syminfo.tickerid, "60", ta.ema(close, ema_len), bar_merge_setting) ema_240min = request.security(syminfo.tickerid, "240", ta.ema(close, ema_len), bar_merge_setting) ema_1d = request.security(syminfo.tickerid, "D", ta.ema(close, ema_len), bar_merge_setting) ema_1w = request.security(syminfo.tickerid, "W", ta.ema(close, ema_len), bar_merge_setting) // 绘制指标线 plot(ema_current, color=color.new(color.blue, 0), title="1分钟EMA20", linewidth=2) plot(ema_10min, color=color.new(color.green, 0), title="10分钟EMA20", linewidth=2) plot(ema_60min, color=color.new(color.yellow, 0), title="60分钟EMA20", linewidth=2) plot(ema_240min, color=color.new(color.orange, 0), title="240分钟EMA20", linewidth=2) plot(ema_1d, color=color.new(color.red, 0), title="日线EMA20", linewidth=2) plot(ema_1w, color=color.new(color.purple, 0), title="周线EMA20", linewidth=2)
注意事项
- 时间框架参数遵循Pine Script规范:纯数字代表分钟(如
"10"=10分钟),加后缀H代表小时、D代表日线、W代表周线、M代表月线,按需调整即可 - 高时间框架的EMA在1分钟图表上显示为阶梯状是正常现象:高周期EMA值在对应周期的所有1分钟K线上保持一致,直到高周期K线走完才会更新数值
- 若不需要某个时间框架的EMA,直接删除对应计算和绘图代码即可
内容的提问来源于stack exchange,提问作者Davidc
相关产品推荐
相关产品推荐

