rt
rt
可以自己调用RecorderEngine实现看看了
xiaohe wrote:
可以自己调用RecorderEngine实现看看了
我的程序是:
self.recorder_engine=RecorderEngine()
try:
self.recorder_engine.add_bar_recording(self.recorder_engine,vt_symbol=self.vt_symbol)
except:
exstr = traceback.format_exc()
print(exstr)
try:
self.recorder_engine.add_tick_recording(self.recorder_engine,vt_symbol=self.vt_symbol)
except:
exstr = traceback.format_exc()
print(exstr)
但是会报错:
[ZNC2303] 触发异常已停止
Traceback (most recent call last):
File "C:\veighna_studio\lib\site-packages\vnpy_ctastrategy\engine.py", line 684, in call_strategy_func
func()
File "C:\veighna_studio\lib\site-packages\vnpy_ctastrategy\strategies\吕总策略一.py", line 156, in on_start
self.recorder_engine=RecorderEngine()
TypeError: RecorderEngine.init() missing 2 required positional arguments: 'main_engine' and 'event_engine'
类的初始化需要传入那两个值,你调用的时候要传
def insertheyue(self):
print(self.vt_symbol)
if self.vt_symbol.split(".")[1] =="SHFE" or self.vt_symbol.split(".")[1] =="INE" or self.vt_symbol.split(".")[1] =="DCE" or self.vt_symbol.split(".")[1] =="CZCE":
gateway_name="CTP"
# 策略开启即自动添加行情记录
# 事件引擎
event_engine = EventEngine()
# 主要引擎
main_engine = MainEngine(event_engine)
main_engine.add_gateway(CtpGateway)
path = os.path.join(TEMP_DIR, "connect_ctp.json")
with open(path, 'r', encoding='utf-8') as fp:
data = json.load(fp)
fp.close()
main_engine.connect(data, 'CTP')
req: SubscribeRequest = SubscribeRequest(
self.vt_symbol.split(".")[0],
eval("Exchange." + self.vt_symbol.split(".")[1])
)
main_engine.subscribe(req, 'CTP')
self.recorder_engine = RecorderEngine(main_engine, event_engine)
try:
self.recorder_engine.add_bar_recording(vt_symbol=self.vt_symbol) # self.recorder_engine,
except:
exstr = traceback.format_exc()
print(exstr)
try:
self.recorder_engine.add_tick_recording(vt_symbol=self.vt_symbol)
except:
exstr = traceback.format_exc()
print(exstr)
elif self.vt_symbol.split(".")[1] =="CME":
gateway_name = "DA"
# 策略开启即自动添加行情记录
# 事件引擎
event_engine = EventEngine()
# 主要引擎
main_engine = MainEngine(event_engine)
print("4")
main_engine.add_gateway(DaGateway)
path = os.path.join(TEMP_DIR, "connect_da.json")
print(path)
with open(path, 'r', encoding='utf-8') as fp:
data = json.load(fp)
print(data)
fp.close()
print("5")
main_engine.connect(data, 'DA')
print("6")
req: SubscribeRequest = SubscribeRequest(
self.vt_symbol.split(".")[0],
eval("Exchange." + self.vt_symbol.split(".")[1])
)
print("7")
main_engine.subscribe(req, 'DA')
print("8")
self.recorder_engine = RecorderEngine(main_engine, event_engine)
try:
print("1")
self.recorder_engine.add_bar_recording(vt_symbol=self.vt_symbol) # self.recorder_engine,
except:
print("9")
exstr = traceback.format_exc()
print(exstr)
try:
print("2")
self.recorder_engine.add_tick_recording(vt_symbol=self.vt_symbol)
except:
print("10")
exstr = traceback.format_exc()
print(exstr)
print("3")
setting_filename="data_recorder_setting.json"
print(setting_filename)
data= load_json(setting_filename)
print(data)
if self.vt_symbol in data["tick"].keys():
pass
else:
data["tick"][self.vt_symbol]={"symbol":self.vt_symbol.split(".")[0],"exchange":self.vt_symbol.split(".")[1],"gateway_name": gateway_name}
if self.vt_symbol in data["bar"].keys():
pass
else:
data["bar"][self.vt_symbol]={"symbol":self.vt_symbol.split(".")[0],"exchange":self.vt_symbol.split(".")[1],"gateway_name": gateway_name}
save_json(setting_filename, data)
代码运行到main_engine.add_gateway()就停了,停在了下面框选的位置,有没有人知道该怎么做?
可以到对应gateway的init函数下打印排查看看