基于金字塔平臺(tái)下開(kāi)發(fā)C++程序化交易策略教程[金字塔等]
-
我們很多專(zhuān)業(yè)投資者及一些投資機(jī)構(gòu)都喜歡使用C++直接編寫(xiě)交易策略,C++語(yǔ)言無(wú)論是靈活性和安全性都是要比傳統(tǒng)的一般意義上的腳本語(yǔ)言要強(qiáng)大許多,這也是大家所普遍采用的一個(gè)主要理由。但是直接使用C++開(kāi)發(fā)需要3個(gè)主要組件,主要包括:
1、歷史行情數(shù)據(jù)的管理和接收
2、交易策略的評(píng)估與實(shí)現(xiàn)
3、下單交易具體實(shí)施
實(shí)際上上述3點(diǎn)其實(shí)已經(jīng)包含了一個(gè)程序化交易軟件所具有的主要特點(diǎn)了,如果是全部都要重新開(kāi)發(fā)一套這樣的產(chǎn)品,我們的投資公司最后都要變成名副其實(shí)軟件公司了,將耗費(fèi)很大的精力與財(cái)力來(lái)組織和管理整個(gè)軟件開(kāi)發(fā)團(tuán)隊(duì)。
如果使用金字塔平臺(tái)進(jìn)行C++的策略編寫(xiě),那么上述的多個(gè)難點(diǎn)就可以很好的得到解決,主要如下:
1、金字塔為C++接口提供了豐富完善的歷史數(shù)據(jù),包括盤(pán)中即時(shí)數(shù)據(jù),1分,5分,15,30,日線(xiàn)等等多大十幾種周期數(shù)據(jù),這些數(shù)據(jù)都是金字塔軟件統(tǒng)一管理,模型的開(kāi)發(fā)者不必再來(lái)操心歷史數(shù)據(jù)如何管理。
2、我們的交易策略在前期模型階段可以利用金字塔平臺(tái)PEL語(yǔ)言快速的進(jìn)行評(píng)估,評(píng)估結(jié)束后,再集中精力來(lái)變成C++的具體交易算法,節(jié)省了大量的時(shí)間。
3、可以利用金字塔平臺(tái)進(jìn)行全球市場(chǎng)交易;雖然現(xiàn)在CTP平臺(tái)開(kāi)放了交易接口,但畢竟是只有這一個(gè)接口,如果交易者要對(duì)其他的交易接口例如金仕達(dá)、恒生接口等等時(shí),都必須要去重新開(kāi)發(fā)接口,同樣是要花費(fèi)很大的精力。但如果使用金字塔平臺(tái),開(kāi)發(fā)者就不必再去關(guān)心不同的交易接口到底有哪些不同,我們都已經(jīng)為客戶(hù)封裝好了統(tǒng)一的交易接口規(guī)范,你只要交易策略編寫(xiě)完畢后,就可以在金字塔所支持的國(guó)內(nèi)期貨公司,證券公司,外盤(pán)期貨外匯等等平臺(tái)上進(jìn)行交易。
綜上所述,實(shí)際上很多底層的服務(wù)模塊金字塔都已經(jīng)為客戶(hù)開(kāi)發(fā)好了,客戶(hù)在金字塔上只需要關(guān)心如何用C++編寫(xiě)策略就可以,極大的加快了投資者的開(kāi)發(fā)周期,并節(jié)省了大量的研發(fā)費(fèi)用。
如何在金字塔上進(jìn)行C++策略的開(kāi)發(fā)呢
有關(guān)插件接口更詳細(xì)的描述,在金字塔的安裝目錄AddinDemo.rar 壓縮文件內(nèi)包含了完整插件接口的接口示例以及在.H頭文件里的接口使用信息描述。
客戶(hù)也可以點(diǎn)擊 http://www.weistock.com/download/addindemo.rar 下載到本地進(jìn)行學(xué)習(xí)。
最后說(shuō)明一點(diǎn),金字塔的進(jìn)程是不允許被調(diào)試加載的,這對(duì)C++開(kāi)發(fā)者來(lái)說(shuō)增加調(diào)試難度,但是可以通過(guò)附加進(jìn)程調(diào)試的方法來(lái)解決問(wèn)題,比如VS2008等都有很好的這種支持,詳情請(qǐng)GOOGLE搜索。(http://www.weiqiv.net.cn )
其中主要的部分都在.H頭文件中,我們這里貼出來(lái)給大家
-
#if !defined(__ADDININTERFACE_H__)
#define __ADDININTERFACE_H__#define STKLABEL_LEN 10 // 股號(hào)數(shù)據(jù)長(zhǎng)度,國(guó)內(nèi)市場(chǎng)股號(hào)編碼兼容錢(qián)龍
#define STKNAME_LEN 32 // 股名長(zhǎng)度#pragma pack (push ,1)
/* time_t在金字塔的定義是32位,對(duì)于使用VS2005等高版本Visual C++,time_t是64位,直接使用將導(dǎo)致數(shù)據(jù)結(jié)構(gòu)紊亂
請(qǐng)?jiān)趕tdafx.h文件里加上如下這個(gè)定義即可。#define _USE_32BIT_TIME_T *///動(dòng)態(tài)行情數(shù)據(jù)結(jié)構(gòu)
typedef struct
{
time_t m_time; // 成交時(shí)間
float m_fLastClose; // 昨收
float m_fOpen; // 今開(kāi)
float m_fHigh; // 最高
float m_fLow; // 最低
float m_fNewPrice; // 最新
float m_fOI; //open interest
float m_fLastOI;
float m_fVolume; // 成交量
float m_fAmount; // 成交額
float m_fLastOpen; //前開(kāi)
float m_fLastHigh; //前高
float m_fLastLow; //前底
float m_fBuyPrice[3]; // 申買(mǎi)價(jià)1,2,3
float m_fBuyVolume[3]; // 申買(mǎi)量1,2,3
float m_fSellPrice[3]; // 申賣(mài)價(jià)1,2,3
float m_fSellVolume[3]; // 申賣(mài)量1,2,3
float m_fBuyPrice4; // 申買(mǎi)價(jià)4
float m_fBuyVolume4; // 申買(mǎi)量4
float m_fSellPrice4; // 申賣(mài)價(jià)4
float m_fSellVolume4; // 申賣(mài)量4
float m_fBuyPrice5; // 申買(mǎi)價(jià)5
float m_fBuyVolume5; // 申買(mǎi)量5
float m_fSellPrice5; // 申賣(mài)價(jià)5
float m_fSellVolume5; // 申賣(mài)量5
float m_fVolumeNow; //現(xiàn)手
float m_fBuyVol; //外盤(pán)量
float m_fSellVol; //內(nèi)盤(pán)量
char m_szName[32]; // 股票名稱(chēng),以'\0'結(jié)尾
char m_szNamePY[16];
char m_szLabel[10]; // 股票代碼,以'\0'結(jié)尾
float m_f5DayAverage; //5日均量
float m_fNext5DayVol; //下一個(gè)5日均量
time_t m_timeHardenSpeed; //漲速前比較時(shí)間
float m_fHardenSpeed; //漲速用變量,記錄前5分鐘價(jià)格
WORD m_wMarket; //品種所屬市場(chǎng)比如上海'HS',深圳'ZS'
}REPORT_STRUCT;//日線(xiàn)數(shù)據(jù)
typedef struct
{
DATE m_timeDate; //UCT
float m_fOpen; //開(kāi)盤(pán)
float m_fHigh; //最高
float m_fLow; //最低
float m_fClose; //收盤(pán)
float m_fOI; //open interest
float m_fVolume; //量
float m_fAmount; //額
WORD m_wAdvance; //漲數(shù),僅大盤(pán)有效
WORD m_wDecline; //跌數(shù),僅大盤(pán)有效
WORD m_wQT; //成交筆數(shù)
float m_fOpenVolume; //開(kāi)盤(pán)量
float m_fOpenAmount; //開(kāi)盤(pán)額
}HISTORY_STRUCTEx;//分筆成交數(shù)據(jù)結(jié)構(gòu)
typedef struct{
time_t m_time; // UCT
float m_fNewPrice;
float m_fOI; //open interest
float m_fVolume;
float m_fAmount;
unsigned m_bOrder : 1; //成交方向 1買(mǎi)盤(pán) 0賣(mài)盤(pán)
}SUBSECTION_REPORT;//除權(quán)信息
typedef struct
{
DATE m_timeDate; // UCT
double m_fGive; // 每10股送
double m_fPei; // 每10股配
float m_fGiveStock; // 實(shí)際送股
float m_fPeiStock; // 實(shí)際配股
float m_fPeiPrice; // 配股價(jià),僅當(dāng) m_fPei!=0.0f 時(shí)有效
float m_fProfit; // 每10股紅利
float m_fZhiJieStock; // 直接上市(萬(wàn)股)
}POWER_STRUCTEx;typedef struct {
WORD m_nMarket;
char m_szLable[10];
}BLOCK_STRUCT;////////////////////////////////////////////////////
//分析周期
////////////////////////////////////////////////////
enum CYC_DATA_TYPE
{
MIN1_DATA=0, //1分鐘線(xiàn)
MIN5_DATA, //5分鐘線(xiàn)
MIN15_DATA, //15分鐘線(xiàn)
MIN30_DATA, //30分鐘線(xiàn)
MIN60_DATA, //60分鐘線(xiàn)
DAY_DATA, //日線(xiàn)
WEEK_DATA, //周線(xiàn)
MONTH_DATA, //月線(xiàn)
YEAR_DATA, //年線(xiàn)
MULTIDAY_DATA, //多日線(xiàn)
TICK_DATA, //分筆成交
MULTIHOUR_DATA, //多小時(shí)線(xiàn)
MULTISEC_DATA, //多秒線(xiàn)
MULTIMIN_DATA, //多分鐘線(xiàn)
QUARTER_DATA, //季度線(xiàn)
SEMIYEAR_DATA, //半年線(xiàn)
SOLARTERM_DATA, //節(jié)氣線(xiàn)
MIN3_DATA, //3分鐘線(xiàn)
MIN10_DATA, //10分鐘線(xiàn)
MULTITICK_DATA //多筆
};typedef struct
{
//////////////////////////////////////////////////////////////////////////
//調(diào)用數(shù)據(jù)信息
DWORD m_dwVersion; //調(diào)用軟件版本(V2.10 : 0x210)
DWORD m_dwSerial; //調(diào)用軟件序列號(hào)
char m_szLabel[10]; //調(diào)用的品種代碼
WORD m_wMarket; //調(diào)用的品種市場(chǎng),比如上海為'HS'
CYC_DATA_TYPE m_dataType; //調(diào)用數(shù)據(jù)類(lèi)型
BOOL m_bIsPow; //是否復(fù)權(quán)
int m_nPowType; //復(fù)權(quán)類(lèi)別 0向前復(fù)權(quán) 1向后復(fù)權(quán)
BOOL m_bIsReversePrice; //是否反轉(zhuǎn)價(jià)格
//////////////////////////////////////////////////////////////////////////
//以下為返回的數(shù)據(jù)信息
int m_nNumData; //數(shù)據(jù)數(shù)量
HISTORY_STRUCTEx * m_pMainData; //主數(shù)據(jù)緩沖區(qū)
SUBSECTION_REPORT * m_pSubsection; //當(dāng)日分筆成交明細(xì)
int m_nNumSubData; //分筆數(shù)據(jù)量REPORT_STRUCT* m_pReport; //動(dòng)態(tài)實(shí)時(shí)行情結(jié)構(gòu)
float* m_pfFinData; //財(cái)務(wù)數(shù)據(jù)
POWER_STRUCTEx* m_pSplitData; //除權(quán)數(shù)據(jù)
int m_nNumSplitData; //除權(quán)次數(shù)
}PCALCINFO;typedef struct tagRCV_REPORT_STRUCTExV3
{
WORD m_cbSize; // 結(jié)構(gòu)大小
time_t m_time; // 成交時(shí)間
WORD m_wMarket; // 股票市場(chǎng)類(lèi)型
char m_szLabel[STKLABEL_LEN]; // 股票代碼,以'\0'結(jié)尾
char m_szName[STKNAME_LEN]; // 股票名稱(chēng),以'\0'結(jié)尾
float m_fLastClose; // 昨收
float m_fOpen; // 今開(kāi)
float m_fHigh; // 最高
float m_fLow; // 最低
float m_fNewPrice; // 最新
float m_fVolume; // 成交量
float m_fAmount; // 成交額
float m_fBuyPrice[3]; // 申買(mǎi)價(jià)1,2,3
float m_fBuyVolume[3]; // 申買(mǎi)量1,2,3
float m_fSellPrice[3]; // 申賣(mài)價(jià)1,2,3
float m_fSellVolume[3]; // 申賣(mài)量1,2,3
float m_fBuyPrice4; // 申買(mǎi)價(jià)4
float m_fBuyVolume4; // 申買(mǎi)量4
float m_fSellPrice4; // 申賣(mài)價(jià)4
float m_fSellVolume4; // 申賣(mài)量4
float m_fBuyPrice5; // 申買(mǎi)價(jià)5
float m_fBuyVolume5; // 申買(mǎi)量5
float m_fSellPrice5; // 申賣(mài)價(jià)5
float m_fSellVolume5; // 申賣(mài)量5
} RCV_REPORT_STRUCTExV3; -
typedef struct {
BLOCK_STRUCT m_stStock; //單品種合約
BYTE m_nBuySell; //0 買(mǎi)入方向 1賣(mài)出方向
WORD m_nVol; //下單數(shù)量
}TAOLI_INFO;//成交回報(bào)消息結(jié)構(gòu) cxh99.com
typedef struct {
long m_nOrderID; //訂單ID
CString m_strStatus; //狀態(tài)(詳見(jiàn).CPP文件描述)
long m_nFilled; //已成交數(shù)量
long m_nRemaining; //剩余數(shù)量
float m_fPrice; //成交價(jià)格
CString m_strCode; //品種
CString m_strMarket; //市場(chǎng)
BYTE m_nKaiping; //開(kāi)平倉(cāng) 0開(kāi)倉(cāng) 1平倉(cāng)
BYTE m_nType; //訂單類(lèi)型 0限價(jià) 1市價(jià) 2停損 3限價(jià)停損
BYTE m_nAspect; //買(mǎi)賣(mài)方向 0買(mǎi)入 1賣(mài)出
CString m_strAccount; //操作賬戶(hù)
BYTE m_nAccountType; //賬戶(hù)類(lèi)型 0IB 1CTP 2金仕達(dá)
}BARGAIN_NOTIFY_KSI;//////////////////////////////////////////////////////////////////////////
//消息包結(jié)構(gòu) www.weiqiv.net.cn
//////////////////////////////////////////////////////////////////////////
typedef struct {
RCV_REPORT_STRUCTExV3 * m_pData;
int m_nDataCount;
}REPORT_UPDATE1;typedef struct {
RCV_REPORT_STRUCTExQH * m_pData;
int m_nDataCount;
}REPORT_UPDATE2;#pragma pack (pop)
//主程序暴露給插件的接口
interface IMainFramework
{
public:
IMainFramework(){};
virtual ~IMainFramework(){};
//取得主窗口句柄
virtual HWND GetMainWindow() = 0;//取主程序版本號(hào)
virtual DWORD GetVersion() = 0;//取指定品種數(shù)據(jù),成功取得數(shù)據(jù)返回TRUE,否則為FALSE
virtual BOOL GetDataInfo(PCALCINFO * pInfo) = 0;//取指定品種的動(dòng)態(tài)及時(shí)報(bào)表
virtual REPORT_STRUCT * GetReportData(char * szLabel, WORD wMarket) = 0;//取指定分類(lèi)板塊的品種數(shù)組
//szName為分類(lèi)或者板塊名稱(chēng),如"上海A股"等,nMode為類(lèi)別,0市場(chǎng)分組,1分類(lèi)板塊,2系統(tǒng)板塊(品種欄對(duì)應(yīng))
virtual void GetReportData(CArray<BLOCK_STRUCT, BLOCK_STRUCT&> &arBlcok, char * szName, int nMode) = 0;//注冊(cè)品種到數(shù)據(jù)通知,例如RegReportNotify("CL05",'MN');將合約注冊(cè)到數(shù)據(jù)通知,當(dāng)CL05有最新數(shù)據(jù)到達(dá)時(shí)觸發(fā)ReportNotify事件。
virtual BOOL RegReportNotify(char * szLabel, WORD wMarket) = 0;//取消品種數(shù)據(jù)注冊(cè),例如UnRegReportNotify("CL05",'MN'),CL05數(shù)據(jù)到達(dá)時(shí)不會(huì)再收到通知。
virtual void UnRegReportNotify(char * szLabel, WORD wMarket) = 0;//下單委托交易
// nType 下單類(lèi)型 0限價(jià) 1市價(jià) 2停損 3限價(jià)停損
// fLmtPrice 委托限價(jià)
virtual long PlaceOrder(BYTE nType, float fLmtPrice, float fStopLmtPrice, UINT nVol, BYTE nAspact, LPCSTR lpszLabel, WORD wMarket,
BOOL bMustOK, LPCSTR lpszAccount, BYTE nKaiPing, BYTE nTouBao, BYTE bOrderQueue) = 0;//撤單 cxh99.com
virtual void OrderCancel(long nOrderID, BYTE bOrderQueue) = 0;//注冊(cè)WINDOWS窗口消息,金字塔將以事件方式通知各種
virtual void RegisterMsg(HWND hMsgWnd, DWORD dwMsg) = 0;//得到套利合約信息
//返回TRUE表示成功 ,返回套利指數(shù)內(nèi)定義的套利品種信息
virtual BOOL GetTaoliInfo(char * szTaoliLabel, CArray<TAOLI_INFO,TAOLI_INFO&> &m_arTaoliInfo) = 0;//得到IB品種持倉(cāng)數(shù)量
virtual int GetHolding() = 0;//得到國(guó)內(nèi)期貨的持倉(cāng)數(shù)量
virtual int GetHolding2(char * szAccount) = 0;//到所有IB帳戶(hù)當(dāng)前有效的未成交合約品種數(shù)量
virtual int GetOrderNum() = 0;//得到所有國(guó)內(nèi)期貨當(dāng)前有效的未成交合約品種數(shù)量
virtual int GetOrderNum2() = 0;//得到IB帳戶(hù)的成交明細(xì)數(shù)量
virtual int GetTradeCount() = 0;
//得到指定帳戶(hù)的國(guó)內(nèi)期貨帳戶(hù)的成交明細(xì)數(shù)量
virtual int GetTradeCount2(CString Account) = 0;//當(dāng)前已經(jīng)登陸IB顧問(wèn)帳戶(hù)子帳戶(hù)數(shù)量,若登陸的是IB普通帳戶(hù)此屬性為1
virtual int GetIBACCount() = 0;//當(dāng)前已經(jīng)登陸國(guó)內(nèi)期貨帳戶(hù)數(shù)量(包含無(wú)效登陸等情況在內(nèi)的)
virtual int GetCTPAcCount() = 0;//得到當(dāng)前默認(rèn)帳戶(hù)信息
virtual VARIANT GetAccount(short nType) = 0;//得到指定的國(guó)內(nèi)期貨帳戶(hù)信息
virtual VARIANT GetAccount2(short nType, char * szAccount) = 0;/*取指定索引的持倉(cāng)IB合約信息
Index 輸入?yún)?shù),指定基于0索引的持倉(cāng)和約信息,持倉(cāng)和約總量參見(jiàn) Holding 屬性。
Hold 輸出參數(shù),該該持倉(cāng)品種持倉(cāng)量,若空倉(cāng)返回負(fù)數(shù)
MktPrice 輸出參數(shù),該持倉(cāng)品種市價(jià)
AvgPrice 輸出參數(shù),該持倉(cāng)品種均價(jià)
MktValue 輸出參數(shù),該持倉(cāng)品種市值
AgeCost 輸出參數(shù),該持倉(cāng)品種成本
PNL 輸出參數(shù),該持倉(cāng)品種浮動(dòng)盈虧
Code 輸出參數(shù),該持倉(cāng)品種代碼
Market 輸出參數(shù),該持倉(cāng)品種市場(chǎng)
返回值: 成功返回1,失敗返回0 */
virtual BOOL HoldingInfo(UINT Index, int &Hold, double &MktPrice, double &AvgPrice, double &MktValue, double &AgeCost, double &PNL, CString &Code, WORD &Market) = 0;
/*取指定索引的指定CTP帳戶(hù)的合約持倉(cāng)信息
Index 輸入?yún)?shù),指定基于0索引的持倉(cāng)和約信息,持倉(cāng)和約總量參見(jiàn) Holding2 屬性。
BuyHoding 輸出參數(shù),該該持倉(cāng)品種買(mǎi)入持倉(cāng)總量
BuyCost 輸出參數(shù),該持倉(cāng)品種持倉(cāng)成本
BuyTodayHoding 輸出參數(shù),該持倉(cāng)品種今買(mǎi)持總量
SellHoding 輸出參數(shù),該持倉(cāng)品種賣(mài)出持倉(cāng)總量
SellCost 輸出參數(shù),該持倉(cāng)品種賣(mài)出持倉(cāng)成本
SellTodayHoding 輸出參數(shù),該持倉(cāng)品種的今賣(mài)出持倉(cāng)總量
PNL 輸出參數(shù),該持倉(cāng)品種浮動(dòng)盈虧
UseMargin 輸出參數(shù),該持倉(cāng)品種的保證金占用
Code 輸出參數(shù),該持倉(cāng)品種代碼
Market 輸出參數(shù),該持倉(cāng)品種市場(chǎng)
Account 輸入?yún)?shù),可缺省,登陸CTP的帳戶(hù)名稱(chēng),若不填寫(xiě)則表示當(dāng)前默認(rèn)的帳戶(hù)
返回值: 成功返回1,失敗返回0 */
virtual BOOL HoldingInfo2(UINT Index, int &BuyHoding, double &BuyCost, int &BuyTodayHoding, int &SellHoding, double &SellCost, int &SellTodayHoding, double &PNL, double &UseMargin, CString &Code, WORD &Market, CString Account) = 0;/*
* 取指定基于0索引的未成交IB合約信息
Index 輸入?yún)?shù),指定基于0索引的持倉(cāng)和約信息,持倉(cāng)和約總量參見(jiàn) OrderNum 屬性。
OrderID 輸出參數(shù), 未成交訂單ID
ConSign 輸出參數(shù),本次委托數(shù)量
Filled 輸出參數(shù),已成交數(shù)量
Remaining 輸出參數(shù),未成交數(shù)量
Action 輸出參數(shù),動(dòng)作類(lèi)型 0買(mǎi)入 1賣(mài)出
OrderType 輸出參數(shù),訂單類(lèi)型 0限價(jià) 1市價(jià) 2停損 3市價(jià)停損
LmtPrice 輸出參數(shù),當(dāng)OrderType等于0時(shí)為限價(jià),為3時(shí)為停損限價(jià)
auxPrice 輸出參數(shù),停損價(jià)格
Account 輸出參數(shù),帳戶(hù)信息
Code 輸出參數(shù),該持倉(cāng)品種代碼
Market 輸出參數(shù),該持倉(cāng)品種市場(chǎng)
返回值: 成功返回1,失敗返回0
*/
virtual BOOL OrderInfo(UINT Index, int &OrderID, int &ConSign, int &Filled, int &Remaining, int &Action, int &OrderType, double &LmtPrice, double &auxPrice, CString &Account, CString &Code, WORD &Market) = 0;
/*取指定基于0索引的未成交CTP合約信息
Index 輸入?yún)?shù),指定基于0索引的持倉(cāng)和約信息,持倉(cāng)和約總量參見(jiàn) OrderNum2 屬性。
OrderID 輸出參數(shù), 未成交訂單ID
ConSign 輸出參數(shù),本次委托數(shù)量
Filled 輸出參數(shù),已成交數(shù)量
Remaining 輸出參數(shù),未成交數(shù)量
Action 輸出參數(shù),動(dòng)作類(lèi)型 0買(mǎi)入 1賣(mài)出
OrderType 輸出參數(shù),訂單類(lèi)型 0限價(jià) 1市價(jià) 2停損 3市價(jià)停損
LmtPrice 輸出參數(shù),當(dāng)OrderType等于0時(shí)為限價(jià),為3時(shí)為停損限價(jià)
Account 輸出參數(shù),帳戶(hù)信息
Kaiping 輸出參數(shù),開(kāi)平倉(cāng)類(lèi)型 0開(kāi)倉(cāng) 1平倉(cāng)
Code 輸出參數(shù),該持倉(cāng)品種代碼
Market 輸出參數(shù),該持倉(cāng)品種市場(chǎng)
返回值: 成功返回1,失敗返回0 */
virtual BOOL OrderInfo2(UINT Index, int &OrderID, int &ConSign, int &Filled, int &Remaining, int &Action, int &OrderType, double &LmtPrice, CString &Account, int &Kaiping, CString &Code, WORD &Market) = 0;
/*獲取指定品種的合約種類(lèi) www.weiqiv.net.cn
Code 輸入?yún)?shù),指定的品種代碼
Market 輸入?yún)?shù),指定的品種市場(chǎng)
返回值:是可以交易的國(guó)內(nèi)期貨接口品種返回1,IB接口返回0*/
virtual int StockType(char * szCode, WORD wMarket) = 0;/*取指定品種的和約信息
Code 輸入?yún)?shù),指定的品種代碼
Market 輸入?yún)?shù),指定的品種市場(chǎng)
Multipliter 輸出參數(shù),該品種的乘數(shù)/單位
MinTick 輸出參數(shù),該品種的最小變動(dòng)單位
ShortPercent 輸出參數(shù),該品種的空頭保證金
LongPercent 輸出參數(shù),該品種的多頭保證金
返回值:成功返回1否則返回0
*/
virtual int GetContract(char *szCode, WORD wMarket, float &Multipliter, float &MinTick, float &ShortPercent, float &LongPercent) = 0;
/*計(jì)算指定品種的本次交易手續(xù)費(fèi)用。請(qǐng)用戶(hù)在交易費(fèi)率設(shè)置上預(yù)先設(shè)置好不同品種的各種交易費(fèi)率情況,這樣才能通過(guò)此方法得到正確的結(jié)果。
Code 指定的品種代碼
Market 指定的品種市場(chǎng)
lmtPrice 指定的限價(jià)
Volume 委托數(shù)量
Type 成交方向 0買(mǎi)入 1賣(mài)出
返回值: 返回計(jì)算后的手續(xù)費(fèi)用*/
virtual float GetChargeByNum(char * szCode, WORD wMarket, float lmtPrice, int Volume, int Type) = 0;
/*取指定基于0索引序號(hào)的IB帳戶(hù)成交明細(xì)
Index 輸入?yún)?shù),基于0索引的成交明細(xì)
Date 輸出參數(shù),成交時(shí)間
Code 輸出參數(shù),品種代碼
Market 輸出參數(shù),品種市場(chǎng)
OrderType 輸出參數(shù),成交單類(lèi)型,0限價(jià) 1市價(jià) 2停損 3限價(jià)停損
Action 輸出參數(shù),成交方向 0買(mǎi)入 1賣(mài)出
Price 輸出參數(shù),成交價(jià)格
Volume 輸出參數(shù),成交量
Account 輸出參數(shù),成交帳戶(hù)
返回值: 成功返回1,失敗返回0*/
virtual int TradeDetalied(int Index, DATE &Date, CString &Code, WORD &Market, int &OrderType, int &Action, float &Price, int &Volume, CString &Account) = 0;
/*取指定基于0索引序號(hào)的CTP帳戶(hù)成交明細(xì)
Index 輸入?yún)?shù),基于0索引的成交明細(xì)
Date 輸出參數(shù),成交時(shí)間
Code 輸出參數(shù),品種代碼
Market 輸出參數(shù),品種市場(chǎng)
OrderType 輸出參數(shù),成交單類(lèi)型,0限價(jià) 1市價(jià) 2停損 3限價(jià)停損
Action 輸出參數(shù),成交方向 0買(mǎi)入 1賣(mài)出
Price 輸出參數(shù),成交價(jià)格
Volume 輸出參數(shù),成交量
Kaiping 輸出參數(shù),開(kāi)平倉(cāng)類(lèi)型,0開(kāi)倉(cāng) 1平倉(cāng)
Account 輸入?yún)?shù),成交帳戶(hù),可省略,若省略則表示當(dāng)前默認(rèn)激活帳戶(hù)
返回值: 成功返回1,失敗返回0*/
virtual int TradeDetalied2(int Index, DATE &Date, CString &Code, WORD &Market, int &OrderType, int &Action, float &Price, int &Volume, int &Kaiping, CString &Account) = 0;
//得到指定基于0索引的IB帳戶(hù)名稱(chēng),例如IBAccountName(0)表示取第一個(gè)登陸的IB帳戶(hù)
virtual CString GetIBAccountName(int nIndex) = 0;
//得到指定基于0索引的CTP帳戶(hù)名稱(chēng)(包含登陸未成功的),例如 CTPAccountName(0)表示取第一個(gè)登陸的CTP用戶(hù)名稱(chēng)
virtual CString GetCTPAccountName(int nIndex) = 0;
//判斷指定帳號(hào)是否是當(dāng)前已登錄有效帳號(hào),例如 Order.IsAccount("351579"),如果該賬戶(hù)已登錄則返回1,否則返回0
virtual int IsAccount(CString strAccount) = 0;
};#endif
最后請(qǐng)大家注意的就是金字塔下C++插件的擴(kuò)展名是 *.ADI 文件名,實(shí)際上就是DLL程序改了擴(kuò)展名放到金字塔的工作目錄下,這么設(shè)計(jì)主要是為了與金字塔已有的DLL模塊沖突,放倒金字塔工作目錄后,重新啟動(dòng)金字塔軟件,就會(huì)在 工具菜單-》擴(kuò)展 里看到我們所開(kāi)發(fā)出來(lái)的C++插件了。
有思路,想編寫(xiě)各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 1145508240 進(jìn)行 有償 編寫(xiě)!(不貴!點(diǎn)擊查看價(jià)格!)
- 上一篇:沒(méi)有了!
- 下一篇:沒(méi)有了!
相關(guān)文章
-
沒(méi)有相關(guān)內(nèi)容