自動(dòng)構(gòu)建主力合約--自動(dòng)實(shí)現(xiàn)歷史測(cè)試之前的數(shù)據(jù)選取工作 [開拓者 TB]
- 咨詢內(nèi)容:
筆者踏入期貨市場(chǎng)多年,學(xué)習(xí)了不少技術(shù)分析方法,也接觸了一些前沿理念,而期貨市場(chǎng)日益興起的程序化交易方法就是其中重要的一種。
程序化交易,即是指將人的操作理念和風(fēng)險(xiǎn)控制原則等編制為計(jì)算機(jī)的某種特定軟件可執(zhí)行的代碼,由計(jì)算機(jī)代為執(zhí)行。從而減少因?yàn)槿诵缘娜觞c(diǎn)而執(zhí)行起來產(chǎn)生偏差的情況。同時(shí),使用程序化交易系統(tǒng)也可以對(duì)人的操作起到有益的輔助作用,減輕人的負(fù)擔(dān)。
愿望是美好的,程序化交易理念的產(chǎn)生應(yīng)該也是基于以上的美好目標(biāo)。可是要編制出一套完整有效和穩(wěn)定的程序化交易系統(tǒng)出來,卻并非易事。先不說前期的量化和代碼轉(zhuǎn)化等問題,即使是這些問題都已經(jīng)解決了,那也只能說是我們的程序化交易系統(tǒng)才完成一小半。為什么呢?因?yàn)槲覀冞€有更重要的測(cè)試工作要做。一個(gè)沒有經(jīng)過測(cè)試并優(yōu)化改進(jìn)的系統(tǒng),是萬萬不可貿(mào)貿(mào)然投入實(shí)戰(zhàn)的。
由于我們是立足于對(duì)過去已經(jīng)發(fā)生的事件和行情所編制的系統(tǒng),所以第一步我們應(yīng)該測(cè)試在歷史行情上的表現(xiàn)如何,如果在歷史測(cè)試中都表現(xiàn)平平,那大概就是我們總結(jié)歸納出來的方法有問題,是沒有任何實(shí)際使用價(jià)值的。在此基礎(chǔ)上,如果測(cè)試效果不錯(cuò),我們?cè)賹⑾到y(tǒng)應(yīng)用于實(shí)盤上跟蹤觀測(cè)一段時(shí)間。在確保沒有新的問題和不穩(wěn)定因素出現(xiàn)的情況下,我們才可以投入真金白銀進(jìn)去。
可見第一步的歷史測(cè)試相當(dāng)重要,它的結(jié)果幾乎就決定了后續(xù)工作的開展與否。了解程序化交易的朋友們都知道,目前國(guó)內(nèi)普遍使用的可支持程序化交易的交易軟件也就那么2-3家,他們分別是文華財(cái)經(jīng)、金狐交易師和交易開拓者。其中最為普遍的還是文華財(cái)經(jīng)的WebStock,目前最新版本是2008版。可是筆者卻不怎么喜歡該軟件:函數(shù)少,自定義擴(kuò)展功能也不怎么樣,數(shù)據(jù)還經(jīng)常變來變?nèi)ゲ徽鎸?shí)。而金狐交易師是由鼎鼎大名的飛狐交易師演變而來,由于其本身固有的特點(diǎn)以及營(yíng)銷模式的問題,目前國(guó)內(nèi)似乎只有中國(guó)國(guó)際期貨公司才為客戶提供該軟件,一般客戶難以享受到該軟件的強(qiáng)大功能。那么,就剩下最后一款軟件了:交易開拓者,又稱TB。事實(shí)上,筆者該次的試驗(yàn)就是建立在該軟件之上的,沒有該軟件,就不會(huì)有本文的產(chǎn)生。
為什么要選擇交易開拓者做為我們本次分析研究的平臺(tái),這要?dú)w因于歷史數(shù)據(jù)的選取上。很多步入程序化交易領(lǐng)域的交易員——有些甚至已經(jīng)堪稱“元老”級(jí)人物,卻還是不知道該如何來進(jìn)行歷史測(cè)試。常見的就是看到有人說自己研發(fā)出一套系統(tǒng),宣稱盈利和各方面表現(xiàn)都非常可觀,再一看他的測(cè)試周期——直接跨度幾年。我們都知道,期貨市場(chǎng)不同于股票,是存在換月和主力合約與非主力合約一說的。我很懷疑他們的方法難道在一天成交量不足1手的情況下也能發(fā)揮出系統(tǒng)本人宣稱的“奇效”。所以我比較贊同的,是程序化交易中一直存在的另一種理性的聲音:分段截取主力合約數(shù)據(jù)來檢驗(yàn)系統(tǒng)的有效性。
數(shù)據(jù)收集工作,看似簡(jiǎn)單。如果歷史測(cè)試回溯時(shí)間不長(zhǎng),那我們大可以人工選擇并截取,但是如果測(cè)試時(shí)間跨度長(zhǎng)達(dá)幾年呢?如果能夠用電腦程序來自動(dòng)篩選提取那是最好不過了。而要實(shí)現(xiàn)編程自動(dòng)實(shí)現(xiàn)這一目的,目前來看,只有運(yùn)用TB強(qiáng)大的合約疊加功能才能實(shí)現(xiàn)。
附完成圖:
1.JPG (126.11 KB, 下載次數(shù): 9) 2009-3-9 14:10:30 上傳
- TB技術(shù)人員:
- //------------------------------------------------------------------------
- // 簡(jiǎn)稱: ZLHY
- // 名稱: 主力合約
- // 類別: 技術(shù)指標(biāo)
- // 類型: 其它類
- // 輸出:
- //------------------------------------------------------------------------
- Vars
- Numeric Major(0);
- Numeric Con0;
- Numeric Con1;
- Numeric Con2;
- Numeric Con3;
- Numeric Con4;
- Numeric Con5;
- Numeric Con6;
- Numeric Con7;
- Numeric Con8;
- Numeric Con9;
- Numeric Con10;
- Numeric Con11;
- Numeric MyOpen;
- Numeric MyHigh;
- Numeric MyLow;
- Numeric MyClose;
- Begin
- CON0=AverageFC(DATA0.OPENINT(),5);
- CON1=AVERAGEFC(DATA1.OPENINT(),5);
- CON2=AVERAGEFC(DATA2.OPENINT(),5);
- CON3=AVERAGEFC(DATA3.OPENINT(),5);
- CON4=AVERAGEFC(DATA4.OPENINT(),5);
- CON5=AVERAGEFC(DATA5.OPENINT(),5);
- CON6=AVERAGEFC(DATA6.OPENINT(),5);
- CON7=AVERAGEFC(DATA7.OPENINT(),5);
- CON8=AVERAGEFC(DATA8.OPENINT(),5);
- CON9=AVERAGEFC(DATA9.OPENINT(),5);
- CON10=AVERAGEFC(DATA10.OPENINT(),5);
- CON11=AVERAGEFC(DATA11.OPENINT(),5);
- If(Con0 > Major)
- {
- Major = Con0;
- MyOpen = Data0.Open;
- MyHigh = Data0.High;
- MyLow = Data0.Low;
- MyClose = Data0.Close;
- }
- If(Con1 > Major)
- {
- Major = Con1;
- MyOpen = Data1.Open;
- MyHigh = Data1.High;
- MyLow = Data1.Low;
- MyClose = Data1.Close;
- }
- If(Con2 > Major)
- {
- Major = Con2;
- MyOpen = Data2.Open;
- MyHigh = Data2.High;
- MyLow = Data2.Low;
- MyClose = Data2.Close;
- }
- If(Con3 > Major)
- {
- Major = Con3;
- MyOpen = Data3.Open;
- MyHigh = Data3.High;
- MyLow = Data3.Low;
- MyClose = Data3.Close;
- }
- If(Con4 > Major)
- {
- Major = Con4;
- MyOpen = Data4.Open;
- MyHigh = Data4.High;
- MyLow = Data4.Low;
- MyClose = Data4.Close;
- }
- If(Con5 > Major)
- {
- Major = Con5;
- MyOpen = Data5.Open;
- MyHigh = Data5.High;
- MyLow = Data5.Low;
- MyClose = Data5.Close;
- }
- If(Con6 > Major)
- {
- Major = Con6;
- MyOpen = Data6.Open;
- MyHigh = Data6.High;
- MyLow = Data6.Low;
- MyClose = Data6.Close;
- }
- If(Con7 > Major)
- {
- Major = Con7;
- MyOpen = Data7.Open;
- MyHigh = Data7.High;
- MyLow = Data7.Low;
- MyClose = Data7.Close;
- }
- If(Con8 > Major)
- {
- Major = Con8;
- MyOpen = Data8.Open;
- MyHigh = Data8.High;
- MyLow = Data8.Low;
- MyClose = Data8.Close;
- }
- If(Con9 > Major)
- {
- Major = Con9;
- MyOpen = Data9.Open;
- MyHigh = Data9.High;
- MyLow = Data9.Low;
- MyClose = Data9.Close;
- }
- If(Con10 > Major)
- {
- Major = Con10;
- MyOpen = Data10.Open;
- MyHigh = Data10.High;
- MyLow = Data10.Low;
- MyClose = Data10.Close;
- }
- If(Con11 > Major)
- {
- Major = Con11;
- MyOpen = Data11.Open;
- MyHigh = Data11.High;
- MyLow = Data11.Low;
- MyClose = Data11.Close;
- }
- PlotNumeric("High",MyHigh);
- PlotNumeric("Open",MyOpen);
- PlotNumeric("Low",MyLow);
- PlotNumeric("Close",MyClose);
- End
- //------------------------------------------------------------------------
- // 編譯版本 GS2004.06.12
- // 用戶版本 2008/08/21 16:15
- // 版權(quán)所有 hedgehog
- // 更改聲明 TradeBlazer Software保留對(duì)TradeBlazer平臺(tái)
- // 每一版本的TrabeBlazer公式修改和重寫的權(quán)利
- //------------------------------------------------------------------------
- //------------------------------------------------------------------------
- TB客服:
已經(jīng)附上指標(biāo)代碼
有需要的可自行稍作修改,加入文字提示,這樣就可以大大方便系統(tǒng)歷史測(cè)試之前的數(shù)據(jù)選取工作了。
明眼人一眼就可以看出來,我的構(gòu)建依據(jù)是持倉量的5日平均,以最大的那個(gè)合約作為主力合約
實(shí)際中發(fā)現(xiàn) 把OPENINT()換成VOL()可能更好,因?yàn)樵谥髁霞s的變換上面,成交量的變化更先于持倉量。
本文僅做拋磚引玉只用,歡迎斧正
[ 本帖最后由 hedgehog 于 2009-3-9 14:26 編輯 ] - 網(wǎng)友回復(fù):
很不錯(cuò).謝謝hedgehog 分享.
- 網(wǎng)友回復(fù):
不錯(cuò),加精
如果以上指標(biāo)公式不適用于您常用的行情軟件
或者您想改編成選股公式,以便快速選出某種形態(tài)個(gè)股的話,
- 上一篇:加倉問題
- 下一篇:咨詢一些CTP的問題 - TradeBlazer公式
相關(guān)文章
-
指定的模型還沒有相關(guān)內(nèi)容!