策略研發(fā)平臺使用說明單合約日內(nèi)_第1頁
策略研發(fā)平臺使用說明單合約日內(nèi)_第2頁
策略研發(fā)平臺使用說明單合約日內(nèi)_第3頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、策略研發(fā)平臺(單合約日內(nèi))使用說明V1.0平臺簡介本策略研發(fā)平臺旨在提供高性能量化交易策略研發(fā)和部署跨平臺(Windows和Linux)方案,以穩(wěn)定和安全的架構(gòu)設(shè)計;快速高效的策略回測和實盤運行一體化框架;靈活易擴展的接口;以及策略評估工具輔助策略研發(fā)者抓住市場機遇,形成正規(guī)化量化策略研發(fā)過程,取得市場成功。穩(wěn)定和安全的架構(gòu)設(shè)計:借鑒高盛等量化交易程序化框架,有效處理行情、交易、策略等線程間通訊,避免行情、成交回報信息處理阻塞網(wǎng)絡(luò)通訊,保障交易程序穩(wěn)定運行。策略信號從策略研發(fā)者部署機器直接發(fā)往券商柜臺,避免策略信號泄密,被第三方不正當使用;有效保障策略研發(fā)者知識產(chǎn)權(quán),避免策略保留造成生存期縮短

2、或者資金規(guī)??s小??焖俑咝У牟呗曰販y和實盤運行一體化框架:良好的面向?qū)ο蟪绦蛟O(shè)計,促使策略回測和實盤運行一體化,在不改動策略自身代碼的前提下,只用外層調(diào)用局部修改即可支持策略回測評估、參數(shù)優(yōu)化;以及實盤運行。C+的程序設(shè)計有效保證策略的回測和實盤執(zhí)行效率;策略回測參數(shù)擇優(yōu)過程還可配合OPENMP等多核程序設(shè)計技術(shù),大量節(jié)省優(yōu)化時間,提高策略測試和驗證效率。靈活易擴展的接口:此平臺采用面向?qū)ο蟪绦蛟O(shè)計方法,策略指標均采用面向?qū)ο蠓绞竭M行封裝,均派生于IIndexCalculator接口類??蛻艨梢酝ㄟ^繼承IIndexCalculator類,自行擴展技術(shù)指標。策略評估工具:自動化產(chǎn)生策略績效分析指

3、標(包括夏普比、最大回撤、盈虧比等),科學(xué)化地分析策略風(fēng)險和收益。與策略研發(fā)者互動,提供交易成本估算建議、程序?qū)崿F(xiàn)優(yōu)化建議等咨詢服務(wù),協(xié)助審核量化流程避免策略先窺風(fēng)險和過度擬合。平臺配置Windows平臺第一步。安裝vs2008(推薦)或更高版本。第二步。安裝和配置pthread庫與Boost庫(1)pthread庫的安裝下載pthread庫的安裝程序pthreads-w32-2-8-0-release.exe,雙擊運行,注意點擊Browse選擇安裝路徑并記住安裝路徑,以便后面配置系統(tǒng)變量時使用。(2)Boost庫的安裝下載Boost庫1_50版本,也可下載boost自行編譯為庫。記住Boos

4、t庫的存檔路徑,以便后面配置系統(tǒng)變量時使用。BOOST官網(wǎng): HYPERLINK / /也可通過我的微盤下載:(3)配置環(huán)境變量右鍵點擊“我的電腦”選擇屬性,進入系統(tǒng)屬性,點擊“高級”選項卡,點擊“環(huán)境變量”進入編輯界面,點擊新建按鈕,為系統(tǒng)創(chuàng)造兩個環(huán)境變量: 變量名分別為PTHREAD和BOOST,變量值分別為(1),(2)中提到的安裝路徑。第三歩,打開平臺VS項目文件,配置項目環(huán)境第四步,對平臺系統(tǒng)進行編譯,成功。Linux平臺推薦ubuntu x64(一定要64位的Linux系統(tǒng))第一步,安裝pthread、boost庫第二步,安裝Intel C+ Compiler第三步,修改帳號目錄下

5、的 .bashrc文件以支持ICC環(huán)境,在.bashrc文件末尾添加“source /opt/intel/bin/compilervar.sh intel64”第四步,通過make命令編譯程序使用說明3.1歷史回測直接運行strategy.v9.exe,或者直接在VS框架中調(diào)試運行,程序默認進行歷史回測。用于歷史回測的測試數(shù)據(jù)放入軟件包目錄下的Strategy3.SIMPLEstrategytestdata文件夾:文件名格式為:“合約_日期.txt”例如:IF1201_20111222.txt;文件內(nèi)容格式為:第一行以“#”開頭,后面分別為“昨結(jié)算價t昨收盤價t昨持倉量”;后面每行數(shù)據(jù)為”時間

6、t買價t買量t賣價t賣量t成交價t累積成交量t持倉量”;程序中對于回測的一些修改配置int BackTest() (Strategy.cpp )(1)設(shè)置tick的時間映射,股指設(shè)置為& TMAP_IF,商品設(shè)置為& TMAP_GOODS/設(shè)置TickMapping,股指設(shè)置為& TMAP_IF,商品設(shè)置為& TMAP_GOODSconst CTickMapping * tmap = & TMAP_IF;(2)設(shè)置指標計算,首先用指標類初始化對象,然后調(diào)用對象的run函數(shù)。指標類是IIndexCalculator的派生類,我們會不斷增加新的指標,當然使用者也可以自己編寫,詳細說明請參考“指標說

7、明”/在這里添加你的指標,指標初始化參數(shù)的含義請見“指標說明”CEMAIndex ema1(MDReader-GetLastPrice(Inst.c_str(),360,tmap-nTotalTick);CEMAIndex ema2(MDReader-GetLastPrice(Inst.c_str(),1200,tmap-nTotalTick);/調(diào)用Run,Run方法的參數(shù)不必修改 ema1.Run(TickQueue,TickQueueSize, *tmap);ema2.Run(TickQueue,TickQueueSize, *tmap);(3)設(shè)置策略對象,策略對象 CStrategy

8、Test st的例子構(gòu)造函數(shù)為: CStrategyTest(const TThostFtdcDateType TradingDay, const TThostFtdcInstrumentIDType InstrumentID, TThostFtdcPriceType pricetick, char closelabel, const CTickMapping &tm, CTickMapping & opentime, IMarketDataReader & md, IIndexCalculator & avg1, IIndexCalculator & avg2, ITrader & oi,C

9、SingleInstrumentStrategyPerformance & perf, ILog & logger = DefaultLogger);參數(shù)含義分別為:交易日期,合約名稱,最小價格跳動單位,平今平昨標識,tick時間映射,交易時間tick映射,數(shù)據(jù)實例,指標1,指標2,交易實例,策略表現(xiàn)實例。其中:最小價格跳動單位,平今平昨標識,ema1,ema2,根據(jù)你具體的情況而定。除此之外,還可以定義成員或者函數(shù)用于支持策略程序的運行需要。詳見StrategyTest.h/在這里將設(shè)置回測的止損偏移量i從n到m,以便后面得到止損偏移量i從n到m的策略表現(xiàn)。例如這里設(shè)置/i的起始值為,就是說

10、止損值為x價格最小跳動單位;如果是股指則為x0.2=4個點。程序?qū)⒌玫街箵p偏移量從到共個止損價格下面的策略不同表現(xiàn),for (int i = 20; i 60; i+)/此處不必修改ITrader * oi = CreateBackTestTraderInstance(NULL);/在此處設(shè)置策略實例初始化參數(shù),策略初始化的參數(shù)含義為:CStrategyTest st(tdate.c_str(),Inst.c_str(),0.2,THOST_FTDC_OF_CloseToday,*tmap,opentime,*MDReader,ema1,ema2,*oi,*(Performancei-20);

11、/設(shè)置止損偏移量st.SetStopOffset(i);st.Run(TickQueue,TickQueueSize,*tmap);delete oi;/endfor歷史回測完成后,程序自動在軟件包目錄下的Strategy3.SIMPLEstrategyperformance下生成策略表現(xiàn)文件,文件名可以自行定義:軟件包目錄下的Strategy3.SIMPLEstrategyperformance下./策略表現(xiàn)文件生成,此例生成上面?zhèn)€止損位下面的策略表現(xiàn)for (int i = 0; iSavePerformance(perf);delete Performancei;文件格式:日期、收益、總

12、交易次數(shù)、總開倉次數(shù)、回合數(shù)、勝利回合數(shù)。其中:收益是指策略表現(xiàn)中的收益是指贏得了n個價格跳動最小單位。比如股指,收益文件中顯示為10,意思就是贏了2個點;顯示為-10,則表示虧了2個點。3.2 模擬盤交易可以在命令行中運行strategy.v9.exe simutrade,即加上參數(shù)simutrade;或者在VS平臺上設(shè)置調(diào)試參數(shù):project-properties-Debugging-Command Argument中設(shè)置參數(shù)simutrade配置strategy.cfg文件:(1)配置行情賬號MD;MD = INVESTOR_ID, PASSWORDMD = 賬號,密碼INSTRUME

13、NT = 合約名(2) 配置交易賬號TRADERTRADER = 賬號,密碼(3) 配置策略參數(shù)STRATEGY;STRATEGY = NAME, INSTRUMENT, 價差變動單位, 是否有平今指令STRATEGY = 策略名稱,合約名,最小價格變動單位,0代表沒有1代表有配置要注意:策略名稱隨意填寫和合約名的大小寫程序中對于模擬交易的一些修改:int RealTime(Strategy.cpp )(1)設(shè)置tick的時間映射,股指設(shè)置為& TMAP_IF,商品設(shè)置為& TMAP_GOODS/設(shè)置TickMapping,股指設(shè)置為& TMAP_IF,商品設(shè)置為& TMAP_GOODScon

14、st CTickMapping * tmap = &TMAP_IF;/(2)設(shè)置指標計算,首先用指標類初始化對象,然后用CDataSniffer的實例ds去添加。指標類是IIndexCalculator的派生類,我們會不斷增加新的指標,當然使用者也可以自己編寫,詳細說明請參考“指標說明”/在這里添加你的指標,指標初始化參數(shù)的含義請見“指標說明”CEMAIndex ema1(md-GetLastPrice(InstrumentID.c_str(),360,tmap-nTotalTick,0,120);CEMAIndex ema2(md-GetLastPrice(InstrumentID.c_st

15、r(),1200,tmap-nTotalTick,0,120);ds-AddIndexCalculator(&ema1);ds-AddIndexCalculator(&ema2);(3)設(shè)置策略對象實例初始化參數(shù),/在此處初始化策略實例。一般在這里設(shè)置商品最小跳動價格,平今平昨標志,指標等。其它參數(shù)的含義見回測中的介紹。 CStrategyTest st(today.c_str(),NULL,0.2,THOST_FTDC_OF_CloseToday,*tmap,opentime, *md,ema1,ema2,*oi,Performance,Logger);(4)設(shè)置止損偏移量/在此處設(shè)置止損偏

16、移量st.SetStopOffset(25);(5)日內(nèi)交易完成之后,程序自動生成交易日志文件:軟件包目錄下的Strategy3.SIMPLEstrategy下的Log.txt。日內(nèi)交易完成后,程序自動生成策略表現(xiàn)文件Return_策略名_交易日.txt:軟件包目錄下的Strategy3.SIMPLEstrategyperformance_real下.文件格式:日期、收益、總交易次數(shù)、總開倉次數(shù)、回合數(shù)、勝利回合數(shù)。其中:收益是指策略表現(xiàn)中的收益是指贏得了n個價格跳動最小單位。比如股指,收益文件中顯示為10,意思就是贏了2個點;顯示為-10,則表示虧了2個點。3.3 實盤交易可以在命令行中運行

17、strategy.v9.exe realtrade,即加上參數(shù)realtrade;或者在VS平臺上設(shè)置調(diào)試參數(shù):project-properties-Debugging-Command Argument中設(shè)置參數(shù)realtrade其它配置和模擬盤交易一致,不過要注意的是,程序?qū)嵄P交易的柜臺設(shè)置是華西期貨的交易柜臺,因此,需要在華西期貨開戶獲得交易賬戶和密碼方可進行實盤交易。3.4 指標說明指標的使用:指標的初始化:指標類都繼承于IIndexCalculator,其中有幾個重要的參數(shù)在任何指標使用之前都必須初始化:winsize窗口,step間隔,數(shù)據(jù)窗口是指一個固定時間,比如5分鐘的數(shù)據(jù)窗口,

18、就是用當前5分鐘的數(shù)據(jù)進行統(tǒng)計值計算;而間隔就是在數(shù)據(jù)窗口內(nèi),取值的步長。關(guān)于窗口和步長的理解,可以參考我的博文: HYPERLINK /s/blog_56e7157f01016kdr.html /s/blog_56e7157f01016kdr.html;以例子中的指標CEMAIndex為例:CEMAIndex ema1(md-GetLastPrice(InstrumentID.c_str(),360,tmap-nTotalTick,0,120);參數(shù)分別的意思是:最新成交價數(shù)據(jù),用md的GetLastPrice獲取,這里一般不用修改;窗口,這里的單位是tick,例子中的360含義是360個t

19、ick,也就是180秒也就是3分鐘;Tick數(shù)據(jù)緩沖大小,用tmap-nTotalTick獲取,這里一般不用修改;Alpha值,默認為0;間隔,這里單位是tick,例子中的120含義是120個tick,也就是60秒也就是1分鐘。那么例子里面的ema指標就是指最近3分鐘的成交價按照1分鐘間隔取值計算的ema指標。大多數(shù)指標需要你設(shè)置窗口和間隔。指標的調(diào)用指標的調(diào)用是通過下標調(diào)用相對tick下的指標值,例如,當前的ema值為emacurrentTick,那么取上一個tick值的ema就用emacurrentTick-1,同理,你可以取到任意時刻的指標值用于你的策略分析;常用取值的調(diào)用除了指標值以外

20、,還有以下常用的取值用于策略分析,以下值均為數(shù)組形式,用下標訪問:成交價:LastPricecurrentTick;成交增量:VolumecurrentTick;賣一價:AskPricecurrentTick;賣一量:AskVolumecurrentTick;買一價:BidPricecurrentTick;買一量:BidVolumecurrentTick;持倉增量OpenInterestcurrentTick;以下值直接取值:昨結(jié)算價:YdSettlementPrice;昨收盤價:YdClosePrice;漲停價UpperLimitPrice;跌停價LowerLimitPrice;昨持倉量Yd

21、OpenInterest;以上值的初始化方法如下:首先在CStrategyTest類中聲明需使用的合約變量成員(StrategyTest.h),例如:const double * LastPrice;const double * AskPrice;const double * BidPrice;然后在CStrategyTest類的構(gòu)造函數(shù)中初始化需使用的合約變量(StrategyTest.cpp) if(InstrumentID) strcpy(this-InstrumentID, InstrumentID);RegisterRelatedInstrument(InstrumentID);/初

22、始化合約數(shù)據(jù)實例InstrumentData = md.GetInstrumentData(InstrumentID);/在這里用InstrumentData-Get方法初始化你要用的數(shù)據(jù)。LastPrice = InstrumentData-GetLastPriceToday();AskPrice = InstrumentData-GetAskPriceToday();BidPrice = InstrumentData-GetBidPriceToday();es = CreateSimpleExecutionStrategy(this,oi,InstrumentData,logger);然后就可以按照相應(yīng)方式調(diào)用了。指標的編寫:見下一個文檔版本。3.5 策略編寫本程序完全將訂單交易執(zhí)行抽離出來,交由訂單管理線程處理,因此,在策略編寫時使用者只需在CStrategyTest:DoAction里按照自己的業(yè)務(wù)邏輯設(shè)置狀態(tài)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論