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

import time
from vnpy.trader.utility import load_json
from vnpy_scripttrader import init_cli_trading
from vnpy_ctp import CtpGateway

setting = load_json("connect_ctp.json")
engine = init_cli_trading([CtpGateway])
engine.connect_gateway(setting, "CTP")

time.sleep(60)  #不加这一步看不到账户信息

print(engine.get_all_accounts(use_df=True))

connect gateway如果不等最后的”合约信息查询成功“,无法查看账户信息:

2026-01-29 15:05:47.198 | INFO | CTP | 交易服务器连接成功
2026-01-29 15:05:47.214 | INFO | CTP | 行情服务器连接成功
2026-01-29 15:05:47.754 | INFO | CTP | 交易服务器授权验证成功
2026-01-29 15:05:47.755 | INFO | CTP | 行情服务器登录成功
2026-01-29 15:05:47.781 | INFO | CTP | 交易服务器登录成功
2026-01-29 15:05:48.362 | INFO | CTP | 结算信息确认成功
[CTP] 未获取到账户信息
2026-01-29 15:06:11.237 | INFO | CTP | 合约信息查询成功

一定要等最后的合约信息查询成功,调用get_all_accounts才有输出:

2026-01-29 15:13:41.429 | INFO | CTP | 交易服务器连接成功
2026-01-29 15:13:41.438 | INFO | CTP | 行情服务器连接成功
2026-01-29 15:13:42.067 | INFO | CTP | 行情服务器登录成功
2026-01-29 15:13:42.067 | INFO | CTP | 交易服务器授权验证成功      
2026-01-29 15:13:42.153 | INFO | CTP | 交易服务器登录成功
2026-01-29 15:13:42.690 | INFO | CTP | 结算信息确认成功
2026-01-29 15:14:06.145 | INFO | CTP | 合约信息查询成功
[AccountData(gateway_name='CTP', extra=None, accountid='xxxxxxxx', balance=87459916.78, frozen=0.0)]
[CTP] 账户资金信息:
  账户: xxxxxxxx
  可用资金: 53189553.38000001
  冻结资金: 0.0
  总资金: 87459916.78

请问为什么一定要等这个才会有输出。有没有什么办法可以加速”合约信息查询成功“这一步骤,或者有没有什么其他优化账户查询的办法

Member
avatar
加入于:
帖子: 2026
声望: 156

因为初始化阶段,等待从服务器返回数据是需要时间的

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

MTF wrote:

因为初始化阶段,等待从服务器返回数据是需要时间的
谢谢您的回复,想问问有没有什么办法能查询”所有初始化已经完成“,比如engine或者gateway里面有没有什么flag标识可以查询。用sleep的方法感觉不太合理。

Member
avatar
加入于:
帖子: 5993
声望: 369

可以尝试给接口维护contract_inited变量,但是建议还是sleep久一点比较好

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

xiaohe wrote:

可以尝试给接口维护contract_inited变量,但是建议还是sleep久一点比较好
多谢回复,请问怎么从engine找到contract_inited变量?这边看源代码没找到在哪里。麻烦您解答一下

Member
avatar
加入于:
帖子: 5993
声望: 369

自己在收到合约信息查询成功之后维护,需要自行开发

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

沪公网安备 31011502017034号

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