策略SDK下载地址:

  • C++ SDK
  • Python SDK
  • Java SDK
  • C# SDK
  • R SDK
  • Matlab SDK

数据结构

 Resolution

行情周期

TICK   = 0,                 
SECOND = 1,                
MINUTE = 60,                
HOUR   = 60 * 60,          
DAY    = 24 * 60 * 60,     
WEEK   = 24 * 60 * 60 * 7

 ExchangeCode

交易所代码

EXCHG_UNKNOWN = 0x00,
EXCHG_SSE     = 0x0001,
EXCHG_SZE     = 0x0002,
EXCHG_SHFE    = 0x0004,
EXCHG_DCE     = 0x0008,
EXCHG_CZCE    = 0x0010,
EXCHG_CFFEX   = 0x0020,
EXCHG_GOLD    = 0x0040

 SecurityType

证券类型

UNKNOWN = 0,
STOCK,
FUTURE,
FOREX,
OPTION

 MarketData

行情数据

char      type;
char      securityType;
char      instrument[LEN_INSTRUMENT];
char      exchange[LEN_EXCHANGE];
int       date;     // YYYYMMDD
int       time;     // hhmmss
int       millis;
int       resolution;
int       interval;
double    lastPrice;
double    openPrice;
double    highestPrice;
double    lowestPrice;
double    closePrice;
double    volume;
long long openInterest;
double    turnover;
double    upperLimitPrice;
double    lowerLimitPrice;
double    preSettlePrice;
double    preClosePrice;
double    settlePrice;
int       preOpenInterest;
double    averagePrice;
int       depth;

double    bidPrice1;
int       bidVolume1;
double    bidPrice2;
int       bidVolume2;
double    bidPrice3;
int       bidVolume3;
double    bidPrice4;
int       bidVolume4;
double    bidPrice5;
int       bidVolume5;

double    askPrice1;
int       askVolume1;
double    askPrice2;
int       askVolume2;
double    askPrice3;
int       askVolume3;
double    askPrice4;
int       askVolume4;
double    askPrice5;
int       askVolume5;

 TimeInforce

订单时效

DAY = 0,
GTC,
OPG,
IOC,
FOK,
GTX,
GTD,

 Order

订单

// Buy side's original client order ID, uniqueness must be guaranteed within a single trading day.
char          clOrdId[LEN_ID];
// Sell side's reference for this order.
char          ordId[LEN_ID];
char          instrument[LEN_INSTRUMENT];
int           exchange;
int           type;
int           action;
int           timeInforce;
bool          allOrNone;
int           status;
double        quantity;
double        price;
double        stopPx;
double        tradedQty;
double        avgTradedPx;
double        lastTradedQty;
double        lastTradedPx;
long          date;
long          time;
double        commissions;
char          stateMsg[LEN_STATE_MSG];
bool          closeAction;          // Distinguish three closing actions.
int           compId;               // Component who submit this order.
int           ownerId;              // Strategy who submit this order.
int           srvId;

 Execution

成交信息

char          instrument[LEN_INSTRUMENT];
int           type;
int           action;
int           date;       // YYYYMMDD
int           time;       // hhmmss
int           millis;
double        quantity;
double        price;
bool          closeAction;

char          clOrdId[LEN_ID];
char          ordId[LEN_ID];
char          execId[LEN_ID];
int           srvId;

 OrderAction

报单方向

BUY          = 1,
BUY_TO_COVER = 2,
SELL         = 3,
SELL_SHORT   = 4,

 OrderState

订单状态

UNKNOWN = 0,
INITIAL,           // Initial state.
PENDING_NEW,
SUBMITTED,         // Order has been submitted.
ACCEPTED,          // Order has been acknowledged by the broker.
PENDING_CANCEL,
CANCELED,          // Order has been canceled.
PARTIALLY_FILLED,  // Order has been partially filled.
FILLED,            // Order has been completely filled.
REJECTED           // Order has been rejected.

 OrderType

订单类型

MARKET     = 1,
LIMIT      = 2,
STOP       = 3,
STOP_LIMIT = 4,

 AccountDetails

账户信息

char   userCode[32];
char   password[32];
char   userName[64];
char   currency[8];
double preBalance;
double preDeposit;
double margin;
double lastFund;
double currMargin;
double deposit;
double withdraw;
double equity;
double availFunds;
double buyFreeze;
double sellFreeze;
double buyBond;
double sellBond;
double realizedPnL;
double unrealizedPnL;
double totalBond;
double totalExBond;
double todayReleaseFund;
double comFreeze;
double commission;
double otherFreeze;
double totalFreeze;
double riskLevel;

 SecurityDefinition

合约定义

char   instrument[LEN_INSTRUMENT];
char   name[32];
int    exchgCode;
double upPrice;
double lowPrice;
double moneyRate;
double longMarginRatio;
double shortMarginRatio;
double multiplier;
char   mktdate1[20];
char   mktdate2[20];
double tickSize;
double upDealNum;
double lowDealNum;
int    isTrading;

 PositionDate

仓位日期

POSITION_DATE_TODAY,
POSITION_DATE_HISTORY,
POSITION_DATE_ALL,

 PositionSide

仓位方向

POSITION_SIDE_LONG  = 'L',
POSITION_SIDE_SHORT = 'S'

 AccountPosition

账户持仓

char   instrument[LEN_INSTRUMENT];
char   side;
char   buysell;
char   dateMark;
double cumQty;
double todayQty;
double histQty;
double frozen;
double preSettlmntPx;
double cost;
double avgPx;
double unrealizedPnL;
double realizedPnL;
double margin;
int    date;
int    time;
int    millis;
double histHighestPx;
double histLowestPx;
char   accountId[LEN_ID];

 StrategyPosition

策略持仓

int    strategyId;
char   instrument[LEN_INSTRUMENT];
int    side;
double quantity;
double frozen;
double unformed;
double avgPx;
double margin;
double unrealizedPnL;
double realizedPnL;
int    date;
int    time;
int    millis;
double highestPx;
double lowestPx;

 StrategyParamType

策略参数类型

PARAM_TYPE_BOOL,
PARAM_TYPE_INT,
PARAM_TYPE_FLOAT,
PARAM_TYPE_STRING,

StrategyBase

 行情API

const char* getMainInstrument() const;
BarSeries*  getTickSeries(const char* instrument = "");
BarSeries*  getBarSeries(const char* instrument = "", int resolution = Resolution::MINUTE, int interval = 1);
// 订阅行情
bool   subscribe(const char* instrument, int resolution = Resolution::TICK, int interval = 1, int srvId = 0);
// 取消订阅
bool   unsubscribe(const char* instrument, int resolution = Resolution::TICK, int interval = 1, int srvId = 0);
// 获取合约乘数
double getMultiplier(const char* instrument = "");
// 获取合约最小跳
double getTickSize(const char* instrument = "");
// 获取合约最新价
double getLastPrice(const char* instrument = "");
// 获取合约卖一价
double getAskPrice(const char* instrument = "");
// 获取合约买一价
double getBidPrice(const char* instrument = "");

 交易API

bool   openLong(const char* instrument, double quantity, char* clOrdId);
bool   closeLong(const char* instrument, char* clOrdId);
bool   openShort(const char* instrument, double quantity, char* clOrdId);
bool   closeShort(const char* instrument, char* clOrdId);

bool   buy(const char* instrument, double quantity, double price, char* clOrdId, int srvId = 0);
bool   sell(const char* instrument, double quantity, double price, char* clOrdId, int srvId = 0);
bool   sellShort(const char* instrument, double quantity, double price, char* clOrdId, int srvId = 0);
bool   buyToCover(const char* instrument, double quantity, double price, char* clOrdId, int srvId = 0);

bool   submitOrder(Order& order);
int    getOrderStatus(const char* _clOrdId);
Order  getOrderSnapshot(const char* _clOrdId);
int    getPendingOrders(OrderList& list, const char* instrument = "");
bool   cancelOrder(const char* _clOrdId);
bool   cancelOrder(const Order& order);
bool   isOrderPending(const char* _clOrdId);

 持仓API

int    getAccountPositions(AccountPositionList& list, const char* instrument = "");
int    getStrategyPositions(StrategyPositionList& list, const char* instrument = "");
double getTotalPosSize(const char* instrument = "");

double getLongPosSize(const char* instrument = "");
void   getLongPosSize(double* closable, double* frozen, double* unformed);
void   getLongPosSize(const char* instrument, double* closable, double* frozen, double* unformed);
StrategyPosition getLongPos(const char* instrument = "");

double getShortPosSize(const char* instrument = "");
void   getShortPosSize(double* closable, double* frozen, double* unformed);
void   getShortPosSize(const char* instrument, double* closable, double* frozen, double* unformed);
StrategyPosition getShortPos(const char* instrument = "");

double getClosableLongPosSize(const char* instrument = "");
StrategyPosition getClosableLongPos(const char* instrument = "");

double getClosableShortPosSize(const char* instrument = "");
StrategyPosition getClosableShortPos(const char* instrument = "");

double getAcctClosableLongPosSize(const char* instrument = "", int srvId = 0);

double getAcctClosableShortPosSize(const char* instrument = "", int srvId = 0);

double getAcctLongPosSize(const char* instrument = "", int srvId = 0);
double getAcctHistLongPosSize(const char* instrument = "", int srvId = 0);
double getAcctLongPos(const char* instrument, double* price, int* date, int* time, int srvId = 0);
StrategyPosition getAcctLongPos(const char* instrument = "", int srvId = 0);

double getAcctShortPosSize(const char* instrument = "", int srvId = 0);
double getAcctHistShortPosSize(const char* instrument = "", int srvId = 0);
double getAcctShortPos(const char* instrument, double* price, int* date, int* time, int srvId = 0);
StrategyPosition getAcctShortPos(const char* instrument = "", int srvId = 0);

bool assignLongPosition(const char* instrument, double size, double price, double frozen = 0,
                        int date = 0, int time = 0, int ms = 0, 
                        double highest = 0, double lowest = 0);
bool assignShortPosition(const char* instrument, double size, double price, double frozen = 0,
                         int date = 0, int time = 0, int ms = 0,
                         double highest = 0, double lowest = 0);

 其它API

int         getId() const;
int         getStatus() const;
const char* getName() const;
void   writeLogMsg(const char* msg);
bool   isVerboseMsgEnabled() const;
void   writeVerboseMsg(const char* msg);
void   writeErrorMsg(const char* msg);

 回调接口

virtual void onCreate() {}
virtual void onSetParameter(const char* name, int type, const char* value, bool isLast) {}
virtual int  onBarSeriesFeed(const char* instrument, int resolution, int interval, int num, MarketData* buffer) { return 0; }
virtual void onStart() {}
virtual void onTick(const MarketData& data) {}
virtual void onBar(const Bar& bar) {}
virtual void onOrderSubmitted(const Order& order) {}
virtual void onOrderUpdated(const Order& order) {}
virtual void onExecutionReport(const Execution& exec) {}
virtual void onOrderPartiallyFilled(const Order& order) {}
virtual void onOrderFilled(const Order& order) {}
virtual void onOrderRejected(const Order& order) {}
virtual void onOrderCancelled(const Order& order) {}
virtual void onOrderCancelRejected(const Order& order) {}
virtual void onCommand(const char* command) {}
virtual void onTimer(int timerId) {}
virtual void onHistoricalDataRequestAck(const HistoricalDataRequest& request) {}
virtual void onEnvVariable(const char* name, const char* value) {}
virtual void onPause() {}
virtual void onResume() {}
virtual void onStop() {}
virtual void onDestory() {}

 运行接口

#define DEFAULT_SRV_ADDR        ("127.0.0.1")
#define DEFAULT_SRV_PORT        (5501)

bool run(const StrategyConfig& config, const char* srvAddr = DEFAULT_SRV_ADDR, int srvPort = DEFAULT_SRV_PORT);
void stop();

StrategyConfig

 设置接口

void             setName(const char* name);
const char*      getName() const;
void             setDescription(const char* desc);
const char*      getDescription() const;
void             setAuthor(const char* author);
const char*      getAuthor() const;
void enableAlgoTrader();
void disableAlgoTrader();

 行情订阅

void subscribe(const char* instrument, int resolution = Resolution::TICK, int interval = 0);

 参数设置

StrategyConfig& setUserParameter(const char* name, int value);
StrategyConfig& setUserParameter(const char* name, double value);
StrategyConfig& setUserParameter(const char* name, bool value);
StrategyConfig& setUserParameter(const char* name, const char* value);