重修vn.py笔记 之 九: 调试之日志
调试策略。
在vnpy 默认环境下调试策略,很不灵活,自己搞一个简单的测试环境,可以随心所欲地调式。
调试时,调试过程需要写入到日志里。 下面演示这个过程:
from datetime import datetime
from vnpy_ctastrategy.backtesting import BacktestingEngine
from strategies.ma_strategy import MaStrategy
engine = BacktestingEngine()
engine.set_parameters(
vt_symbol="rb888.SHFE",
interval="1h",
start=datetime(2025, 1, 1),
end=datetime(2025, 12, 30),
rate=1.5/10000,
slippage=1,
size=10,
pricetick=1,
capital=1_000_000,
)
engine.add_strategy(MaStrategy, {})
engine.load_data()
engine.run_backtesting()
# df = engine.calculate_result()
# engine.calculate_statistics()
# fig = engine.show_chart()
# fig.show()
for log in engine.logs:
print(log)
回测引擎只负责将策略的log保存在自己的log里。 如果想更方便,可以把最后的log输出到文件里。
通过这个测试,发现vnpy存在一个瑕疵:回测引擎里,只有new_bar 和 on_tick 时,才更新 引擎的datetime, 在非tick级回测或者没有合成bar时,不会调用这两个函数,造成日志日期显示都是 1970.1.1
修改开源代码显然不是个好主意,在测试时,自己将日期写入测试语句就好。
浙公网安备 33010602011771号