TradingView RTH图表ETH 20 EMA绘制异常问题求助
解决TradingView RTH图表上绘制盘后数据EMA的问题
你的脚本核心问题是EMA计算的上下文错误:你先获取了盘后单根bar的收盘价,然后在RTH图表的bar序列上计算EMA,这相当于用RTH的bar数量来滚动计算,本质还是RTH时段的EMA,而非基于完整盘后bar序列的EMA。
修正后的代码
//@version=5 indicator("RTH Chart - Extended Hours EMA", overlay=true) // 输入EMA周期 emaLength = input(20, title="EMA Length") // 创建包含盘前/盘后时段的合约ticker extendedTicker = ticker.new(syminfo.prefix, syminfo.ticker, session.extended) // 关键:在盘后时段的上下文内计算EMA,再同步到RTH图表 extendedEma = request.security(extendedTicker, timeframe.period, ta.ema(close, emaLength), lookahead=barmerge.lookahead_off) // 绘制EMA线 plot(extendedEma, color=color.red, title="Extended Hours EMA")
关键改动说明
- 将
ta.ema计算逻辑放入request.security的第三个参数中,让EMA直接在完整的盘后bar序列上计算,而非在RTH序列上用零散的盘后收盘价计算。 - 关闭
lookahead(设置为barmerge.lookahead_off),避免引入未来数据导致的信号漂移问题,保证指标的可靠性。
额外说明
如果你的RTH图表周期和盘后时段的bar周期一致(比如都是1小时),每个RTH bar会对应盘后时段中同周期的bar数据,此时绘制的EMA是基于所有盘前+RTH+盘后时段的bar计算得出的,完全符合你的需求。
内容的提问来源于stack exchange,提问作者NightOwl85
相关产品推荐
相关产品推荐

