类型定义
Funiq Trading 系统中使用的所有数据类型定义,这些类型是系统 API 和数据交换的基础。
目录
基础类型(Base Types)
基础类型定义了系统通用的枚举、结构体和配置,供行情、交易、策略等模块共同使用。
市场枚举
typedef enum {
MARKET_UNKNOWN = 0, // 未知市场
MARKET_SSE = 1, // 上海证券交易所
MARKET_SZSE = 2, // 深圳证券交易所
} MarketType;
说明:用于标识证券所属的交易市场。
数据类型枚举
typedef enum {
// 行情数据类型 (1-100)
DATA_TYPE_INDEX = 1, // 指数行情
DATA_TYPE_DEPTH = 2, // 竞价行情快照
DATA_TYPE_DEPTH_FIFTY = 3, // 竞价行情队列(50笔)
DATA_TYPE_ENTRUST = 4, // 逐笔委托
DATA_TYPE_TRADE = 5, // 逐笔成交
// 交易数据类型 (101-200)
DATA_TYPE_TRADE_ORDER_RTN = 101, // 交易委托回报
DATA_TYPE_TRADE_ORDER_QUERY = 102, // 交易委托查询
DATA_TYPE_TRADE_FILL = 103, // 交易成交回报
DATA_TYPE_TRADE_CANCEL = 104, // 交易撤单
DATA_TYPE_TRADE_POSITION = 105, // 持仓数据
DATA_TYPE_TRADE_ACCOUNT = 106, // 账户数据
DATA_TYPE_BANK_SECURITIES_TRANSFER = 107, // 银证转账
DATA_TYPE_FUND_TRANSFER = 108, // 资金划拨
// 交易响应类型 (111-120)
DATA_TYPE_ORDER_RSP = 111, // 委托响应
DATA_TYPE_CANCEL_RSP = 112, // 撤单响应
DATA_TYPE_BANK_SECURITIES_TRANSFER_RSP = 113, // 银证转账响应
DATA_TYPE_FUND_TRANSFER_RSP = 114, // 资金划拨响应
// 系统数据类型 (201-300)
DATA_TYPE_SYSTEM_STATUS = 201, // 系统状态
DATA_TYPE_SYSTEM_LOG = 202, // 系统日志
DATA_TYPE_SYSTEM_CONFIG = 203, // 系统配置
} FTDataType;
说明:统一的数据类型标识,用于区分不同类型的行情和交易数据。
状态枚举
typedef enum {
STATUS_OK = 0, // 正常
STATUS_ERROR = -1, // 错误
STATUS_INITIALIZED = 1, // 已初始化
STATUS_CONNECTING = 2, // 连接中
STATUS_CONNECTED = 3, // 已连接
STATUS_DISCONNECTED = 4, // 已断开
STATUS_LOGIN_SUCCESS = 5, // 登录成功
STATUS_LOGOUT_SUCCESS = 6, // 登出成功
STATUS_LOGIN_FAILED = 7, // 登录失败
} Status;
说明:系统连接和运行状态枚举。
证券信息
typedef struct {
char code[32]; // 证券代码(例如:600000)
MarketType market; // 市场类型
char name[64]; // 证券名称(可选)
char security_type[16]; // 证券类型(股票/基金/债券/期权等)
} SecurityInfo;
字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
code | char[32] | 证券代码,如 “600000” |
market | MarketType | 所属市场(上交所/深交所) |
name | char[64] | 证券名称(可选字段) |
security_type | char[16] | 证券类型标识 |
账户信息
typedef struct {
char login_id[32]; // 登录账号
char cust_id[32]; // 客户号
char fund_account_id[32]; // 资金账户ID
char account_id_sh[32]; // 上海证券账户ID
char account_id_sz[32]; // 深圳证券账户ID
char branch_id[32]; // 营业部ID
char password[64]; // 密码(可选,敏感信息)
} AccountInfo;
字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
login_id | char[32] | 登录系统使用的账号 |
cust_id | char[32] | 券商客户号 |
fund_account_id | char[32] | 资金账户标识 |
account_id_sh | char[32] | 上海证券账户 |
account_id_sz | char[32] | 深圳证券账户 |
branch_id | char[32] | 营业部标识 |
password | char[64] | 密码(仅在必要时使用) |
订阅配置
typedef struct {
MarketType* markets; // 订阅的市场列表(动态分配)
int market_count; // 市场数量
FTDataType* data_types; // 订阅的数据类型列表(动态分配)
int data_type_count; // 数据类型数量
SecurityInfoInConfig* securities; // 订阅的证券列表(动态分配)
int security_count; // 证券数量
} SubscriptionConfig;
说明:用于配置行情订阅的市场、数据类型和证券列表。动态分配内存以支持灵活数量的订阅项。
数据输出配置
typedef enum {
DATA_OUTPUT_NONE = 0, // 不输出
DATA_OUTPUT_SHARED_MEMORY = 1, // 共享内存
DATA_OUTPUT_UDP_BROADCAST = 2, // UDP广播
DATA_OUTPUT_FILE = 3, // 文件输出
} DataOutputType;
typedef struct {
DataOutputType output_type; // 输出类型
char shm_name[128]; // 共享内存名称
char file_path[256]; // 文件输出路径
char file_format[32]; // 文件格式
int udp_port; // UDP端口
char udp_multicast[64]; // UDP组播地址
} DataConfig;
说明:配置数据的输出方式,支持共享内存、UDP 广播和文件输出三种模式。
Mock 模式配置
typedef struct {
bool enabled; // 是否启用Mock模式
char mock_data_file[256]; // Mock数据文件路径
bool loop_replay; // 是否循环回放
// CSV模式字段
bool csv_mode; // 是否启用CSV模式
char csv_depth_file[256]; // CSV深度数据文件
char csv_index_file[256]; // CSV指数数据文件
char csv_entrust_file[256]; // CSV委托数据文件
char csv_trade_file[256]; // CSV成交数据文件
char csv_depth_fifty_file[256]; // CSV 50档数据文件
} MockConfig;
说明:Mock 模式用于测试和回放,支持传统 Mock 数据文件和 CSV 文件两种方式。
行情类型(Quote Types)
文件位置:include/types/quote_types.h
行情类型定义了市场数据相关的结构体,包括指数、快照、逐笔委托、逐笔成交等。
交易阶段枚举
typedef enum {
TRADING_PHASE_UNKNOWN = 0, // 未知
TRADING_PHASE_BEFORE_OPEN = 1, // 开盘前
TRADING_PHASE_OPEN_AUCTION = 2, // 开盘集合竞价
TRADING_PHASE_CONTINUOUS = 3, // 连续竞价
TRADING_PHASE_CLOSE_AUCTION = 4, // 收盘集合竞价
TRADING_PHASE_AFTER_CLOSE = 5, // 收盘后
TRADING_PHASE_SUSPENDED = 6, // 停牌
} TradingPhase;
说明:标识证券当前所处的交易阶段。
指数行情数据
typedef struct {
SecurityInfo security_info; // 证券信息
uint64_t timestamp; // 时间戳(微秒)
uint32_t update_time; // 更新时间(HHMMSSMMM格式)
TradingPhase trading_phase; // 交易阶段
double last_index; // 最新指数
double pre_close_index; // 昨收盘指数
double open_index; // 开盘指数
double high_index; // 最高指数
double low_index; // 最低指数
double close_index; // 收盘指数
uint64_t total_volume; // 成交总量
uint64_t total_value; // 成交总额
uint64_t num_trades; // 成交笔数
uint32_t sequence; // 序列号
} IndexData;
字段说明:
| 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
timestamp | uint64_t | 微秒 | 数据时间戳 |
update_time | uint32_t | HHMMSSMMM | 更新时间(例如:093015123 表示 09:30:15.123) |
last_index | double | 点 | 最新指数值 |
total_volume | uint64_t | 股 | 累计成交量 |
total_value | uint64_t | 元(分) | 累计成交金额 |
竞价行情快照(深度行情)
typedef struct {
SecurityInfo security_info; // 证券信息
uint64_t timestamp; // 时间戳(微秒)
uint32_t update_time; // 更新时间(HHMMSSMMM格式)
TradingPhase trading_phase; // 交易阶段
char instrument_status[16]; // 合约状态
// 价格信息
double last_price; // 最新价
double pre_close_price; // 昨收盘价
double open_price; // 开盘价
double high_price; // 最高价
double low_price; // 最低价
double close_price; // 收盘价
double upper_limit_price; // 涨停价
double lower_limit_price; // 跌停价
double avg_price; // 均价
// 成交信息
uint64_t total_volume; // 成交总量
uint64_t total_value; // 成交总额
uint64_t num_trades; // 成交笔数
// 委托信息
uint64_t total_bid_qty; // 委托买入总量
uint64_t total_ask_qty; // 委托卖出总量
double weighted_avg_bid_price; // 加权平均委买价
double weighted_avg_ask_price; // 加权平均委卖价
uint32_t total_bid_number; // 买入总笔数
uint32_t total_ask_number; // 卖出总笔数
// 十档行情
double bid_price[10]; // 十档买价
uint64_t bid_qty[10]; // 十档买量
double ask_price[10]; // 十档卖价
uint64_t ask_qty[10]; // 十档卖量
// 期权特有字段(非期权时为0)
uint64_t total_position; // 持仓量
double reference_price; // 参考价
// 基金特有字段(非基金时为0)
double iopv; // 实时净值
double pre_iopv; // 前日净值
uint16_t channel_no; // 频道号
uint32_t sequence; // 序列号
} DepthData;
核心字段说明:
| 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
last_price | double | 元 | 最新成交价 |
bid_price[10] | double[10] | 元 | 买一到买十价格 |
bid_qty[10] | uint64_t[10] | 股 | 买一到买十数量 |
ask_price[10] | double[10] | 元 | 卖一到卖十价格 |
ask_qty[10] | uint64_t[10] | 股 | 卖一到卖十数量 |
iopv | double | 元 | 基金实时净值(ETF) |
特殊说明:
- 十档行情:
bid_price[0]为买一价,ask_price[0]为卖一价 - 期权字段:仅对期权品种有效
- 基金字段:仅对基金(ETF/LOF)有效
竞价行情队列(50档委托)
typedef struct {
SecurityInfo security_info; // 证券信息
uint64_t timestamp; // 时间戳(微秒)
uint32_t update_time; // 更新时间(HHMMSSMMM格式)
// 买一档信息
double bid_price; // 买一档价格
uint64_t bid_qty; // 买一档数量
uint32_t bid_num_orders; // 买一档总委托笔数
uint8_t bid_show_orders; // 买一档揭示委托笔数
// 卖一档信息
double ask_price; // 卖一档价格
uint64_t ask_qty; // 卖一档数量
uint32_t ask_num_orders; // 卖一档总委托笔数
uint8_t ask_show_orders; // 卖一档揭示委托笔数
// 50笔委托明细(买卖各50笔)
uint32_t orders[100]; // 委托明细
uint16_t channel_no; // 频道号
uint32_t sequence; // 序列号
} DepthFiftyData;
说明:提供买一和卖一档位的详细委托队列,orders 数组前50个元素为买一队列,后50个为卖一队列。
逐笔委托数据
typedef struct {
SecurityInfo security_info; // 证券信息
uint64_t timestamp; // 时间戳(微秒)
uint64_t transact_time; // 委托时间(微秒)
char order_type; // 订单类型:'A'-新增, 'D'-删除, 'S'-状态
char side; // 买卖方向:'B'-买, 'S'-卖, ' '-状态
char bs_flag; // 买卖标志(兼容字段)
uint64_t order_no; // 订单号
uint32_t order_index; // 委托序号
double price; // 委托价格(元)
uint64_t qty; // 委托数量(股)
uint64_t balance; // 剩余数量(股)
uint16_t channel_no; // 频道号
uint64_t biz_index; // 业务序列号
uint64_t appl_seq_num; // 应用序列号
uint32_t sequence; // 序列号
} EntrustData;
字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
order_type | char | ’A’=新增委托, ‘D’=删除委托, ‘S’=状态更新 |
side | char | ’B’=买入, ‘S’=卖出, ’ ‘=无方向 |
order_no | uint64_t | 交易所订单号 |
balance | uint64_t | 委托剩余未成交数量 |
逐笔成交数据
typedef struct {
SecurityInfo security_info; // 证券信息
uint64_t timestamp; // 时间戳(微秒)
uint64_t transact_time; // 成交时间(微秒)
uint64_t trade_id; // 成交编号
uint32_t trade_index; // 成交序号
double price; // 成交价格(元)
uint64_t qty; // 成交数量(股)
uint64_t value; // 成交金额(元)
uint64_t bid_order_no; // 买方订单号
uint64_t ask_order_no; // 卖方订单号
uint64_t bid_appl_seq_num; // 买方委托索引
uint64_t ask_appl_seq_num; // 卖方委托索引
char exec_type; // 成交类别:'F'-成交, '4'-撤销
char trade_flag; // 成交标志:内外盘等
uint16_t channel_no; // 频道号
uint64_t biz_index; // 业务序列号
uint64_t appl_seq_num; // 应用序列号
uint32_t sequence; // 序列号
} TradeData;
字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
exec_type | char | ’F’=正常成交, ‘4’=撤销成交 |
trade_flag | char | 内外盘标志等(交易所定义) |
bid_order_no | uint64_t | 主动买方订单号 |
ask_order_no | uint64_t | 主动卖方订单号 |
交易类型(Trade Types)
交易类型定义了下单、撤单、查询、资金划拨等交易相关的数据结构。
登录模式枚举
typedef enum {
LOGIN_MODE_CUST_ID = 1, // 使用客户号登录
LOGIN_MODE_FUND_ACCOUNT_ID = 2, // 使用资金账户登录
} LoginMode;
买卖方向枚举
typedef enum {
SIDE_UNKNOWN = 0,
SIDE_BUY = 'B', // 买入
SIDE_SELL = 'S', // 卖出
} OrderSide;
订单类型枚举
typedef enum {
ORDER_TYPE_UNKNOWN = 0,
ORDER_TYPE_LIMIT = 1, // 限价单
ORDER_TYPE_MARKET = 2, // 市价单
ORDER_TYPE_STOP = 3, // 停损单
ORDER_TYPE_BEST_PRICE = 4, // 最优价格单
} OrderType;
订单状态枚举
typedef enum {
ORDER_STATUS_UNKNOWN = 0,
ORDER_STATUS_NEW = 1, // 新订单
ORDER_STATUS_PARTIAL_FILLED = 2, // 部分成交
ORDER_STATUS_FILLED = 3, // 全部成交
ORDER_STATUS_CANCELLED = 4, // 已撤销
ORDER_STATUS_REJECTED = 5, // 已拒绝
ORDER_STATUS_PENDING_CANCEL = 6, // 待撤销
ORDER_STATUS_PENDING_NEW = 7, // 待确认
} OrderStatus;
订单标识枚举
typedef enum {
ORDER_SIGN_ORDER = 0, // 普通订单
ORDER_SIGN_CANCEL = 1, // 撤单
ORDER_SIGN_UNKNOWN = 2, // 未知
} OrderSign;
委托查询条件
typedef enum {
ORDER_QUERY_CONDITION_ALL = 0, // 查询全部(不含撤单委托)
ORDER_QUERY_CONDITION_CANCEL_AVAILABLE = 1, // 查询可撤单订单
ORDER_QUERY_CONDITION_TRADE_EXEC_OR_CANCELLED = 2, // 查询有成交或已撤单订单
ORDER_QUERY_CONDITION_UNAVAILABLE_CANCEL = 3, // 查询不可撤单订单
ORDER_QUERY_CONDITION_ALL_WITH_CANCEL = 4, // 查询全部委托(含撤单委托)
ORDER_QUERY_CONDITION_ALL_EXCEPT_INTERNAL_REJ = 5, // 查询全部委托(不含TE内部拒单)
} OrderQueryCondition;
下单请求
typedef struct {
AccountInfo account; // 账户信息
char security_code[32]; // 证券代码
MarketType market; // 市场类型
OrderSide side; // 买卖方向
OrderType order_type; // 订单类型
double price; // 委托价格(元)
uint64_t qty; // 委托数量(股)
uint64_t batch_id; // 批次ID(可选)
} TradeOrderRequest;
字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
price | double | 委托价格,市价单时可为0 |
qty | uint64_t | 委托数量,单位为股 |
batch_id | uint64_t | 批量下单时的批次标识 |
下单响应
typedef struct {
AccountInfo account;
SecurityInfo security_info;
uint64_t timestamp; // 时间戳(微秒)
char current_account_id[32]; // 当前账户ID
double price; // 委托价格
uint64_t qty; // 委托数量
int64_t request_id; // 请求ID
int64_t order_id; // 委托编号
uint64_t batch_id; // 批次ID
OrderSide side; // 买卖方向
OrderType order_type; // 订单类型
uint8_t business_type; // 业务类型
int64_t response_time; // 响应时间(微秒)
int32_t error_code; // 错误码(0=成功)
char error_msg[256]; // 错误信息
} TradeOrderRspData;
说明:下单请求的即时响应,包含委托编号或错误信息。
订单数据
typedef struct {
AccountInfo account; // 账户信息
SecurityInfo security_info; // 证券信息
uint64_t timestamp; // 时间戳(微秒)
int64_t request_id; // 请求ID
char current_account_id[32]; // 当前账户ID
MarketType current_market; // 当前市场
int64_t order_id; // 委托编号
char exchange_order_id[32]; // 交易所订单编号
uint64_t batch_id; // 批次编号
OrderSide side; // 买卖方向
OrderType order_type; // 订单类型
OrderSign sign; // 订单标识
OrderStatus status; // 订单状态
char status_msg[256]; // 状态描述
double price; // 委托价格(元)
uint64_t qty; // 委托数量(股)
uint64_t leaves_qty; // 剩余数量(股)
uint64_t cum_qty; // 累计成交数量(股)
double avg_price; // 平均成交价格(元)
double cum_amt; // 累计成交金额(元)
uint64_t order_time; // 委托时间(微秒)
uint64_t update_time; // 更新时间(微秒)
int32_t error_code; // 错误码
char error_msg[256]; // 错误信息
uint8_t business_type; // 业务类型
uint16_t opu_id; // 报盘通道ID
bool is_last; // 是否最后一条(查询时使用)
} TradeOrderData;
核心字段说明:
| 字段 | 类型 | 单位 | 说明 |
|---|---|---|---|
order_id | int64_t | - | 系统内部委托编号 |
exchange_order_id | char[32] | - | 交易所订单号 |
leaves_qty | uint64_t | 股 | 未成交数量 |
cum_qty | uint64_t | 股 | 已成交数量 |
avg_price | double | 元 | 成交均价 |
is_last | bool | - | 查询结果中是否为最后一条 |
成交数据
typedef struct {
AccountInfo account; // 账户信息
SecurityInfo security_info; // 证券信息
uint64_t timestamp; // 时间戳(微秒)
int64_t request_id; // 请求ID
char current_account_id[32]; // 当前账户ID
MarketType current_market; // 当前市场
char trade_id[32]; // 成交编号
int64_t order_id; // 委托编号
char exchange_order_id[32]; // 交易所订单编号
uint64_t batch_id; // 批次编号
OrderSide side; // 买卖方向
OrderType order_type; // 订单类型
uint8_t business_type; // 业务类型
double price; // 成交价格(元)
uint64_t qty; // 成交数量(股)
double value; // 成交金额(元)
double fee; // 手续费(元)
uint64_t trade_time; // 成交时间(微秒)
char currency[8]; // 货币种类
int32_t error_code; // 错误码
char error_msg[256]; // 错误信息
bool is_last; // 是否最后一条
} TradeFillData;
说明:订单成交回报数据,一笔委托可能有多笔成交。
持仓数据
typedef struct {
AccountInfo account; // 账户信息
SecurityInfo security_info; // 证券信息
uint64_t timestamp; // 时间戳(微秒)
int64_t request_id; // 请求ID
char current_account_id[32]; // 当前账户ID
MarketType current_market; // 当前市场
uint64_t total_qty; // 总持仓量(股)
uint64_t available_qty; // 可用数量(股)
uint64_t frozen_qty; // 冻结数量(股)
uint64_t today_buy_qty; // 今日买入数量(股)
uint64_t today_sell_qty; // 今日卖出数量(股)
double cost_price; // 持仓成本价(元)
double market_price; // 最新市价(元)
double market_value; // 市值(元)
double profit_loss; // 浮动盈亏(元)
double profit_loss_ratio; // 盈亏比例(%)
int32_t error_code; // 错误码
char error_msg[256]; // 错误信息
uint64_t update_time; // 更新时间(微秒)
uint16_t security_type; // 证券类型
bool is_last; // 是否最后一条
} PositionData;
字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
total_qty | uint64_t | 总持仓 = 可用 + 冻结 |
available_qty | uint64_t | 可卖出数量 |
frozen_qty | uint64_t | 挂单冻结数量 |
profit_loss | double | 浮动盈亏金额 |
profit_loss_ratio | double | 盈亏比例(百分比) |
资金数据
typedef struct {
AccountInfo account; // 账户信息
uint64_t timestamp; // 时间戳(微秒)
int64_t request_id; // 请求ID
char currency[8]; // 货币种类(CNY)
char current_account_id[32]; // 当前账户ID
MarketType current_market; // 当前市场
double total_asset; // 总资产(元)
double cash_balance; // 现金余额(元)
double available_cash; // 可用资金(元)
double frozen_cash; // 冻结资金(元)
double market_value; // 证券市值(元)
double buying_power; // 购买力(元)
double withdrawal_cash; // 可取资金(元)
double profit_loss; // 当日盈亏(元)
double profit_loss_ratio; // 盈亏比例(%)
int32_t error_code; // 错误码
char error_msg[256]; // 错误信息
uint64_t update_time; // 更新时间(微秒)
bool is_last; // 是否最后一条
} AccountData;
字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
total_asset | double | 总资产 = 现金 + 市值 |
available_cash | double | 可用于买入的资金 |
withdrawal_cash | double | 可转出到银行的资金 |
buying_power | double | 当前购买力(考虑融资等) |
银证转账数据
typedef enum {
BANK_SECURITIES_TRANSFER_IN = 1, // 银证转入(银行→证券)
BANK_SECURITIES_TRANSFER_OUT = 2, // 银证转出(证券→银行)
} BankSecuritiesTransferDirection;
typedef struct {
char login_id[32]; // 登录账号
char cust_id[32]; // 客户号
char fund_account_id[32]; // 资金账号
char branch_id[32]; // 分支机构ID
char account_id[32]; // 账户ID
uint64_t timestamp; // 时间戳(微秒)
int64_t request_id; // 请求ID
BankSecuritiesTransferDirection direction; // 转账方向
// 响应信息
int64_t serial_no; // 流水号
int64_t transfer_serial_no; // 转账流水号
int64_t bank_transfer_serial_no; // 银行转账流水号
uint8_t business_status; // 业务状态
int64_t transact_time; // 成交时间(微秒)
int32_t error_code; // 错误码
char error_msg[256]; // 错误信息
} BankSecuritiesTransferData;
说明:银行与证券账户间的资金转账记录。
策略类型(Strategy Types)
策略类型定义了策略管理、策略挂单和策略订单相关的数据结构。
策略状态枚举
enum class StrategyState {
UNDEFINED = 0, // 未定义
UNINITIALIZED = 1, // 未初始化
INITIALIZED = 2, // 已初始化
STOPPED = 3, // 已停止
RUNNING = 4, // 运行中
ERROR = 5 // 错误状态
};
策略配置信息
struct StrategyConfig {
std::string id; // 策略ID(唯一标识)
std::string name; // 策略名称
std::string description; // 策略描述
std::string module; // 模块名称
std::string config; // 默认配置JSON字符串
};
字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 策略唯一标识符 |
name | string | 策略显示名称 |
module | string | 策略模块路径 |
config | string | JSON格式的默认配置参数 |
挂单状态枚举
enum class PendingOrderStatus {
UNKNOWN = 0, // 未知状态
ACTIVE = 1, // 激活状态
EXECUTED = 2, // 已执行
CANCELLED = 3 // 已取消
};
策略挂单数据
struct StrategyPendingOrder {
int64_t id = 0; // 主键ID
std::string strategy_id; // 策略ID
std::string pending_order_info; // 策略挂单信息(JSON格式)
// 包含监控条件、板块、股票列表等
uint64_t create_time = 0; // 创建时间(微秒)
uint64_t update_time = 0; // 更新时间(微秒)
PendingOrderStatus status = PendingOrderStatus::ACTIVE; // 挂单状态
};
字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
id | int64_t | 数据库主键 |
strategy_id | string | 所属策略标识 |
pending_order_info | string | JSON格式的挂单配置信息 |
status | PendingOrderStatus | 当前状态(激活/已执行/已取消) |
pending_order_info JSON 示例:
{
"trigger_condition": "price > 10.0",
"sectors": ["电子", "半导体"],
"securities": ["600000.SH", "000001.SZ"],
"order_params": {
"side": "buy",
"qty": 1000
}
}
策略订单数据
struct StrategyOrder {
int64_t id = 0; // 主键ID
int64_t pending_order_id = 0; // 关联的策略挂单ID(外键)
std::string strategy_id; // 策略ID(冗余字段)
std::string pending_order_info; // 策略挂单信息(JSON,冗余)
uint64_t pending_submit_time = 0; // 策略挂单提交时间(微秒)
// 账户信息
std::string login_id; // 登录账号
std::string cust_id; // 客户号
std::string fund_account_id; // 资金账户ID
std::string account_id; // 证券账户ID
// 订单核心信息
std::string security_code; // 证券代码
int64_t order_id = 0; // 委托编号
std::string exchange_order_id; // 交易所订单编号
uint64_t batch_id = 0; // 批次编号
OrderSide side = SIDE_UNKNOWN; // 买卖方向
OrderSign sign = ORDER_SIGN_UNKNOWN; // 订单标识
OrderType order_type = ORDER_TYPE_UNKNOWN; // 订单类型
OrderStatus status = ORDER_STATUS_UNKNOWN; // 订单状态
std::string status_msg; // 状态描述
double price = 0.0; // 委托价格(元)
uint64_t qty = 0; // 委托数量(股)
uint64_t leaves_qty = 0; // 剩余数量(股)
uint64_t cum_qty = 0; // 累计成交数量(股)
double avg_price = 0.0; // 平均成交价格(元)
double cum_amt = 0.0; // 累计成交金额(元)
uint64_t order_time = 0; // 委托时间(微秒)
uint64_t update_time = 0; // 更新时间(微秒)
uint64_t create_time = 0; // 订单创建时间(微秒)
int32_t error_code = 0; // 错误码
std::string error_msg; // 错误信息
};
说明:策略订单是策略挂单触发后实际提交的订单记录。
关键字段:
| 字段 | 类型 | 说明 |
|---|---|---|
pending_order_id | int64_t | 关联的挂单ID(外键) |
security_code | string | 实际下单的证券代码 |
order_id | int64_t | 交易系统返回的委托编号 |
status | OrderStatus | 订单状态(与交易订单状态一致) |
挂单查询条件
struct StrategyPendingOrderQuery {
std::string strategy_id; // 策略ID筛选
PendingOrderStatus status = PendingOrderStatus::ACTIVE; // 状态筛选
bool filter_by_status = false; // 是否启用状态筛选
uint64_t start_time = 0; // 开始时间(微秒)
uint64_t end_time = 0; // 结束时间(微秒)
int limit = 100; // 返回条数限制
int offset = 0; // 偏移量(分页)
std::string order_by = "create_time"; // 排序字段
bool desc = true; // 是否降序
};
说明:用于查询策略挂单的条件结构。
订单查询条件
struct StrategyOrderQuery {
std::string strategy_id; // 策略ID筛选
int64_t pending_order_id = 0; // 策略挂单ID筛选
std::string security_code; // 股票代码筛选
int market = 0; // 市场筛选(0=所有,1=上交所,2=深交所)
OrderStatus status = ORDER_STATUS_UNKNOWN; // 状态筛选
uint64_t start_time = 0; // 开始时间(微秒)
uint64_t end_time = 0; // 结束时间(微秒)
int limit = 100; // 返回条数限制
int offset = 0; // 偏移量(分页)
std::string order_by = "create_time"; // 排序字段
bool desc = true; // 是否降序
};
说明:用于查询策略订单的条件结构,支持多种筛选条件和分页。