请求配置
reqConfigProtoBuf() 用来读取 TWS 里与 API 相关的一组配置。它适合放在程序启动前的环境检查流程里:先看 TWS 是否允许 Socket 连接、端口是否一致、是否处于只读模式,再决定能不能继续连接、请求行情或提交订单。
这个接口使用 Protobuf 对象,不是普通字符串参数。官方说明里,设置管理从 TWS API 10.44 开始用于读取或修改订单、预防和 API 设置;如果要通过 API 修改配置,TWS 里的只读模式必须先在图形界面手动关闭。
官方参考:
from ibapi.protobuf.ConfigRequest_pb2 import ConfigRequest
# 创建配置读取请求。reqId 用来把请求和回调对应起来。request = ConfigRequest()request.reqId = 98501
# 发送请求后,结果会从 configResponseProtoBuf() 回调返回。app.reqConfigProtoBuf(request)| 参数 | 类型 | 说明 |
|---|---|---|
ConfigRequest() | Protobuf 请求对象 | 配置读取请求本身。这个对象来自 ibapi.protobuf.ConfigRequest_pb2。 |
reqId | 整数 | 请求编号。建议每次请求使用不同编号,方便日志排查。 |
reqConfigProtoBuf() 没有合约、账户、订单等业务参数。它读取的是 TWS 配置状态,不读取账户资金、持仓或行情。
一次正常响应的顶层结构类似:
CONFIG_TOP_KEYS=api,lockAndExit,messages,orders,reqId常用字段会出现在 api.settings 下:
SETTING_readOnlyApi=FalseSETTING_socketPort=7497SETTING_allowLocalhostOnly=TrueSETTING_trustedIPs=[]SETTING_maintainAndResubmitOrdersOnReconnect=TrueSETTING_maintainConnectionOnIncorrectFields=TrueSETTING_loggingLevel=error常用字段解释
Section titled “常用字段解释”| 字段 | 中文意思 | 使用建议 |
|---|---|---|
readOnlyApi | API 是否处于只读模式 | True 时程序不能提交订单;要下单必须在 TWS API 设置里关闭只读。 |
socketPort | TWS Socket 端口 | 模拟交易常见为 7497,实盘常见为 7496;程序 connect() 使用的端口必须一致。 |
allowLocalhostOnly | 是否只允许本地连接 | True 时只有同一台机器上的程序能连;服务器远程连接需要额外配置受信 IP。 |
trustedIPs | 受信 IP 列表 | 用于允许指定远程 IP 连接 TWS。空列表通常表示没有额外受信 IP。 |
maintainAndResubmitOrdersOnReconnect | 连接恢复后维护并重新提交订单 | 和网络断开后的订单恢复行为有关,适合在交易系统启动检查中展示。 |
maintainConnectionOnIncorrectFields | 字段格式错误时是否保持连接 | 开发阶段建议知道这个值,避免一个格式错误导致连接被断开。 |
loggingLevel | API 日志级别 | 常见值如 error。排查问题时可结合 TWS 图形界面调整。 |
开发流程中的用法
Section titled “开发流程中的用法”建议在程序启动时做三步检查:
- 先调用
reqConfigProtoBuf()读取配置。 - 检查
socketPort是否和代码里的connect(host, port, clientId)一致。 - 检查
readOnlyApi、allowLocalhostOnly、trustedIPs,再决定是否允许程序进入下单流程。
如果只是开发行情、合约查询、历史 K 线功能,readOnlyApi=True 不一定会阻止你继续;如果要提交订单、修改订单或取消订单,必须确认只读模式已经关闭。