背景

重构代码之后,这个测试用例失败了,需要修复这个测试用例,分析定位 bug 在什么地方,然后修复

/Users/yunjinqi/Documents/量化交易框架/backtrader/tests/strategies/test_19_index_future_momentum.py

修复方法建议

  1. backtrader/run_test_with_log.py 这个运行 test_19 这个策略,然后对比 master 分支上的结果,看看 remove-metaprogramming 分支上的结果究竟差在哪里,然后去定位。

  2. 如果必要,可以修改 test_19 这个测试用例,增加注释,然后方便在两个分支上进行对比。

限制

  1. 不允许修改测试用例,尤其是测试用例的期望值。

  2. 修改过源代码重新测试的时候,最好 pip install -U . 重新安装一下。

初始报错信息:

FAILED tests/strategies/test_19_index_future_momentum.py::test_treasury_futures_macd_strategy - AssertionError: Expected buy_count=38, got 39

================================================== 国债期货 MACD 策略回测结果: bar_num: 1990 buy_count: 39 sell_count: 38 sharpe_ratio: -694.0708400638595 annual_return: -2.6152428615087203e-06 max_drawdown: 6.587194555726902e-05 total_trades: 91 final_value: 999979.3480700012

Traceback (most recent call last): File “/Users/yunjinqi/Documents/量化交易框架/backtrader/tests/strategies/test_19_index_future_momentum.py”, line 324, in test_treasury_futures_macd_strategy() File “/Users/yunjinqi/Documents/量化交易框架/backtrader/tests/strategies/test_19_index_future_momentum.py”, line 309, in test_treasury_futures_macd_strategy assert strat.buy_count == 38, f”Expected buy_count=38, got {strat.buy_count}” ^^^^^^^^^^^^^^^^^^^^^ AssertionError: Expected buy_count=38, got 39