账户摘要标签
reqAccountSummary() 的第三个参数 tags 决定要返回哪些账户摘要字段。它是英文逗号分隔的字符串,例如:
tags = "NetLiquidation,BuyingPower,AvailableFunds"app.reqAccountSummary(9001, "All", tags)标签名必须使用官方英文值。中文文档可以解释字段含义,但代码里不要把字段名翻译成中文。
Python API 提供了 AccountSummaryTags 常量类。推荐优先用常量拼接,减少手写拼错:
from ibapi.account_summary_tags import AccountSummaryTags
tags = ",".join([ AccountSummaryTags.NetLiquidation, # 净清算值 AccountSummaryTags.BuyingPower, # 购买力 AccountSummaryTags.AvailableFunds, # 可用资金])也可以直接写字符串:
tags = "NetLiquidation,BuyingPower,AvailableFunds"实际项目里更推荐把常用组合封装成自己的列表,例如“账户概览字段”“保证金字段”“风控字段”,不要每个脚本里都手写一长串。
这些字段最适合新手先跑通账户摘要请求:
| 标签 | 中文含义 | 说明 |
|---|---|---|
AccountType | 账户类型 | 例如现金账户、保证金账户等;通常没有币种 |
NetLiquidation | 净清算值 | 账户总权益的常用口径,常用于资产概览和仓位比例计算 |
TotalCashValue | 总现金价值 | 现金余额相关字段,可能包含期货盈亏影响 |
BuyingPower | 购买力 | 账户大致还能买入多少保证金证券 |
AvailableFunds | 可用资金 | 开新仓前最常看的可用资金字段之一 |
ExcessLiquidity | 超额流动性 | 保证金压力相关字段,过低时需要重点关注 |
Cushion | 安全垫比例 | ExcessLiquidity / NetLiquidation 附近的风险观察口径 |
如果只是做最小检查时,建议先请求:
tags = "NetLiquidation,BuyingPower,AvailableFunds"现金与权益字段
Section titled “现金与权益字段”| 标签 | 中文含义 | 说明 |
|---|---|---|
SettledCash | 已结算现金 | 对现金账户尤其重要;和未结算资金不是同一概念 |
AccruedCash | 应计现金 | 应计利息、费用等尚未最终结算的现金项 |
EquityWithLoanValue | 含借贷价值权益 | 现金、股票、债券、基金等综合权益口径 |
PreviousDayEquityWithLoanValue | 前一日含借贷价值权益 | 用于对比前一交易日权益变化 |
GrossPositionValue | 持仓总市值 | 股票和权益期权持仓绝对值之和 |
这些字段适合账户面板和风险看板。做下单前资金判断时,不要只看一个字段,通常还要结合订单预检查、产品类型和账户权限。
| 标签 | 中文含义 | 说明 |
|---|---|---|
InitMarginReq | 初始保证金要求 | 建仓所需保证金 |
MaintMarginReq | 维持保证金要求 | 持仓期间需要维持的保证金 |
FullInitMarginReq | 完整初始保证金要求 | 更完整口径下的初始保证金要求 |
FullMaintMarginReq | 完整维持保证金要求 | 更完整口径下的维持保证金要求 |
FullAvailableFunds | 完整口径可用资金 | 完整保证金口径下的可用资金 |
FullExcessLiquidity | 完整口径超额流动性 | 完整保证金口径下的超额流动性 |
保证金字段会受账户类型、产品类型、监管规则和实时风险模型影响。它们适合做风险展示,但不能代替真实下单前的订单校验。
前瞻保证金字段
Section titled “前瞻保证金字段”| 标签 | 中文含义 | 说明 |
|---|---|---|
LookAheadNextChange | 下一次前瞻值生效时间 | 用于查看保证金口径下一次变化时间 |
LookAheadInitMarginReq | 前瞻初始保证金要求 | 未来口径下的初始保证金要求 |
LookAheadMaintMarginReq | 前瞻维持保证金要求 | 未来口径下的维持保证金要求 |
LookAheadAvailableFunds | 前瞻可用资金 | 未来口径下的可用资金 |
LookAheadExcessLiquidity | 前瞻超额流动性 | 未来口径下的超额流动性 |
这组字段适合更细的保证金风险提示。新手阶段可以先理解普通保证金字段,再使用前瞻字段。
风险与交易限制字段
Section titled “风险与交易限制字段”| 标签 | 中文含义 | 说明 |
|---|---|---|
HighestSeverity | 最高风险严重级别 | 官方用于描述账户接近强平风险的等级信号 |
DayTradesRemaining | 当日交易剩余额度 | PDT 规则相关;-1 通常表示不受该限制 |
Leverage | 杠杆率 | 常见口径是 GrossPositionValue / NetLiquidation |
SMA | Special Memorandum Account | 美股保证金账户相关字段 |
风险字段只能作为提示,不能当作唯一风控条件。真实交易系统还应结合订单状态、持仓、市场数据、产品规则和错误码处理。
RegT 与 ReqT 命名差异
Section titled “RegT 与 ReqT 命名差异”官方说明里常见字段名是 RegTEquity 和 RegTMargin,表示 Regulation T 相关权益和保证金字段。
Python API 的 AccountSummaryTags 常量类中暴露的是:
AccountSummaryTags.ReqTEquityAccountSummaryTags.ReqTMargin也就是说,常量名是 ReqT...,而不是 RegT...。使用常量时按安装包为准;如果手写字符串,应优先在实际 TWS 环境里检查是否返回对应字段。
Ledger 特殊标签
Section titled “Ledger 特殊标签”除普通标签外,官方还支持 $LEDGER 系列特殊标签,用来请求现金余额相关字段:
| 标签 | 中文含义 | 说明 |
|---|---|---|
$LEDGER | 基础币种 Ledger | 返回基础币种下的现金余额相关字段 |
$LEDGER:USD | 指定币种 Ledger | 只请求指定币种,例如美元 |
$LEDGER:ALL | 全部币种 Ledger | 请求所有币种的现金余额相关字段 |
这类标签不在 Python AccountSummaryTags.AllTags 普通常量列表里。需要使用时可以直接写字符串:
tags = "$LEDGER:USD"$LEDGER:ALL 可能返回更多行,调试时建议先从单一币种开始,避免日志里出现大量敏感现金余额。
AllTags 行为
Section titled “AllTags 行为”AccountSummaryTags.AllTags 会拼接官方 Python 常量类里的普通标签:
from ibapi.account_summary_tags import AccountSummaryTags
tags = AccountSummaryTags.AllTags本地安装的 Python API 中,AllTags 包含 29 个普通标签。它适合做字段探索,但不建议生产代码默认长期请求全部字段。
请求全部普通标签时,TWS 模拟账户可能不会返回所有字段:
CONNECTED=TrueREQUESTED_TAG_COUNT=29RAW_CALLBACK_ROWS=44UNIQUE_FIELD_ROWS=22RECEIVED_TAG_COUNT=22RECEIVED_TAGS=AccountType,AccruedCash,AvailableFunds,BuyingPower,Cushion,EquityWithLoanValue,ExcessLiquidity,FullAvailableFunds,FullExcessLiquidity,FullInitMarginReq,FullMaintMarginReq,GrossPositionValue,InitMarginReq,LookAheadAvailableFunds,LookAheadExcessLiquidity,LookAheadInitMarginReq,LookAheadMaintMarginReq,LookAheadNextChange,MaintMarginReq,NetLiquidation,SMA,TotalCashValueCURRENCIES=EMPTY,USDNON_INFO_ERROR_COUNT=0IS_CONNECTED_AFTER_DISCONNECT=False这说明三件事:
- 请求了某个标签,不代表账户一定会返回这个标签。
- 同一个字段可能因为初始快照和更新收到多次回调。
- 公开输出时应只保留字段结构,账户号和金额必须脱敏。
字段选择建议
Section titled “字段选择建议”| 场景 | 建议标签 |
|---|---|
| 最小连通性验证 | NetLiquidation,BuyingPower,AvailableFunds |
| 账户概览面板 | AccountType,NetLiquidation,TotalCashValue,BuyingPower,AvailableFunds,ExcessLiquidity,Cushion |
| 保证金风险展示 | InitMarginReq,MaintMarginReq,ExcessLiquidity,Cushion,HighestSeverity |
| 现金余额查看 | TotalCashValue,SettledCash,AccruedCash 或 $LEDGER:USD |
| 字段探索 | AccountSummaryTags.AllTags,但只在调试阶段使用 |
字段越多,日志和界面里越容易出现敏感财务数据。开发时可以请求较多字段,公开文档、报错信息和线上日志里应尽量只保留字段名、状态和脱敏后的结构。
| 现象 | 常见原因 | 处理方式 |
|---|---|---|
| 手写字段收不到结果 | 标签名拼错,或账户不支持该字段 | 先用 AccountSummaryTags 常量,或用少量常见字段验证 |
AllTags 请求后返回字段少于 29 个 | 账户类型、权限或数据状态不支持全部字段 | 按实际返回字段处理,不要假设每个字段必定存在 |
currency 是空 | 字段不是金额字段,例如 AccountType 或 Cushion | 允许空币种,显示为 EMPTY 或空字符串 |
| 金额计算精度不稳定 | 把字符串金额直接转成浮点数计算 | 财务金额建议用 Decimal 处理 |
| 想查看持仓明细 | 账户摘要不是持仓接口 | 使用 reqPositions() 或账户更新/组合相关接口 |