#ifndef _XOMS_API_STRUCT_H_
#define _XOMS_API_STRUCT_H_
#include "xtp_api_data_type.h"
#include "stddef.h"
#pragma pack(8)
struct XTPOrderInsertInfo
{
uint64_t order_xtp_id;
uint32_t order_client_id;
char ticker[XTP_TICKER_LEN];
XTP_MARKET_TYPE market;
double price;
double stop_price;
int64_t quantity;
XTP_PRICE_TYPE price_type;
union{
uint32_t u32;
struct {
XTP_SIDE_TYPE side;
XTP_POSITION_EFFECT_TYPE position_effect;
uint8_t reserved1;
uint8_t reserved2;
};
};
XTP_BUSINESS_TYPE business_type;
};
struct XTPOrderCancelInfo
{
uint64_t order_cancel_xtp_id;
uint64_t order_xtp_id;
};
struct XTPOrderInfo
{
uint64_t order_xtp_id;
uint32_t order_client_id;
uint32_t order_cancel_client_id;
uint64_t order_cancel_xtp_id;
char ticker[XTP_TICKER_LEN];
XTP_MARKET_TYPE market;
double price;
int64_t quantity;
XTP_PRICE_TYPE price_type;
union{
uint32_t u32;
struct {
XTP_SIDE_TYPE side;
XTP_POSITION_EFFECT_TYPE position_effect;
uint8_t reserved1;
uint8_t reserved2;
};
};
XTP_BUSINESS_TYPE business_type;
int64_t qty_traded;
int64_t qty_left;
int64_t insert_time;
int64_t update_time;
int64_t cancel_time;
double trade_amount;
char order_local_id[XTP_LOCAL_ORDER_LEN];
XTP_ORDER_STATUS_TYPE order_status;
XTP_ORDER_SUBMIT_STATUS_TYPE order_submit_status;
TXTPOrderTypeType order_type;
};
struct XTPTradeReport
{
uint64_t order_xtp_id;
uint32_t order_client_id;
char ticker[XTP_TICKER_LEN];
XTP_MARKET_TYPE market;
uint64_t local_order_id;
char exec_id[XTP_EXEC_ID_LEN];
double price;
int64_t quantity;
int64_t trade_time;
double trade_amount;
uint64_t report_index;
char order_exch_id[XTP_ORDER_EXCH_LEN];
TXTPTradeTypeType trade_type;
union{
uint32_t u32;
struct {
XTP_SIDE_TYPE side;
XTP_POSITION_EFFECT_TYPE position_effect;
uint8_t reserved1;
uint8_t reserved2;
};
};
XTP_BUSINESS_TYPE business_type;
char branch_pbu[XTP_BRANCH_PBU_LEN];
};
struct XTPQueryOrderReq
{
char ticker[XTP_TICKER_LEN];
int64_t begin_time;
int64_t end_time;
};
typedef struct XTPOrderInfo XTPQueryOrderRsp;
struct XTPQueryOrderByPageReq
{
int64_t req_count;
int64_t reference;
int64_t reserved;
};
struct XTPQueryReportByExecIdReq
{
uint64_t order_xtp_id;
char exec_id[XTP_EXEC_ID_LEN];
};
struct XTPQueryTraderReq
{
char ticker[XTP_TICKER_LEN];
int64_t begin_time;
int64_t end_time;
};
typedef struct XTPTradeReport XTPQueryTradeRsp;
struct XTPQueryTraderByPageReq
{
int64_t req_count;
int64_t reference;
int64_t reserved;
};
struct XTPQueryAssetRsp
{
double total_asset;
double buying_power;
double security_asset;
double fund_buy_amount;
double fund_buy_fee;
double fund_sell_amount;
double fund_sell_fee;
double withholding_amount;
XTP_ACCOUNT_TYPE account_type;
double frozen_margin;
double frozen_exec_cash;
double frozen_exec_fee;
double pay_later;
double preadva_pay;
double orig_banlance;
double banlance;
double deposit_withdraw;
double trade_netting;
double captial_asset;
double force_freeze_amount;
double preferred_amount;
double repay_stock_aval_banlance;
uint64_t unknown[43 - 12 - 1];
};
struct XTPQueryStkPositionRsp
{
char ticker[XTP_TICKER_LEN];
char ticker_name[XTP_TICKER_NAME_LEN];
XTP_MARKET_TYPE market;
int64_t total_qty;
int64_t sellable_qty;
double avg_price;
double unrealized_pnl;
int64_t yesterday_position;
int64_t purchase_redeemable_qty;
XTP_POSITION_DIRECTION_TYPE position_direction;
uint32_t reserved1;
int64_t executable_option;
int64_t lockable_position;
int64_t executable_underlying;
int64_t locked_position;
int64_t usable_locked_position;
uint64_t unknown[50 - 6];
};
struct XTPFundTransferNotice
{
uint64_t serial_id;
XTP_FUND_TRANSFER_TYPE transfer_type;
double amount;
XTP_FUND_OPER_STATUS oper_status;
uint64_t transfer_time;
};
struct XTPQueryFundTransferLogReq {
uint64_t serial_id;
};
typedef struct XTPFundTransferNotice XTPFundTransferLog;
struct XTPQueryStructuredFundInfoReq
{
XTP_EXCHANGE_TYPE exchange_id; char sf_ticker[XTP_TICKER_LEN]; };
struct XTPStructuredFundInfo
{
XTP_EXCHANGE_TYPE exchange_id; char sf_ticker[XTP_TICKER_LEN]; char sf_ticker_name[XTP_TICKER_NAME_LEN]; char ticker[XTP_TICKER_LEN]; char ticker_name[XTP_TICKER_NAME_LEN]; XTP_SPLIT_MERGE_STATUS split_merge_status; uint32_t ratio; uint32_t min_split_qty; uint32_t min_merge_qty; double net_price;};
struct XTPQueryETFBaseReq
{
XTP_MARKET_TYPE market;
char ticker[XTP_TICKER_LEN];
};
typedef struct XTPQueryETFBaseRsp
{
XTP_MARKET_TYPE market; char etf[XTP_TICKER_LEN]; char subscribe_redemption_ticker[XTP_TICKER_LEN]; int32_t unit; int32_t subscribe_status; int32_t redemption_status; double max_cash_ratio; double estimate_amount; double cash_component; double net_value; double total_amount; }XTPQueryETFBaseRsp;
typedef struct XTPQueryETFComponentReq
{
XTP_MARKET_TYPE market;
char ticker[XTP_TICKER_LEN];
}XTPQueryETFComponentReq;
struct XTPQueryETFComponentRsp
{
XTP_MARKET_TYPE market;
char ticker[XTP_TICKER_LEN];
char component_ticker[XTP_TICKER_LEN];
char component_name[XTP_TICKER_NAME_LEN];
int64_t quantity;
XTP_MARKET_TYPE component_market;
ETF_REPLACE_TYPE replace_type;
double premium_ratio;
double amount;
};
struct XTPQueryIPOTickerRsp {
XTP_MARKET_TYPE market;
char ticker[XTP_TICKER_LEN];
char ticker_name[XTP_TICKER_NAME_LEN];
XTP_TICKER_TYPE ticker_type;
double price;
int32_t unit;
int32_t qty_upper_limit;
};
struct XTPQueryIPOQuotaRspV1 {
XTP_MARKET_TYPE market;
int32_t quantity;
};
struct XTPQueryIPOQuotaRsp {
XTP_MARKET_TYPE market;
int32_t quantity;
int32_t tech_quantity;
int32_t unused;
};
struct XTPQueryOptionAuctionInfoReq {
XTP_MARKET_TYPE market;
char ticker[XTP_TICKER_LEN];
};
struct XTPQueryOptionAuctionInfoRsp {
char ticker[XTP_TICKER_LEN]; XTP_MARKET_TYPE security_id_source; char symbol[XTP_TICKER_NAME_LEN]; char contract_id[XTP_TICKER_NAME_LEN]; char underlying_security_id[XTP_TICKER_LEN]; XTP_MARKET_TYPE underlying_security_id_source;
uint32_t list_date; uint32_t last_trade_date; XTP_TICKER_TYPE ticker_type; int32_t day_trading;
XTP_OPT_CALL_OR_PUT_TYPE call_or_put; uint32_t delivery_day; uint32_t delivery_month;
XTP_OPT_EXERCISE_TYPE_TYPE exercise_type; uint32_t exercise_begin_date; uint32_t exercise_end_date; double exercise_price;
int64_t qty_unit; int64_t contract_unit; int64_t contract_position;
double prev_close_price; double prev_clearing_price;
int64_t lmt_buy_max_qty; int64_t lmt_buy_min_qty; int64_t lmt_sell_max_qty; int64_t lmt_sell_min_qty; int64_t mkt_buy_max_qty; int64_t mkt_buy_min_qty; int64_t mkt_sell_max_qty; int64_t mkt_sell_min_qty;
double price_tick; double upper_limit_price; double lower_limit_price; double sell_margin; double margin_ratio_param1; double margin_ratio_param2;
uint64_t unknown[20]; };
struct XTPCrdCashRepayRsp
{
int64_t xtp_id; double request_amount; double cash_repay_amount; };
struct XTPCrdCashRepayInfo
{
int64_t xtp_id; XTP_CRD_CR_STATUS status; double request_amount; double cash_repay_amount; XTP_POSITION_EFFECT_TYPE position_effect; };
typedef struct XTPCrdDebtInfo
{
int32_t debt_type; char debt_id[33]; int64_t position_id; uint64_t order_xtp_id; int32_t debt_status; XTP_MARKET_TYPE market; char ticker[XTP_TICKER_LEN]; uint64_t order_date; uint64_t end_date; uint64_t orig_end_date; bool is_extended; double remain_amt; int64_t remain_qty; double remain_principal; }XTPCrdDebtInfo;
typedef struct XTPCrdFundInfo
{
double maintenance_ratio; double line_of_credit; double guaranty; double position_amount; }XTPCrdFundInfo;
typedef struct XTPClientQueryCrdDebtStockReq
{
XTP_MARKET_TYPE market; char ticker[XTP_TICKER_LEN]; }XTPClientQueryCrdDebtStockReq;
typedef struct XTPCrdDebtStockInfo
{
XTP_MARKET_TYPE market; char ticker[XTP_TICKER_LEN]; int64_t remain_quantity; int64_t order_withhold_quantity; }XTPCrdDebtStockInfo;
typedef struct XTPClientQueryCrdPositionStockReq
{
XTP_MARKET_TYPE market; char ticker[XTP_TICKER_LEN]; }XTPClientQueryCrdPositionStockReq;
typedef struct XTPClientQueryCrdPositionStkInfo {
XTP_MARKET_TYPE market; char ticker[XTP_TICKER_LEN]; int64_t limit_qty; int64_t yesterday_qty; int64_t left_qty; int64_t frozen_qty; }XTPClientQueryCrdPositionStkInfo;
#pragma pack()
#endif