#ifndef _XQUOTE_API_STRUCT_H_
#define _XQUOTE_API_STRUCT_H_
#include <stdint.h>
#include "xtp_api_data_type.h"
#pragma pack(8)
typedef struct XTPSpecificTickerStruct
{
XTP_EXCHANGE_TYPE exchange_id;
char ticker[XTP_TICKER_LEN];
} XTPST;
struct XTPMarketDataStockExData {
int64_t total_bid_qty;
int64_t total_ask_qty;
double ma_bid_price;
double ma_ask_price;
double ma_bond_bid_price;
double ma_bond_ask_price;
double yield_to_maturity;
double iopv;
int32_t etf_buy_count;
int32_t etf_sell_count;
double etf_buy_qty;
double etf_buy_money;
double etf_sell_qty;
double etf_sell_money;
double total_warrant_exec_qty;
double warrant_lower_price;
double warrant_upper_price;
int32_t cancel_buy_count;
int32_t cancel_sell_count;
double cancel_buy_qty;
double cancel_sell_qty;
double cancel_buy_money;
double cancel_sell_money;
int64_t total_buy_count;
int64_t total_sell_count;
int32_t duration_after_buy;
int32_t duration_after_sell;
int32_t num_bid_orders;
int32_t num_ask_orders;
double pre_iopv;
int64_t r1;
int64_t r2;
};
struct XTPMarketDataOptionExData {
double auction_price;
int64_t auction_qty;
int64_t last_enquiry_time;
};
enum XTP_MARKETDATA_TYPE {
XTP_MARKETDATA_ACTUAL = 0, XTP_MARKETDATA_OPTION = 1, };
typedef struct XTPMarketDataStruct
{
XTP_EXCHANGE_TYPE exchange_id;
char ticker[XTP_TICKER_LEN];
double last_price;
double pre_close_price;
double open_price;
double high_price;
double low_price;
double close_price;
int64_t pre_total_long_positon;
int64_t total_long_positon;
double pre_settl_price;
double settl_price;
double upper_limit_price;
double lower_limit_price;
double pre_delta;
double curr_delta;
int64_t data_time;
int64_t qty;
double turnover;
double avg_price;
double bid[10];
double ask[10];
int64_t bid_qty[10];
int64_t ask_qty[10];
int64_t trades_count;
char ticker_status[8];
union {
XTPMarketDataStockExData stk;
XTPMarketDataOptionExData opt;
} ;
XTP_MARKETDATA_TYPE data_type;
int32_t r4;
} XTPMD;
typedef struct XTPQuoteStaticInfo {
XTP_EXCHANGE_TYPE exchange_id;
char ticker[XTP_TICKER_LEN];
char ticker_name[XTP_TICKER_NAME_LEN];
XTP_TICKER_TYPE ticker_type;
double pre_close_price;
double upper_limit_price;
double lower_limit_price;
double price_tick;
int32_t buy_qty_unit;
int32_t sell_qty_unit;
} XTPQSI;
typedef struct OrderBookStruct {
XTP_EXCHANGE_TYPE exchange_id;
char ticker[XTP_TICKER_LEN];
double last_price;
int64_t qty;
double turnover;
int64_t trades_count;
double bid[10];
double ask[10];
int64_t bid_qty[10];
int64_t ask_qty[10];
int64_t data_time;
} XTPOB;
struct XTPTickByTickEntrust {
int32_t channel_no;
int64_t seq;
double price;
int64_t qty;
char side;
char ord_type;
};
struct XTPTickByTickTrade {
int32_t channel_no;
int64_t seq;
double price;
int64_t qty;
double money;
int64_t bid_no;
int64_t ask_no;
char trade_flag;
};
typedef struct XTPTickByTickStruct {
XTP_EXCHANGE_TYPE exchange_id;
char ticker[XTP_TICKER_LEN];
int64_t seq;
int64_t data_time;
XTP_TBT_TYPE type;
union {
XTPTickByTickEntrust entrust;
XTPTickByTickTrade trade;
};
} XTPTBT;
typedef struct XTPTickerPriceInfo {
XTP_EXCHANGE_TYPE exchange_id;
char ticker[XTP_TICKER_LEN];
double last_price;
} XTPTPI;
#pragma pack()
#endif