QPro 本地 API 数据结构与字段说明
QPro 本地 API 包含三类数据结构:
8811账户数据服务:查询 QPro 本地节点数据写入的 SQLite 快照表。8812实时行情服务:通过 SSE 返回完整 Quote JSON 对象,不新增 SQLite 表。8813合约信息服务:返回合约代码列表或合约信息 JSON 对象,不新增 SQLite 表。
账户数据服务当前提供四张表:
AccountSnap:账户资金快照。PositionSnap:持仓快照。OrderSnap:委托快照。TradeSnap:成交快照。
账户数据的实际可查询字段可以通过 GET /tables 获取。本文同时说明当前版本的实时行情和合约信息返回结构。
账户数据结构(8811)
刷新机制
QPro 写入线程大约每 500ms 从节点数据库读取一次数据,并按 node_key 对 SQLite 表执行 upsert。表内每行代表一个账户、持仓、委托或成交对象的最新快照。
insert_time 是本地 SQLite 首次插入该行的时间。update_time 是该行最近一次被 QPro upsert 的 SQLite 时间,不等同于交易所事件时间。
账户数据会在账户 ready 后写入,持仓数据会在持仓 ready 后写入。委托和成交按节点数据到达情况写入。
公共字段
字段 |
含义 |
|---|---|
|
QPro 节点数据中的唯一键,也是各表主键。 |
|
本地 SQLite 首次插入该行的时间。 |
|
本地 SQLite 最近一次更新该行的时间。 |
|
QPro 内部账户 key。过滤单个账户时优先使用该字段。 |
|
柜台/经纪商侧投资者账号。 |
|
QPro 中显示的账户描述。 |
枚举字段
字段 |
可能取值 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AccountSnap
索引:
account_update_time_idx(update_time DESC)account_user_key_idx(user_key)
字段 |
含义 |
|---|---|
|
币种,默认 |
|
上日结存。 |
|
入金。 |
|
出金。 |
|
平仓盈亏。 |
|
持仓盈亏。 |
|
浮动盈亏。 |
|
客户权益。 |
|
账户余额。 |
|
当前保证金占用。 |
|
冻结保证金。 |
|
手续费。 |
|
冻结手续费。 |
|
权利金。 |
|
冻结权利金。 |
|
可用资金。 |
|
风险度。 |
|
参考风险度。 |
|
期权市值。 |
|
期权买持市值。 |
|
期权卖持市值。 |
|
质押金额。 |
PositionSnap
索引:
position_update_time_idx(update_time DESC)position_user_key_idx(user_key)position_instrument_id_idx(instrument_id)
字段 |
含义 |
|---|---|
|
交易所代码。 |
|
合约代码。 |
|
QPro 行情模型中的 symbol。 |
|
品种代码。 |
|
合约乘数。 |
|
持仓快照使用的最新价。 |
|
是否风险持仓, |
|
多头总持仓。 |
|
多头冻结持仓。 |
|
空头总持仓。 |
|
空头冻结持仓。 |
|
净持仓,通常为多头减空头。 |
|
昨仓数量。 |
|
昨仓净数量。 |
|
总持仓数量。 |
|
今仓数量。 |
|
冻结持仓数量。 |
|
组合持仓数量。 |
|
多头组合持仓数量。 |
|
空头组合持仓数量。 |
|
其他类别持仓总量。 |
|
浮动盈亏。 |
|
持仓盈亏。 |
|
平仓盈亏。 |
|
按开仓价计算的平仓盈亏。 |
|
该持仓保证金占用。 |
|
该持仓权利金。 |
|
未实现/未交易盈亏字段。 |
|
交易盈亏字段。 |
|
该持仓手续费。 |
|
多头市值。 |
|
空头市值。 |
|
昨日多头市值。 |
|
昨日空头市值。 |
|
交易单元 id,默认交易单元通常为 |
|
合约类型。 |
持仓子字段
PositionSnap 还展开了四组子持仓字段:
long_spec_:多头投机。long_other_:多头其他。short_spec_:空头投机。short_other_:空头其他。
每组前缀都有以下后缀:
后缀 |
含义 |
|---|---|
|
昨仓数量。 |
|
今仓数量。 |
|
历史持仓数量。 |
|
组合持仓数量。 |
|
今仓冻结数量。 |
|
历史持仓冻结数量。 |
|
行权/执行冻结数量。 |
|
历史行权/执行冻结数量。 |
|
开仓价。 |
|
浮动盈亏。 |
|
持仓价。 |
|
持仓盈亏。 |
|
平仓盈亏。 |
|
按开仓价计算的平仓盈亏。 |
|
保证金。 |
|
市值。 |
|
昨日市值。 |
|
手续费。 |
|
未实现/未交易盈亏。 |
|
权利金。 |
例如 long_spec_volume_today、short_other_margin、short_spec_position_profit 都是有效字段。
OrderSnap
索引:
order_update_time_idx(update_time DESC)order_insert_date_time_idx(insert_date_time DESC)order_instrument_id_idx(instrument_id)
字段 |
含义 |
|---|---|
|
柜台侧用户 id。 |
|
交易所代码。 |
|
合约代码。 |
|
QPro 行情模型中的 symbol。 |
|
品种代码。 |
|
合约乘数。 |
|
合约类型。 |
|
QPro/源模型委托 id,可与 |
|
是否互换/换仓相关委托, |
|
是否询价/报价相关委托, |
|
投保标志。 |
|
买卖方向。 |
|
开平标志。 |
|
价格类型。 |
|
限价。 |
|
原始委托数量。字段名沿用源模型拼写。 |
|
剩余未成交数量。 |
|
已成交数量。 |
|
成交量类型。 |
|
最小成交数量。 |
|
有效期类型。 |
|
委托状态。 |
|
交易所委托编号。 |
|
源模型委托插入时间,BIGINT。 |
|
源模型委托结束时间,BIGINT。 |
|
最近成交时间,BIGINT。 |
|
状态消息。 |
|
强平原因。 |
|
用户产品信息。 |
|
本地委托编号。 |
|
交易员代码。 |
|
报单引用。 |
|
前置编号。 |
|
会话编号。 |
|
交易单元 id。 |
|
序号。 |
|
QPro 源模型流水索引。 |
|
请求编号。 |
|
委托模型中的成交价格字段。 |
|
委托模型中的累计成交数量字段。 |
|
成交信息是否 ready, |
|
发送时间,BIGINT。 |
|
接收时间,BIGINT。 |
|
用户备注信息。 |
TradeSnap
索引:
trade_update_time_idx(update_time DESC)trade_trade_date_time_idx(trade_date_time DESC)trade_instrument_id_idx(instrument_id)
字段 |
含义 |
|---|---|
|
柜台侧用户 id。 |
|
交易所成交编号。 |
|
交易所代码。 |
|
合约代码。 |
|
QPro 行情模型中的 symbol。 |
|
品种代码。 |
|
合约乘数。 |
|
合约类型。 |
|
交易所委托编号。 |
|
QPro/源模型委托 id,可与 |
|
买卖方向。 |
|
开平标志。 |
|
投保标志。 |
|
成交数量。 |
|
平今数量。 |
|
平昨数量。 |
|
成交价。 |
|
源模型成交时间,BIGINT。 |
|
手续费。 |
|
本地委托编号。 |
|
交易员代码。 |
|
序号。 |
|
QPro 源模型流水索引。 |
|
交易单元 id。 |
|
用户备注信息。 |
实时行情结构(8812)
实时行情服务不写入新的数据库表。客户端通过下面的接口为一个合约建立一个 SSE 连接:
GET /sub_quote/{instrument_id}
每次推送包含一个 quote 事件,data 是服务已经合并好的完整 Quote JSON:
event: quote
data: {"instrument_id":"SHFE.au2612","datetime":"2026-07-14 10:30:00.000000","last_price":782.36}
Quote 主要字段如下:
字段 |
类型 |
含义 |
|---|---|---|
|
string |
合约代码,格式为 |
|
string |
行情更新时间,格式为 |
|
number/string |
卖一到卖十价格。 |
|
int |
卖一到卖十数量。 |
|
number/string |
买一到买十价格。 |
|
int |
买一到买十数量。 |
|
number/string |
当前交易日最新成交价。 |
|
number/string |
当前交易日最高价。 |
|
number/string |
当前交易日最低价。 |
|
number/string |
当前交易日开盘价。 |
|
number/string |
当前交易日收盘价。 |
|
number/string |
当前交易日均价。 |
|
int/string |
当前交易日成交量。 |
|
number/string |
当前交易日成交额。 |
|
int/string |
持仓量。 |
|
number/string |
当前交易日结算价。 |
|
number/string |
涨停价。 |
|
number/string |
跌停价。 |
|
int/string |
上一交易日持仓量。 |
|
number/string |
上一交易日结算价。 |
|
number/string |
上一交易日收盘价。 |
没有有效数值的价格字段可能返回字符串 "-",部分当前无意义的字段可能不出现在对象中。客户端应按字段是否存在和实际 JSON 类型处理,不要把缺失字段或 "-" 强制转换为 0。
每个 SSE 事件都是完整快照,客户端不需要自行合并上游 DIFF。服务优先保证最新状态;客户端过慢时,中间更新可能被覆盖。
合约信息结构(8813)
合约信息服务同样不写入新的数据库表。所有业务接口都使用 GET,成功响应使用统一外层结构:
{
"ok": true,
"data": {}
}
失败响应使用:
{
"ok": false,
"error": {
"code": "BAD_REQUEST",
"message": "symbol must not be empty"
}
}
合约与期权列表
GET /query_quotes 和 GET /query_options 都在 data.symbols 中返回合约代码字符串数组:
{
"ok": true,
"data": {
"symbols": ["SHFE.au2612", "SHFE.au2610"]
}
}
/query_quotes 返回按条件筛选的合约代码,/query_options 返回指定标的的期权代码。它们不返回完整合约属性;需要字段信息时应继续调用 /query_symbol_info。
合约信息对象
GET /query_symbol_info 在 data.items 中返回对象数组,顺序与请求的 symbol 顺序一致:
{
"ok": true,
"data": {
"items": [
{
"ins_class": "FUTURE",
"instrument_id": "SHFE.au2612",
"instrument_name": "黄金2612",
"exchange_id": "SHFE",
"product_id": "au",
"price_tick": 0.02,
"volume_multiple": 1000,
"expired": false
}
]
}
}
对象字段如下:
字段 |
含义 |
|---|---|
|
合约类型,例如 |
|
合约代码。 |
|
合约中文名称。 |
|
最小变动价位。 |
|
合约乘数。 |
|
日内开仓限额。 |
|
最大限价单手数。 |
|
最大市价单手数。 |
|
最小限价单手数。 |
|
最小市价单手数。 |
|
最大市价开仓手数。 |
|
最大限价开仓手数。 |
|
最小市价开仓手数。 |
|
最小限价开仓手数。 |
|
标的合约,主要用于连续合约和期权。 |
|
期权行权价。 |
|
交易所代码。 |
|
品种代码。 |
|
是否已到期。 |
|
到期时间,秒级 Unix timestamp。 |
|
距离到期日的剩余自然日,由服务端根据当前时间计算。 |
|
期货交割年份。 |
|
期货交割月份。 |
|
期权最后行权时间,秒级 Unix timestamp。 |
|
期权最后行权年份,由 |
|
期权最后行权月份,由 |
|
期权方向, |
|
涨停价。 |
|
跌停价。 |
|
上一交易日结算价。 |
|
上一交易日持仓量。 |
|
上一交易日收盘价。 |
|
日盘交易时间段。 |
|
夜盘交易时间段。 |
不适用于某类合约或上游没有提供的字段返回 JSON null。客户端不应把 null 当作 0、空字符串或字符串 "nan"。