接收配置
调用 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"))MessageToDict() 参数
Section titled “MessageToDict() 参数”| 参数 | 作用 |
|---|---|
preserving_proto_field_name=True | 保留 Protobuf 字段名,例如 readOnlyApi,避免被转换成其他命名风格。 |
always_print_fields_with_no_presence=True | 把没有显式出现但有默认值的字段也输出,便于做配置表。 |
配置响应通常包含这些顶层分组:
| 分组 | 说明 |
|---|---|
reqId | 请求编号,用来对应本次 reqConfigProtoBuf()。 |
api | API 相关配置,最常用。 |
orders | 订单相关配置。 |
messages | 消息相关配置。 |
lockAndExit | 锁定、退出、自动重启相关配置。 |
api.settings
Section titled “api.settings”api.settings 是最适合在开发工具里展示的一组字段:
| 字段 | 中文意思 | 常见用途 |
|---|---|---|
socketPort | Socket 端口 | 判断代码连接端口是否正确。 |
readOnlyApi | API 只读模式 | 判断程序能不能提交订单。 |
allowLocalhostOnly | 仅允许本地连接 | 判断远程服务器能否直接连 TWS。 |
trustedIPs | 受信 IP | 远程连接排查。 |
createApiMessageLogFile | 创建 API 消息日志文件 | 排查协议层问题。 |
includeMarketDataInLogFile | API 日志是否包含行情数据 | 日志会变大,通常只在排查时启用。 |
downloadOpenOrdersOnConnection | 连接时下载未成交订单 | 影响程序启动后是否马上收到订单状态。 |
sendStatusUpdatesForVolatilityOrders | 波动率订单是否发送状态更新 | 做期权/波动率订单时需要关注。 |
prepareDailyPnL | 是否准备每日盈亏 | 和账户盈亏展示有关。 |
loggingLevel | API 日志级别 | 常见值如 error。 |
encodeApiMessages | 是否对 API 消息编码 | 与 API 消息格式有关,一般保持 TWS 当前设置。 |
bulkDataTimeout | 批量数据超时 | 影响部分批量响应等待时间。 |
historicalDataMaxSize | 历史数据最大大小 | 与历史数据返回规模有关。 |
sendInstrumentTimezone | 合约时区字段发送方式 | 影响行情或合约相关响应里的时区信息。 |
rejectMessagesAboveMaxRate | 超过最大消息速率时拒绝消息 | 和限频、节流保护有关。 |
showAdvancedOrderRejectInUi | 是否在界面显示高级订单拒绝信息 | 排查订单拒绝原因时有用。 |
totalQuantityForMutualFunds | 共同基金数量字段行为 | 只在共同基金相关订单中关注。 |
useAccountGroupsWithAllocationMethods | 是否把账户组与分配方法一起使用 | 财务顾问账户或分配订单中关注。 |
useNegativeAutoRange | 是否使用负数自动范围 | 特定界面和字段显示行为,普通 API 程序通常只读取不修改。 |
api.precautions
Section titled “api.precautions”api.precautions 对应 TWS API 订单预防设置。它们会影响下单时是否弹出或跳过某些风险提示。
| 字段 | 中文意思 |
|---|---|
bypassOrderPrecautions | 跳过订单预防设置 |
bypassBondWarning | 跳过债券警告 |
bypassCalledBondWarning | 跳过已赎回债券相关警告 |
bypassNegativeYieldConfirmation | 跳过负收益率确认 |
bypassNoOverfillProtection | 跳过无超额成交保护提示 |
bypassRedirectOrderWarning | 跳过订单重定向警告 |
bypassPriceBasedVolatilityWarning | 跳过基于价格波动的风险警告 |
bypassSameActionPairTradeWarning | 跳过相同行为配对交易警告 |
bypassRouteMarketableToBBO | 跳过 Route Marketable to BBO 警告 |
这些字段可以帮助开发者解释“为什么某个 API 订单被 TWS 拦住”。不建议在程序里默认跳过所有提示;更合理的做法是把具体提示展示给用户,让用户理解订单风险后再决定。