跳转到内容

接收配置

调用 reqConfigProtoBuf() 后,TWS 会通过 configResponseProtoBuf() 回调返回配置响应。响应对象是 Protobuf 类型,直接打印不适合阅读,通常先转换成 Python 字典。

from google.protobuf.json_format import MessageToDict
def configResponseProtoBuf(self, configResponseProto):
"""接收 TWS 配置响应。"""
payload = MessageToDict(
configResponseProto,
preserving_proto_field_name=True,
always_print_fields_with_no_presence=True,
)
# api.settings 里是 API 连接、端口、日志、只读模式等配置。
settings = payload.get("api", {}).get("settings", {})
print("Socket 端口:", settings.get("socketPort"))
print("只读 API:", settings.get("readOnlyApi"))
参数作用
preserving_proto_field_name=True保留 Protobuf 字段名,例如 readOnlyApi,避免被转换成其他命名风格。
always_print_fields_with_no_presence=True把没有显式出现但有默认值的字段也输出,便于做配置表。

配置响应通常包含这些顶层分组:

分组说明
reqId请求编号,用来对应本次 reqConfigProtoBuf()
apiAPI 相关配置,最常用。
orders订单相关配置。
messages消息相关配置。
lockAndExit锁定、退出、自动重启相关配置。

api.settings 是最适合在开发工具里展示的一组字段:

字段中文意思常见用途
socketPortSocket 端口判断代码连接端口是否正确。
readOnlyApiAPI 只读模式判断程序能不能提交订单。
allowLocalhostOnly仅允许本地连接判断远程服务器能否直接连 TWS。
trustedIPs受信 IP远程连接排查。
createApiMessageLogFile创建 API 消息日志文件排查协议层问题。
includeMarketDataInLogFileAPI 日志是否包含行情数据日志会变大,通常只在排查时启用。
downloadOpenOrdersOnConnection连接时下载未成交订单影响程序启动后是否马上收到订单状态。
sendStatusUpdatesForVolatilityOrders波动率订单是否发送状态更新做期权/波动率订单时需要关注。
prepareDailyPnL是否准备每日盈亏和账户盈亏展示有关。
loggingLevelAPI 日志级别常见值如 error
encodeApiMessages是否对 API 消息编码与 API 消息格式有关,一般保持 TWS 当前设置。
bulkDataTimeout批量数据超时影响部分批量响应等待时间。
historicalDataMaxSize历史数据最大大小与历史数据返回规模有关。
sendInstrumentTimezone合约时区字段发送方式影响行情或合约相关响应里的时区信息。
rejectMessagesAboveMaxRate超过最大消息速率时拒绝消息和限频、节流保护有关。
showAdvancedOrderRejectInUi是否在界面显示高级订单拒绝信息排查订单拒绝原因时有用。
totalQuantityForMutualFunds共同基金数量字段行为只在共同基金相关订单中关注。
useAccountGroupsWithAllocationMethods是否把账户组与分配方法一起使用财务顾问账户或分配订单中关注。
useNegativeAutoRange是否使用负数自动范围特定界面和字段显示行为,普通 API 程序通常只读取不修改。

api.precautions 对应 TWS API 订单预防设置。它们会影响下单时是否弹出或跳过某些风险提示。

字段中文意思
bypassOrderPrecautions跳过订单预防设置
bypassBondWarning跳过债券警告
bypassCalledBondWarning跳过已赎回债券相关警告
bypassNegativeYieldConfirmation跳过负收益率确认
bypassNoOverfillProtection跳过无超额成交保护提示
bypassRedirectOrderWarning跳过订单重定向警告
bypassPriceBasedVolatilityWarning跳过基于价格波动的风险警告
bypassSameActionPairTradeWarning跳过相同行为配对交易警告
bypassRouteMarketableToBBO跳过 Route Marketable to BBO 警告

这些字段可以帮助开发者解释“为什么某个 API 订单被 TWS 拦住”。不建议在程序里默认跳过所有提示;更合理的做法是把具体提示展示给用户,让用户理解订单风险后再决定。