回测无数据?3 个关键排查步骤帮你搞定

在进行量化交易的时候,经常会遇到这样的情况,编写策略完成后,在期魔方进行策略回测时,进度条到 100% 后点击 “详情”,却看不到任何交易数据,甚至页面强制刷新,导致回测结果无法分析。这里结合平台数据逻辑和用户实操案例,整理出核心排查方向。

1.检查基础函数是否正确调用

策略交易时,依赖数据发出交易信号,数据获取是通过期魔方平台提供的函数获取的,如果在使用时传入的参数有误,比如一些不存在的参数,就会导致获取不到数据。

2.确认策略是否包含完整交易逻辑

若策略仅保留框架代码(如只有on_initon_tick等空函数),未编写开平仓条件、指标计算等核心逻辑,回测时不会产生任何交易,自然无数据输出。

判断方法:查看代码中是否有buy_open(开多)、sell_close(平多)等报单函数,以及均线交叉、突破等开仓条件判断逻辑。例如双均线策略中,需包含以下核心逻辑:

# 双均线金叉判断(5日均线上穿20日均线)
if context.ma5_array[-2] <= context.ma20_array[-2] and context.ma5_array[-1] > context.ma20_array[-1]:
    if context.position == 0:
        buy_open(1, context.base_instrument_id)  # 开多仓
        context.position = 1

3.区分策略是否支持回测模式

部分策略(如 “自动移仓换月”)的逻辑依赖实盘任务中的实时数据(如主力合约映射),回测模式下无法获取这些数据,会导致回测无结果。

解决方法:了解调用的函数使用场景,以及在任务和回测的返回值区别,这样可以让我们在编写策略时,区分不同场景下函数的使用,以及调用的字段。

补充建议:编写策略时,可以使用 put_log()添加日志调试,验证数据是否获取正常,逻辑是否正确。回测后查看日志目录(C:\Users\用户名\AppData\Local\qmfquant\logs\backtest_server)。

请登录后发表评论

    请登录后查看回复内容