之前有同学指导调用self.bg.bar数据进行计算,但是实测打印self.bg.bar数据的时候遇到NoneType错误。
def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
super().__init__(cta_engine, strategy_name, vt_symbol, setting)
if self.log:
self.log_fp = open(f"{strategy_name}.log", "w+")
self.strategy_name = strategy_name
self.bg5 = BarGenerator(self.on_bar, 5, self.on_5min_bar)
self.am5 = ArrayManager()
self.bg10 = BarGenerator(self.on_bar, 10, self.on_10min_bar)
self.am10 = ArrayManager()
def on_bar(self, bar: BarData):
"""
Callback of new bar data update.
"""
self.bg5.update_bar(bar)
self.bg10.update_bar(bar)
def on_5min_bar(self, bar: BarData):
""""""
self.cancel_all()
am5 = self.am5
am10 = self.am10
am15 = self.am15
am30 = self.am30
am60 = self.am60
am5.update_bar(bar)
self.write_log(self.bg10.bar.open_price)
am10.update_bar(self.bg10.bar)
异常信息如下:
2024-09-07 10:13:04.799309 开始加载历史数据
2024-09-07 10:13:04.800308 加载进度:# [0%]
2024-09-07 10:13:05.151384 加载进度:# [9%]
2024-09-07 10:13:05.303388 加载进度:## [19%]
2024-09-07 10:13:05.527420 加载进度:### [28%]
2024-09-07 10:13:05.774416 加载进度:#### [38%]
2024-09-07 10:13:06.027273 加载进度:##### [47%]
2024-09-07 10:13:06.297264 加载进度:###### [56%]
2024-09-07 10:13:06.566259 加载进度:####### [66%]
2024-09-07 10:13:06.896454 加载进度:######## [75%]
2024-09-07 10:13:07.095457 加载进度:######### [84%]
2024-09-07 10:13:07.320836 加载进度:########## [94%]
2024-09-07 10:13:07.572031 历史数据加载完成,数据量:49780
Traceback (most recent call last):
File "C:\veighna_studio\Lib\site-packages\vnpy_ctastrategy\strategies\backtest.py", line 47, in <module>
engine.run_backtesting()
File "C:\veighna_studio\lib\site-packages\vnpy_ctastrategy\backtesting.py", line 219, in run_backtesting
self.strategy.on_init()
File "C:\veighna_studio\lib\site-packages\vnpy_ctastrategy\strategies\ag2410_kdj_multi_timeframe_v1.py", line 534, in on_init
self.load_bar(10)
File "C:\veighna_studio\lib\site-packages\vnpy_ctastrategy\template.py", line 315, in load_bar
callback(bar)
File "C:\veighna_studio\lib\site-packages\vnpy_ctastrategy\strategies\ag2410_kdj_multi_timeframe_v1.py", line 558, in on_bar
self.bg5.update_bar(bar)
File "C:\veighna_studio\lib\site-packages\vnpy\trader\utility.py", line 274, in update_bar
self.update_bar_minute_window(bar)
File "C:\veighna_studio\lib\site-packages\vnpy\trader\utility.py", line 313, in update_bar_minute_window
self.on_window_bar(self.window_bar)
File "C:\veighna_studio\lib\site-packages\vnpy_ctastrategy\strategies\ag2410_kdj_multi_timeframe_v1.py", line 574, in on_5min_bar
self.write_log(self.bg10.bar.open_price)
AttributeError: 'NoneType' object has no attribute 'open_price'