类型定义

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;

字段说明:

字段类型说明
codechar[32]证券代码,如 “600000”
marketMarketType所属市场(上交所/深交所)
namechar[64]证券名称(可选字段)
security_typechar[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_idchar[32]登录系统使用的账号
cust_idchar[32]券商客户号
fund_account_idchar[32]资金账户标识
account_id_shchar[32]上海证券账户
account_id_szchar[32]深圳证券账户
branch_idchar[32]营业部标识
passwordchar[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;

字段说明:

字段类型单位说明
timestampuint64_t微秒数据时间戳
update_timeuint32_tHHMMSSMMM更新时间(例如:093015123 表示 09:30:15.123)
last_indexdouble点最新指数值
total_volumeuint64_t股累计成交量
total_valueuint64_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_pricedouble元最新成交价
bid_price[10]double[10]元买一到买十价格
bid_qty[10]uint64_t[10]股买一到买十数量
ask_price[10]double[10]元卖一到卖十价格
ask_qty[10]uint64_t[10]股卖一到卖十数量
iopvdouble元基金实时净值(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_typechar’A’=新增委托, ‘D’=删除委托, ‘S’=状态更新
sidechar’B’=买入, ‘S’=卖出, ’ ‘=无方向
order_nouint64_t交易所订单号
balanceuint64_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_typechar’F’=正常成交, ‘4’=撤销成交
trade_flagchar内外盘标志等(交易所定义)
bid_order_nouint64_t主动买方订单号
ask_order_nouint64_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;

字段说明:

字段类型说明
pricedouble委托价格,市价单时可为0
qtyuint64_t委托数量,单位为股
batch_iduint64_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_idint64_t-系统内部委托编号
exchange_order_idchar[32]-交易所订单号
leaves_qtyuint64_t股未成交数量
cum_qtyuint64_t股已成交数量
avg_pricedouble元成交均价
is_lastbool-查询结果中是否为最后一条

成交数据

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_qtyuint64_t总持仓 = 可用 + 冻结
available_qtyuint64_t可卖出数量
frozen_qtyuint64_t挂单冻结数量
profit_lossdouble浮动盈亏金额
profit_loss_ratiodouble盈亏比例(百分比)

资金数据

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_assetdouble总资产 = 现金 + 市值
available_cashdouble可用于买入的资金
withdrawal_cashdouble可转出到银行的资金
buying_powerdouble当前购买力(考虑融资等)

银证转账数据

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字符串
};

字段说明:

字段类型说明
idstring策略唯一标识符
namestring策略显示名称
modulestring策略模块路径
configstringJSON格式的默认配置参数

挂单状态枚举

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; // 挂单状态
};

字段说明:

字段类型说明
idint64_t数据库主键
strategy_idstring所属策略标识
pending_order_infostringJSON格式的挂单配置信息
statusPendingOrderStatus当前状态(激活/已执行/已取消)

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_idint64_t关联的挂单ID(外键)
security_codestring实际下单的证券代码
order_idint64_t交易系统返回的委托编号
statusOrderStatus订单状态(与交易订单状态一致)

挂单查询条件

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;                          // 是否降序
};

说明:用于查询策略订单的条件结构,支持多种筛选条件和分页。