VeighNa量化社区
你的开源社区量化交易平台 | vn.py | vnpy
Member
avatar
加入于:
帖子: 2
声望: 0

交易引擎

self.engine: ScriptEngine = init_cli_trading([CtpGateway])

def connect(self, connect_wait: float = 5.0) -> None:
    """连接 CTP,并等待基础数据加载"""
    with open(self.ctp_setting_path, "r", encoding="utf-8") as f:
        setting = json.load(f)

    self.engine.connect_gateway(setting, "CTP")
    print(f"[CTP] 已发起连接请求,配置文件:{self.ctp_setting_path}")

    print(f"[CTP] 等待 {connect_wait:.1f} 秒让网关登录和合约/资金/持仓查询完成...")
    time.sleep(connect_wait)

    # 注册事件监听
    self.engine.event_engine.register(EVENT_ACCOUNT, self.on_account)
    self.engine.event_engine.register(EVENT_POSITION, self.on_position)

    # 等待最多60秒,直到收到账户和持仓数据
    print("[CTP] 等待账户和持仓数据返回...")
    self.account_received.wait(timeout=60)
    self.position_received.wait(timeout=60)

    # 注销事件监听
    self.engine.event_engine.unregister(EVENT_ACCOUNT, self.on_account)
    self.engine.event_engine.unregister(EVENT_POSITION, self.on_position)

通过上述方式查询是否会出现有误数据呢?,有试过只用get_all_position但总是返回空数据,由此发帖请教如何正确查询持仓数据呢

Member
avatar
加入于:
帖子: 1972
声望: 148

不用做任何register/unregister的事件监听处理操作,直接等待初始化完成后,get_all_positions应该能正常返回数据。

如果没有的话可能就是当前没有持仓。

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

MTF wrote:

不用做任何register/unregister的事件监听处理操作,直接等待初始化完成后,get_all_positions应该能正常返回数据。

如果没有的话可能就是当前没有持仓。
多谢,能再请教下代码实现中怎么确保初始化完成呢,往往合约查询信息返回的会慢一些。

Member
avatar
加入于:
帖子: 5851
声望: 359

合约查询成功日志输出之后

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

沪公网安备 31011502017034号

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