Pine Script在5分钟周期图表绘制日线高低数据异常问题
问题原因与解决方案
你的问题出在request.security的默认行为上:它默认只会返回已经完全闭合的日线K线数据。在5分钟图的历史数据中,只要当前时间还没到日线收盘时刻,脚本就会显示前一日的日线OHLC;而实时数据中,它会动态获取当前正在形成的日线数据,这就导致了历史与实时显示的不一致,进而影响回测准确性。
修改后的代码
要让历史数据也能实时显示对应时段正在形成的日线OHLC,需要给request.security添加barmerge.lookahead_on参数,强制获取当前高时间框架(日线)的实时数据:
//@version=5 strategy(title="DailyChange", shorttitle="DailyChange", overlay=true, initial_capital=1000, calc_on_every_tick=true) // 添加barmerge.lookahead_on参数,获取当前正在形成的日线数据 DailyClose = request.security(syminfo.tickerid, '1D', close, barmerge.lookahead_on) DailyOpen = request.security(syminfo.tickerid, '1D', open, barmerge.lookahead_on) DailyHigh = request.security(syminfo.tickerid, '1D', high, barmerge.lookahead_on) DailyLow = request.security(syminfo.tickerid, '1D', low, barmerge.lookahead_on) plot(series=DailyOpen, color=color.blue, linewidth=1) plot(series=DailyClose, color=color.red, linewidth=1) plot(series=DailyHigh, color=color.yellow, linewidth=1) plot(series=DailyLow, color=color.gray, linewidth=1)
关键说明
barmerge.lookahead_on参数会让脚本在历史回测中模拟实时行情的视角,显示当时正在形成的日线数据,而非仅已闭合的前一日数据,这样历史与实时的显示逻辑就统一了。- 这个参数不属于“未来函数”,因为它获取的是对应历史时刻已经存在的实时数据,不会提前使用未来才会出现的信息,不会影响回测的真实性。
内容的提问来源于stack exchange,提问作者Amar
相关产品推荐
相关产品推荐

