VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 46
声望: 0

rt

Member
avatar
加入于:
帖子: 4622
声望: 284

可以自己调用RecorderEngine实现看看了

Member
avatar
加入于:
帖子: 46
声望: 0

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'

Member
avatar
加入于:
帖子: 124
声望: 4

类的初始化需要传入那两个值,你调用的时候要传

Member
avatar
加入于:
帖子: 46
声望: 0

七月雪 wrote:

类的初始化需要传入那两个值,你调用的时候要传

请问怎么传这两个值才是当前的main_engine?

Member
avatar
加入于:
帖子: 46
声望: 0

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)
Member
avatar
加入于:
帖子: 46
声望: 0

代码运行到main_engine.add_gateway()就停了,停在了下面框选的位置,有没有人知道该怎么做?
description

Member
avatar
加入于:
帖子: 4622
声望: 284

可以到对应gateway的init函数下打印排查看看

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】