数据结构
一、系统概述
本文主要为对接闪策回测系统的终端厂商、策略开发人员以及个人或机构投资者提供帮助指引
二、基本数据结构
2.1 timeval_t - 时间戳
高精度时间戳结构,支持纳秒级分辨率。
字段 |
类型 |
说明 |
|---|---|---|
sec |
int32_t |
自Unix(1970-01-01 00:00:00 UTC)以来的秒数 |
usec |
unsigned int (20位) |
微秒(0-999999) |
nsec |
unsigned int (10位) |
微秒内的纳秒(0-999) |
2.2 instrument_t - 合约标识符
不同市场和产品类型中的唯一标识。
字段 |
类型 |
说明 |
|---|---|---|
sym |
uint32_t |
合约符号标识符,合约的唯一数字ID |
mkt |
mktdest_t |
市场目的地(例如:期货市场为 MKT_SHFE、MKT_CZCE、MKT_DCE、MKT_CFFEX;股票市场为 MKT_SHSE、MKT_SZSE) |
prod |
product_t |
产品类型(PROD_STOCK=股票、PROD_FUTURE=期货、PROD_OPTION=期权等) |
exp |
expiry_t |
到期日期(YYYYMMDD格式,仅对期货和期权有效) |
strike |
float |
行权价格(仅对期权有效) |
right |
right_t |
期权类型:RT_PUT(看跌)或 RT_CALL(看涨),仅对期权有效 |
currency |
currency_t |
货币类型(默认:CNY) |
2.3 book_depth_level_with_num_orders - 订单簿价位
表示订单簿中的单个价格档位及其订单数量信息。
字段 |
类型 |
说明 |
|---|---|---|
price |
double |
价格档位 |
size |
int32_t |
该价格档位的总数量 |
num_orders |
int32_t |
该价格档位的订单数量 |
2.3 tid_t - 成交编号
委托编号结构,用于唯一标识一个委托。
字段 |
类型 |
说明 |
|---|---|---|
account |
acct_t |
委托客户账户ID |
orderid |
uint32_t |
委托编号 |
2.4 message_hdr_t - 消息头
消息头结构,包含所有消息的公共元数据信息。每条消息都由消息头和消息体组成。
字段 |
类型 |
说明 |
|---|---|---|
source |
uint32_t |
消息源标识符 |
symbol |
uint32_t |
合约符号标识符 |
mtype |
mtype_t |
消息类型(见 mtype_t 枚举) |
unused |
uint32_t |
保留字段(未使用) |
time_sent |
timeval_t |
消息发送时间戳(UTC时间,timezone agnostic) |
size |
MsgSizeField_t |
消息体大小(不包含消息头) |
seq |
uint32_t |
消息序列号(用于检测消息丢失) |
endian |
uint32_t |
字节序标识(固定值 0x01020304) |
modifier |
uint32_t |
修饰符标志位(默认为 0) |
注意: time_sent 时间是 UTC 时间,seconds since epoch,timezone agnostic。
2.5 常用枚举类型
SCOMSError - 错误码枚举
枚举值 |
代码 |
说明 |
|---|---|---|
SCOMS_SUCC |
0 |
操作成功 |
SCOMS_ERR_UNKNOWN |
1 |
未知错误 |
SCOMS_ERR_CONNECTION_FAIL |
2 |
连接失败 |
SCOMS_ERR_UNSUPPORTED |
3 |
操作不支持 |
SCOMS_ERR_PARAM |
4 |
参数错误 |
SCOMS_ERR_NO_DATA |
5 |
没有数据 |
SCOMS_ERR_NOT_LOGIN |
6 |
未登录 |
mktdest_t - 目标市场
枚举值 |
代码 |
说明 |
|---|---|---|
MKT_UNKNOWN |
0 |
未知交易所 |
MKT_SHFE |
24 |
上海期货交易所 |
MKT_CZCE |
27 |
郑州商品交易所 |
MKT_DCE |
28 |
大连商品交易所 |
MKT_CFFEX |
67 |
中国金融期货交易所 |
MKT_SHSE |
80 |
上海证券交易所 |
MKT_SZSE |
81 |
深圳证券交易所 |
MKT_INE |
93 |
上海国际能源交易中心 |
MKT_GFEX |
94 |
广州期货交易所 |
MKT_HKEX |
95 |
香港交易所 |
dir_t - 订单方向
枚举值 |
代码 |
说明 |
|---|---|---|
BUY |
0 |
买入订单 |
SELL |
1 |
卖出订单 |
ETFPUR |
2 |
ETF申购 |
ETFRED |
3 |
ETF赎回 |
SHORT |
4 |
卖空 |
DIR_INVALID |
5 |
无效方向 |
side_t - 订单方向
枚举值 |
代码 |
说明 |
|---|---|---|
BID |
0 |
买 |
ASK |
1 |
卖 |
SIDE_INVALID |
2 |
无效 |
SIDE_BOTH |
3 |
无效方向 |
product_t - 交易产品类型
枚举值 |
代码 |
说明 |
|---|---|---|
PROD_STOCK |
0 |
股票 |
PROD_FUTURE |
1 |
期货 |
PROD_OPTION |
2 |
期权 |
PROD_SWAP |
3 |
互换 |
PROD_SPREAD |
4 |
价差 |
PROD_STRATEGY |
5 |
策略 |
PROD_BOND |
6 |
债券 |
PROD_WARRANT |
7 |
权证 |
PROD_UNKNOWN |
9 |
未知产品 |
PROD_INDEX |
10 |
指数 |
PROD_EURO_OPTION |
11 |
欧式期权 |
PROD_CASH |
12 |
现金 |
PROD_FX |
13 |
外汇 |
PROD_FORWARD |
14 |
远期 |
PROD_SYM_ONLY |
15 |
仅符号 |
PROD_SYM_EXP_ONLY |
16 |
仅符号和到期日 |
right_t - 期权类型
枚举值 |
代码 |
说明 |
|---|---|---|
RT_PUT |
0 |
看跌期权 |
RT_CALL |
1 |
看涨期权 |
RT_UNKNOWN |
2 |
未知期权 |
RT_NONE |
3 |
非期权类型 |
RT_MS_PUT |
4 |
看跌系列期权 |
RT_MS_CALL |
5 |
看涨系列期权 |
tif_t - 有效期类型
枚举值 |
代码 |
说明 |
|---|---|---|
TIF_DAY |
3 |
当日有效 |
TIF_IMMEDIATE_OR_CANCEL |
7 |
立即成交否则撤销(IOC) |
TIF_DO_NOT_SEND |
11 |
不发送到交易所 |
ostatus_t - 订单状态
枚举值 |
代码 |
说明 |
|---|---|---|
STAT_NEW |
0 |
订单已创建但未发送 |
STAT_TRANSIT |
1 |
订单正在发送至交易所 |
STAT_OPEN |
2 |
订单已被交易所接受 |
STAT_DONE |
4 |
订单已完成(成交或已撤销) |
cxlstatus_t - 撤单状态
枚举值 |
代码 |
说明 |
|---|---|---|
CXLSTATUS_NONE |
0 |
无撤单请求 |
CXLSTATUS_PENDING |
1 |
撤单待处理 |
CXLSTATUS_TRANSIT |
2 |
撤单请求发送中 |
CXLSTATUS_CONFIRMED |
3 |
撤单已确认 |
CXLSTATUS_REJECT |
4 |
撤单被拒绝 |
oreason_t - 订单状态变化原因
基本状态原因:
枚举值 |
代码 |
说明 |
|---|---|---|
R_NONE |
0 |
无特定原因 |
R_FILL |
1 |
订单成交 |
R_CANCEL |
2 |
订单撤销 |
R_REJECT |
3 |
订单被拒绝 |
R_MARGIN_REJECT |
4 |
保证金不足被拒绝(不适用于股票) |
R_PARTIAL_REJECT |
5 |
部分拒单(不适用于股票) |
R_TS_REJECT |
6 |
内部拒单,需查看日志 |
撤单相关拒单原因 (500-599):
枚举值 |
代码 |
说明 |
|---|---|---|
R_REJECT_CANCEL_UNKNOWN_ORDER |
500 |
不认识的订单 |
R_REJECT_CANCEL_ORDER_IS_DONE |
501 |
该订单状态已结束 |
R_REJECT_CANCEL_ALREADY_CANCELLING |
502 |
该撤单已发送至交易所 |
R_REJECT_CANCEL_ORDER_IS_IOC |
503 |
是 IOC 类型订单,不可撤单 |
R_REJECT_CANCEL_NOT_ALLOWED |
504 |
不允许撤单 |
R_REJECT_CANCEL_ON_EXCHANGE |
505 |
撤单被交易所拒单 |
交易所拒单原因 (32768-32776):
枚举值 |
代码 |
说明 |
|---|---|---|
R_REJECT_BY_MARKET_FLAG |
32768 |
交易所拒单 |
R_REJECT_TODAY_POSITION_OFFSET |
32769 |
平今仓持仓不足 |
R_REJECT_POSITION_OFFSET |
32770 |
持仓不足 |
R_REJECT_MKT_NOT_TRADING |
32771 |
闭市拒单 |
R_REJECT_CONFIRM_SETTLEMENT |
32772 |
尚未确认结算单 |
R_REJECT_PRICE_LIMITS |
32773 |
价格限制拒单 |
R_REJECT_NOT_ENOUGH_CAPITAL |
32774 |
资金不足拒单 |
R_REJECT_MSG_RATE_EXCEEDED |
32775 |
委托流速过快 |
R_REJECT_NO_OPEN_LIMIT |
32776 |
超出开仓限制 |
oflag_t - 订单标识
订单标识用于指定订单的特殊属性,特别是期货市场的开平仓标识。
枚举值 |
代码 |
说明 |
|---|---|---|
OFLAG_NONE |
0 |
无特殊标识 |
OFLAG_SHFE_MANUAL_OPENCLOSE |
65536 |
手工订单,平仓时需要加上该标识 |
OFLAG_SHFE_CLOSEPOSITION |
131072 |
平仓,只有上期所区分平今仓和平昨仓,其他交易所都是先开先平 |
OFLAG_SHFE_CLOSEPOSITIONTODAY |
262144 |
平今,如果是 SHFE,平今仓需要用该标识 |
OFLAG_SHFE_PARK_ORDER |
524288 |
预埋单 |
OFLAG_SHFE_MATCH_PREVENTION_CANCEL_AGGRESSOR |
1048576 |
自成交保护撤销主动方 |
OFLAG_HEDGE |
4194304 |
套保标志 |
使用说明:
如果要发送股票订单,定义:
uint32_t oflags = OFLAG_NONE;
Python 中也可直接使用
sc.STOCK_OPEN_CLOSE如果要发送开仓订单,定义:
uint32_t oflags = OFLAG_SHFE_MANUAL_OPENCLOSE;
Python 中也可直接使用
sc.FUTURES_OPEN如果要平今仓,定义:
uint32_t oflags = OFLAG_SHFE_CLOSEPOSITIONTODAY | OFLAG_SHFE_CLOSEPOSITION | OFLAG_SHFE_MANUAL_OPENCLOSE;
Python 中也可直接使用
sc.FUTURES_CLOSE_TODAY如果要平仓或平昨仓,定义:
uint32_t oflags = OFLAG_SHFE_CLOSEPOSITION | OFLAG_SHFE_MANUAL_OPENCLOSE;
Python 中也可直接使用
sc.FUTURES_CLOSE对于证券交易,
oflags置为 0
fillflag_t - 成交标识
成交标识用于标识成交的类型,特别是区分开仓、平今、平昨。
枚举值 |
代码 |
说明 |
|---|---|---|
FILLFLAG_NONE |
0 |
开仓成交(如果对应的委托是开仓标识) |
FILLFLAG_SHFE_CLOSE |
1 |
平昨成交 |
FILLFLAG_SHFE_CLOSETODAY |
2 |
平今成交 |
判断逻辑:
判断 fill_flags 应遵循如下步骤:
if ( td_fill_new.fill_flags & FILLFLAG_SHFE_CLOSETODAY )
// 上期所平今
else if( td_fill_new.fill_flags & FILLFLAG_SHFE_CLOSE )
// 上期所平昨 及 其他交易所平仓
else:
// 开仓成交
oid_type_t - 订单ID类型
指定撤单时使用的订单ID类型。
枚举值 |
代码 |
说明 |
|---|---|---|
OID_TYPE_CLIENT |
0 |
orderid 表示客户端订单ID(本连接的 orderid) |
OID_TYPE_SYSTEM |
1 |
orderid 表示系统订单ID(system_order_id 或 oms_oid) |
OID_TYPE_UNKNOWN |
255 |
未知类型 |
撤单方式说明:
系统支持 2 种撤单方式:
使用客户端订单ID撤单(默认):
orderid填入本连接的订单的orderid,oid_type填入OID_TYPE_CLIENT使用系统订单ID撤单(跨连接撤单):
orderid填入订单的oms_oid,oid_type填入OID_TYPE_SYSTEM,这种方式可以实现跨连接撤单
mktstatus_t - 市场状态
市场交易状态标识。
枚举值 |
代码 |
说明 |
|---|---|---|
MKT_STATUS_BEFORE_TRADING |
0 |
开盘前 |
MKT_STATUS_NO_TRADING |
1 |
非交易时段 |
MKT_STATUS_CONTINUOUS |
2 |
连续交易 |
MKT_STATUS_AUCTIONORDERING |
3 |
集合竞价报单 |
MKT_STATUS_AUCTIONBALANCE |
4 |
集合竞价价格平衡 |
MKT_STATUS_AUCTIONMATCH |
5 |
集合竞价撮合 |
MKT_STATUS_CLOSED |
6 |
收盘 |
MKT_STATUS_NUM |
7 |
市场状态总数 |
三、行情数据结构
3.1 msg_sc_snapshot_data - 快照行情
包含期货和证券的快照行情数据,包括订单簿信息。
消息类型: MSG_SC_SNAPSHOT_DATA (308)
字段 |
类型 |
说明 |
|---|---|---|
prev_close_price |
double |
前收盘价 |
prev_settlement_price |
double |
前结算价(期货) |
prev_open_interest |
int64_t |
前持仓量(期货) |
open_price |
double |
当前交易时段开盘价 |
high_price |
double |
当前交易时段最高价 |
low_price |
double |
当前交易时段最低价 |
latest_price |
double |
最新成交价 |
bid |
book_depth_level_with_num_orders[10] |
买方订单簿(最多10档) |
ask |
book_depth_level_with_num_orders[10] |
卖方订单簿(最多10档) |
volume |
int64_t |
累计成交量 |
turnover |
double |
累计成交额 |
open_interest |
int64_t |
当前持仓量(期货) |
close_price |
double |
收盘价 |
settlement_price |
double |
结算价(期货) |
limit_up |
double |
涨停价 |
limit_down |
double |
跌停价 |
total_bid_vol |
int64_t |
所有买方档位的总委托量 |
total_ask_vol |
int64_t |
所有卖方档位的总委托量 |
instr |
instrument_t |
合约标识符 |
instr_str |
char[32] |
合约字符串表示 |
exch_time |
timeval_t |
交易所时间戳 |
trading_day |
char[9] |
交易日,YYYYMMDD格式 |
index_seq |
uint64_t |
消息排序序列号 |
注意:
除期货快照行情外,此消息中的
index_seq字段与对应的msg_sc_snapshot_data_olist匹配。
3.2 msg_sc_snapshot_data_olist - 快照委托队列数据
快照行情的配套消息,展示特定价格档位的委托队列详情。
消息类型: MSG_SC_SNAPSHOT_DATA_OLIST (309)
字段 |
类型 |
说明 |
|---|---|---|
bid_olist |
int32_t[50] |
买方委托队列,每个元素表示一笔委托数量 |
ask_olist |
int32_t[50] |
卖方委托队列,每个元素表示一笔委托数量 |
prices |
double[2] |
委托队列对应的价格档位 [0]=买方价格,[1]=卖方价格 |
num_order_queues |
int32_t[2] |
委托队列中有效条目数量 [0]=买方数量,[1]=卖方数量 |
instr |
instrument_t |
合约标识符 |
instr_str |
char[32] |
合约字符串表示 |
exch_time |
timeval_t |
交易所时间戳 |
trading_day |
char[9] |
交易日,YYYYMMDD格式 |
index_seq |
uint64_t |
与对应快照消息匹配的序列号 |
注意:
此消息提供快照中最优买/卖价格的详细委托队列信息。
index_seq字段与对应的msg_sc_snapshot_data匹配。期货快照行情不存在该配套消息。
3.3 msg_sc_market_tbt - 逐笔委托数据
包含逐笔委托(下单和撤单)数据。
消息类型: MSG_SC_MARKET_TBT (310)
字段 |
类型 |
说明 |
|---|---|---|
order_price |
double |
委托价格 |
order_qty |
int64_t |
委托数量 |
order_no |
int64_t |
交易所订单编号 |
side |
dir_t |
委托方向(买/卖) |
order_type |
char |
委托类型:’A’=新订单,’D’=撤单 |
price_type |
char |
价格类型:’1’=市价,’2’=限价,’U’=最优价 |
instr |
instrument_t |
合约标识符 |
instr_str |
char[32] |
合约字符串表示 |
transact_time |
timeval_t |
交易所交易时间戳 |
trading_day |
char[9] |
交易日,YYYYMMDD格式 |
3.4 msg_sc_tick_tbt - 逐笔成交数据
包含逐笔成交数据。
消息类型: MSG_SC_TICK_TBT (311)
字段 |
类型 |
说明 |
|---|---|---|
fill_price |
double |
成交价格 |
fill_qty |
int64_t |
成交数量 |
buy_order_no |
int64_t |
买方订单编号 |
sell_order_no |
int64_t |
卖方订单编号 |
bs_flag |
char |
成交方向标志(表示主动方):’B’=买方成交,’S’=卖方成交,’N’=普通成交 |
instr |
instrument_t |
合约标识符 |
instr_str |
char[32] |
合约字符串表示 |
transact_time |
timeval_t |
交易所交易时间戳 |
trading_day |
char[9] |
交易日,YYYYMMDD格式 |
注意:
对于 SZSE 逐笔成交数据,由于交易所源行情中不披露
bs_flag相关的内容,所以该字段统一为'N'值
3.5 msg_data_kline - K线数据
包含各种时间周期的聚合K线数据。
消息类型: MSG_DATA_KLINE (65550)
字段 |
类型 |
说明 |
|---|---|---|
instr |
instrument_t |
合约标识符 |
bob |
timeval_t |
K线开始时间戳 |
eob |
timeval_t |
K线结束时间戳 |
period |
int32_t |
K线周期(秒),例如:60=1分钟,3600=1小时 |
open |
double |
该周期开盘价 |
high |
double |
该周期最高价 |
low |
double |
该周期最低价 |
close |
double |
该周期收盘价 |
vwap |
double |
成交量加权平均价 |
volume |
int64_t |
交易时段开始至今的累计成交量 |
delta_volume |
int64_t |
本K线周期内的成交量 |
open_interest |
int64_t |
K线结束时的累计持仓量(期货) |
delta_open_interest |
int64_t |
本K线周期内持仓量变化 |
turnover |
double |
交易时段开始至今的累计成交额 |
delta_turnover |
double |
本K线周期内的成交额 |
trading_day |
char[8] |
交易日,YYYYMMDD格式 |
instr_str |
char[32] |
合约字符串表示 |
四、交易数据结构
4.1 msg_oms_order_new - OMS委托下单
消息类型: MSG_OMS_ORDER_NEW (65537)
字段 |
类型 |
说明 |
|---|---|---|
account |
acct_t |
交易账户ID |
instr |
instrument_t |
交易合约 |
dest |
mktdest_t |
市场目的地 |
px |
double |
委托价格(市价单为0) |
size |
int32_t |
委托数量 |
dir |
dir_t |
委托方向(买入/卖出/卖空) |
orderid |
uint32_t |
客户端分配的订单ID |
tif |
tif_t |
有效期类型 |
front_end_id |
uint8_t |
前端系统ID |
timeout |
uint32_t |
订单超时时间(毫秒) |
client_oid |
uint32_t |
客户订单标识符 |
oflags |
uint32_t |
订单标志(位字段,参见 oflag_t 枚举) |
cover_flag |
cflag_t |
备兑标志,用于备兑交易 |
investor |
char[32] |
投资者账户标识符 |
algo_type |
char[16] |
算法类型(普通订单为空) |
algo_args |
char[512] |
算法参数,JSON或键值对格式 |
oms_oid |
char[64] |
OMS分配的唯一订单ID |
parent_oms_oid |
char[64] |
父订单ID(用于算法执行的子订单) |
market_price |
double |
订单提交时的市场价格 |
4.2 msg_oms_cancel - OMS撤单
消息类型: MSG_OMS_CANCEL (65538)
字段 |
类型 |
说明 |
|---|---|---|
account |
acct_t |
交易账户ID |
symbol |
symbol_t |
合约符号标识符 |
orderid |
uint32_t |
要撤销的订单ID |
size |
int32_t |
要撤销的数量(0 = 撤销所有剩余量) |
oid_type |
oid_type_t |
订单ID类型(CLIENT 或 SYSTEM) |
investor |
char[32] |
投资者账户标识符 |
oms_oid |
char[64] |
要撤销的OMS订单ID |
algo_type |
char[16] |
算法类型(如适用) |
4.3 msg_oms_status_change - OMS状态变化
消息类型: MSG_OMS_STATUS_CHANGE (65536)
字段 |
类型 |
说明 |
|---|---|---|
account |
acct_t |
交易账户ID |
clientid |
uint32_t |
客户端ID |
tradeid |
tid_t |
成交编号ID |
orderid |
uint32_t |
订单ID |
seqnum |
uint32_t |
序列号 |
instr |
instrument_t |
合约 |
oldstatus |
ostatus_t |
之前的订单状态 |
newstatus |
ostatus_t |
新的订单状态 |
reason |
oreason_t |
状态变化原因 |
cxlstatus |
cxlstatus_t |
撤单状态 |
exch_ref |
uint64_t |
交易所参考编号 |
exch_time |
timeval_t |
交易所时间戳 |
msg_nic_time |
timeval_t |
网卡接收时间戳 |
msg_recv_time |
timeval_t |
系统接收时间戳 |
risk_begin_time |
timeval_t |
风控检查开始时间 |
risk_end_time |
timeval_t |
风控检查结束时间 |
vendor_api_begin_time |
timeval_t |
供应商API调用开始时间 |
vendor_api_end_time |
timeval_t |
供应商API调用结束时间 |
order_send_time |
timeval_t |
订单发送时间戳 |
transport_cb_time |
timeval_t |
传输回调时间戳 |
select_poll_time |
timeval_t |
Select/poll 开始时间 |
select_rdy_time |
timeval_t |
Select/poll 就绪时间 |
select_rdy_cnt |
uint32_t |
Select 就绪计数器 |
actual_oflags |
uint32_t |
实际应用的订单标志 |
reject_text |
char[64] |
拒绝原因文本(如被拒绝) |
filled_size |
uint32_t |
总成交数量 |
system_order_id |
uint32_t |
系统分配的订单ID |
session |
int32_t |
交易会话ID |
user |
char[16] |
用户标识符 |
gateway |
char[32] |
网关标识符 |
investor |
char[32] |
投资者账户标识符 |
oms_oid |
char[64] |
OMS订单ID |
parent_oms_oid |
char[64] |
父OMS订单ID |
market_price |
double |
状态变化时的市场价格 |
4.4 msg_oms_fill_new - OMS成交
消息类型: MSG_OMS_FILL_NEW (65539)
字段 |
类型 |
说明 |
|---|---|---|
tradeid |
tid_t |
成交编号ID |
instr |
instrument_t |
合约 |
dest |
mktdest_t |
市场目的地 |
contra_broker |
mktdest_t |
对手方券商 |
px |
double |
成交价格 |
size |
uint32_t |
成交数量 |
dir |
dir_t |
成交方向(买入/卖出) |
orderid |
uint32_t |
关联的订单ID |
clientid |
uint32_t |
客户端ID |
left |
int32_t |
此次成交后的剩余数量 |
pos |
int32_t |
此次成交后的当前持仓 |
exch_time |
timeval_t |
交易所执行时间戳 |
liquidity |
liquidity_t |
流动性标志(ADDED=增加流动性/REMOVED=消耗流动性/NEUTRAL=中性) |
fill_flags |
int32_t |
成交特定标志,遵循 fillflag_t 使用方法 |
exch_ref |
uint64_t |
交易所参考编号/成交ID |
fee_code |
char[8] |
费用代码 |
exch_trade_ref |
char[32] |
交易所成交参考字符串 |
session |
int32_t |
交易会话ID |
user |
char[16] |
用户标识符 |
gateway |
char[32] |
网关标识符 |
investor |
char[32] |
投资者账户标识符 |
oms_oid |
char[64] |
OMS订单ID |
parent_oms_oid |
char[64] |
父OMS订单ID |
4.5 msg_oms_cancel_reject - OMS撤单拒绝
消息类型: MSG_OMS_CANCEL_REJECT (65540)
字段 |
类型 |
说明 |
|---|---|---|
account |
acct_t |
交易账户ID |
symbol |
symbol_t |
合约符号标识符 |
orderid |
uint32_t |
撤单被拒的订单ID |
reason |
oreason_t |
拒绝原因代码 |
reject_text |
char[64] |
可读的拒绝原因文本 |
investor |
char[32] |
投资者账户标识符 |
oms_oid |
char[64] |
OMS订单ID |
algo_type |
char[16] |
算法类型(如适用) |
五、重要说明
5.1 消息时序概况


5.1.1 正常成交流程
发送委托: 发送
msg_oms_order_new消息接收确认: 收到第一条
msg_oms_status_changenewstatus:
STAT_TRANSIToldstatus:
STAT_NEW表示订单已被系统接收,正在发往交易所
交易所确认: 收到第二条
msg_oms_status_changenewstatus:
STAT_OPENoldstatus:
STAT_TRANSIT表示订单处于交易所挂单状态
成交: 收到
msg_oms_fill_new消息(可能有多条)包含成交明细信息
可以用 orderid 进行撤单
完成: 收到最后一条
msg_oms_status_changenewstatus:
STAT_DONEoldstatus:
STAT_OPENreason:
R_FILL(全部成交)或R_CANCEL(部分成交后撤单)
5.1.2 撤单流程
情况1:订单已到达交易所后撤单
发送撤单: 发送
msg_oms_cancel消息撤单传输中: 收到第一条
msg_oms_status_changenewstatus:
STAT_OPENoldstatus:
STAT_OPENcxlstatus:
CXLSTATUS_TRANSIT表示撤单请求正在发送到交易所
撤单完成: 收到第二条
msg_oms_status_changenewstatus:
STAT_DONEoldstatus:
STAT_OPENreason:
R_CANCELcxlstatus:
CXLSTATUS_CONFIRMED(成功)或CXLSTATUS_REJECT(被拒绝)
情况2:订单未到达交易所时撤单
发送撤单: 发送
msg_oms_cancel消息撤单待处理: 收到第一条
msg_oms_status_changeoldstatus:
STAT_TRANSITnewstatus:
STAT_TRANSITcxlstatus:
CXLSTATUS_PENDING
撤单传输中: 收到第二条
msg_oms_status_changeoldstatus:
STAT_TRANSITnewstatus:
STAT_OPENcxlstatus:
CXLSTATUS_TRANSIT
撤单完成: 收到第三条
msg_oms_status_changeoldstatus:
STAT_OPENnewstatus:
STAT_DONEreason:
R_CANCELcxlstatus:
CXLSTATUS_CONFIRMED或CXLSTATUS_REJECT
5.2 证券交易特殊说明
5.2.1 订单标志
证券(股票)交易时,oflags 应设置为 0。