关于AUDCAD过去12小时平均收盘价计算代码的正确性问询
代码问题分析与修正
你的代码逻辑存在两处关键问题,无法正确计算AUDCAD过去12小时的平均收盘价:
- 逻辑倒置:你先在当前图表周期计算了12根K线的SMA,再通过
request.security调用60分钟周期取这个值,这完全偏离了需求。正确的做法应该是在60分钟周期(每根K线代表1小时)下,计算12根K线的收盘价SMA,这样才对应过去12小时的平均收盘价。 - 未来数据风险:
lookahead=barmerge.lookahead_on会启用超前合并,引入未闭合K线的未来数据,导致回测信号与实盘表现不一致,实盘交易中绝对不能使用。
修正后的代码
// 计算AUDCAD过去12小时(12根60分钟K线)的收盘价均线 audcad_12h_sma = request.security('AUDCAD', '60', ta.sma(close, 12))
补充说明
- 若当前图表周期小于60分钟,
request.security会自动将60分钟周期的计算结果同步到当前周期;若当前周期大于60分钟,该代码会取对应时间范围内的60分钟周期SMA值。 - 变量名尽量做到见名知意,避免用
expr720这类模糊命名,提升代码可读性。
内容的提问来源于stack exchange,提问作者Joseph
相关产品推荐
相关产品推荐

