waditu / czsc

缠中说禅技术分析工具;缠论;股票;期货;Quant;量化交易
Other
2.69k stars 933 forks source link

dummy.one_symbol_dummy函数执行出错 #166

Closed Mjzs12138 closed 11 months ago

Mjzs12138 commented 12 months ago

使用示例脚本run_dummy_backtest,执行该函数时,显示策略保存失败。

dummy = czsc.DummyBacktest(strategy=CzscStrategyExample2, read_bars=get_raw_bars, signals_module_name='czsc.signals', sdt='20200101', edt='20230301', signals_path=os.path.join('results', 'dummy_backtest信号'), results_path=os.path.join('results', 'dummy_backtest结果'))

定义需要回测的品种,这里可以自定义

symbols = get_symbols('A股主要指数') dummy.one_symbol_dummy(symbols[0])

2023-09-10 19:53:26.297 | DEBUG | czsc.traders.dummy:one_symbol_dummy:98 - 399682.SZ 15分钟笔停顿 保存失败,原因:"['bid'] not found in axis" 2023-09-10 19:53:26.307 | DEBUG | czsc.traders.dummy:one_symbol_dummy:98 - 399682.SZ 15分钟笔停顿B 保存失败,原因:"['bid'] not found in axis" 2023-09-10 19:53:26.307 | INFO | czsc.traders.dummy:one_symbol_dummy:100 - 399682.SZ 回测完成,共 2 个持仓策略,耗时 2.48 秒

zengbin93 commented 11 months ago

问题出在 holds 数据中没有继续保存 bid 这个字段,这是为了节省内容。将在 0.9.29 版本修复。临时修复方式是,找到源码 czsc.traders.dummy:one_symbol_dummy,将93行注释掉。

dfh['n1b'] = (dfh['price'].shift(-1) / dfh['price'] - 1) * 10000
# dfh.drop(columns=['bid'], inplace=True)
dfh.fillna(0, inplace=True)