人人爽天天爽夜夜爽qc-人人爽天天爽夜夜爽曰-人人天天爱天天做天天摸-人人天天夜夜-色网站在线-色网站在线看

您現在的位置:程序化交易>> 期貨公式>> 交易開拓者(TB)>> 開拓者知識>>正文內容

自動構建主力合約--自動實現歷史測試之前的數據選取工作 [開拓者 TB]

  • 咨詢內容:     筆者踏入期貨市場多年,學習了不少技術分析方法,也接觸了一些前沿理念,而期貨市場日益興起的程序化交易方法就是其中重要的一種。
    程序化交易,即是指將人的操作理念和風險控制原則等編制為計算機的某種特定軟件可執行的代碼,由計算機代為執行。從而減少因為人性的弱點而執行起來產生偏差的情況。同時,使用程序化交易系統也可以對人的操作起到有益的輔助作用,減輕人的負擔。
        愿望是美好的,程序化交易理念的產生應該也是基于以上的美好目標。可是要編制出一套完整有效和穩定的程序化交易系統出來,卻并非易事。先不說前期的量化和代碼轉化等問題,即使是這些問題都已經解決了,那也只能說是我們的程序化交易系統才完成一小半。為什么呢?因為我們還有更重要的測試工作要做。一個沒有經過測試并優化改進的系統,是萬萬不可貿貿然投入實戰的。
        由于我們是立足于對過去已經發生的事件和行情所編制的系統,所以第一步我們應該測試在歷史行情上的表現如何,如果在歷史測試中都表現平平,那大概就是我們總結歸納出來的方法有問題,是沒有任何實際使用價值的。在此基礎上,如果測試效果不錯,我們再將系統應用于實盤上跟蹤觀測一段時間。在確保沒有新的問題和不穩定因素出現的情況下,我們才可以投入真金白銀進去。
        可見第一步的歷史測試相當重要,它的結果幾乎就決定了后續工作的開展與否。了解程序化交易的朋友們都知道,目前國內普遍使用的可支持程序化交易的交易軟件也就那么2-3家,他們分別是文華財經、金狐交易師和交易開拓者。其中最為普遍的還是文華財經的WebStock,目前最新版本是2008版。可是筆者卻不怎么喜歡該軟件:函數少,自定義擴展功能也不怎么樣,數據還經常變來變去不真實。而金狐交易師是由鼎鼎大名的飛狐交易師演變而來,由于其本身固有的特點以及營銷模式的問題,目前國內似乎只有中國國際期貨公司才為客戶提供該軟件,一般客戶難以享受到該軟件的強大功能。那么,就剩下最后一款軟件了:交易開拓者,又稱TB。事實上,筆者該次的試驗就是建立在該軟件之上的,沒有該軟件,就不會有本文的產生。
        為什么要選擇交易開拓者做為我們本次分析研究的平臺,這要歸因于歷史數據的選取上。很多步入程序化交易領域的交易員——有些甚至已經堪稱“元老”級人物,卻還是不知道該如何來進行歷史測試。常見的就是看到有人說自己研發出一套系統,宣稱盈利和各方面表現都非常可觀,再一看他的測試周期——直接跨度幾年。我們都知道,期貨市場不同于股票,是存在換月和主力合約與非主力合約一說的。我很懷疑他們的方法難道在一天成交量不足1手的情況下也能發揮出系統本人宣稱的“奇效”。所以我比較贊同的,是程序化交易中一直存在的另一種理性的聲音:分段截取主力合約數據來檢驗系統的有效性。
        數據收集工作,看似簡單。如果歷史測試回溯時間不長,那我們大可以人工選擇并截取,但是如果測試時間跨度長達幾年呢?如果能夠用電腦程序來自動篩選提取那是最好不過了。而要實現編程自動實現這一目的,目前來看,只有運用TB強大的合約疊加功能才能實現。
            附完成圖:
    1.JPG (126.11 KB, 下載次數: 9) 2009-3-9 14:10:30 上傳

     

  • TB技術人員:
    1. //------------------------------------------------------------------------
    2. // 簡稱: ZLHY
    3. // 名稱: 主力合約
    4. // 類別: 技術指標
    5. // 類型: 其它類
    6. // 輸出:
    7. //------------------------------------------------------------------------
    8. Vars
    9.     Numeric Major(0);
    10.     Numeric Con0;
    11.     Numeric Con1;
    12.     Numeric Con2;
    13.     Numeric Con3;
    14.     Numeric Con4;
    15.     Numeric Con5;
    16.     Numeric Con6;
    17.     Numeric Con7;
    18.     Numeric Con8;
    19.     Numeric Con9;
    20.     Numeric Con10;
    21.     Numeric Con11;
    22.     Numeric MyOpen;
    23.     Numeric MyHigh;
    24.     Numeric MyLow;
    25.     Numeric MyClose;
    26. Begin
    27.     CON0=AverageFC(DATA0.OPENINT(),5);
    28.     CON1=AVERAGEFC(DATA1.OPENINT(),5);
    29.     CON2=AVERAGEFC(DATA2.OPENINT(),5);
    30.     CON3=AVERAGEFC(DATA3.OPENINT(),5);
    31.     CON4=AVERAGEFC(DATA4.OPENINT(),5);
    32.     CON5=AVERAGEFC(DATA5.OPENINT(),5);
    33.     CON6=AVERAGEFC(DATA6.OPENINT(),5);
    34.     CON7=AVERAGEFC(DATA7.OPENINT(),5);
    35.     CON8=AVERAGEFC(DATA8.OPENINT(),5);
    36.     CON9=AVERAGEFC(DATA9.OPENINT(),5);
    37.     CON10=AVERAGEFC(DATA10.OPENINT(),5);
    38.     CON11=AVERAGEFC(DATA11.OPENINT(),5);

    39.     If(Con0 > Major)
    40.     {
    41.         Major = Con0;
    42.         MyOpen = Data0.Open;
    43.         MyHigh = Data0.High;
    44.         MyLow = Data0.Low;
    45.         MyClose = Data0.Close;
    46.     }

    47.     If(Con1 > Major)
    48.     {
    49.         Major = Con1;
    50.         MyOpen = Data1.Open;
    51.         MyHigh = Data1.High;
    52.         MyLow = Data1.Low;
    53.         MyClose = Data1.Close;
    54.     }

    55.     If(Con2 > Major)
    56.     {
    57.         Major = Con2;
    58.         MyOpen = Data2.Open;
    59.         MyHigh = Data2.High;
    60.         MyLow = Data2.Low;
    61.         MyClose = Data2.Close;
    62.     }

    63.     If(Con3 > Major)
    64.     {
    65.         Major = Con3;
    66.         MyOpen = Data3.Open;
    67.         MyHigh = Data3.High;
    68.         MyLow = Data3.Low;
    69.         MyClose = Data3.Close;
    70.     }

    71.     If(Con4 > Major)
    72.     {
    73.         Major = Con4;
    74.         MyOpen = Data4.Open;
    75.         MyHigh = Data4.High;
    76.         MyLow = Data4.Low;
    77.         MyClose = Data4.Close;
    78.     }

    79.     If(Con5 > Major)
    80.     {
    81.         Major = Con5;
    82.         MyOpen = Data5.Open;
    83.         MyHigh = Data5.High;
    84.         MyLow = Data5.Low;
    85.         MyClose = Data5.Close;
    86.     }

    87.     If(Con6 > Major)
    88.     {
    89.         Major = Con6;
    90.         MyOpen = Data6.Open;
    91.         MyHigh = Data6.High;
    92.         MyLow = Data6.Low;
    93.         MyClose = Data6.Close;
    94.     }

    95.     If(Con7 > Major)
    96.     {
    97.         Major = Con7;
    98.         MyOpen = Data7.Open;
    99.         MyHigh = Data7.High;
    100.         MyLow = Data7.Low;
    101.         MyClose = Data7.Close;
    102.     }

    103.     If(Con8 > Major)
    104.     {
    105.         Major = Con8;
    106.         MyOpen = Data8.Open;
    107.         MyHigh = Data8.High;
    108.         MyLow = Data8.Low;
    109.         MyClose = Data8.Close;
    110.     }

    111.     If(Con9 > Major)
    112.     {
    113.         Major = Con9;
    114.         MyOpen = Data9.Open;
    115.         MyHigh = Data9.High;
    116.         MyLow = Data9.Low;
    117.         MyClose = Data9.Close;
    118.     }

    119.     If(Con10 > Major)
    120.     {
    121.         Major = Con10;
    122.         MyOpen = Data10.Open;
    123.         MyHigh = Data10.High;
    124.         MyLow = Data10.Low;
    125.         MyClose = Data10.Close;
    126.     }

    127.     If(Con11 > Major)
    128.     {
    129.         Major = Con11;
    130.         MyOpen = Data11.Open;
    131.         MyHigh = Data11.High;
    132.         MyLow = Data11.Low;
    133.         MyClose = Data11.Close;
    134.     }

    135.     PlotNumeric("High",MyHigh);
    136.     PlotNumeric("Open",MyOpen);
    137.     PlotNumeric("Low",MyLow);
    138.     PlotNumeric("Close",MyClose);
    139. End
    140. //------------------------------------------------------------------------
    141. // 編譯版本        GS2004.06.12
    142. // 用戶版本        2008/08/21 16:15
    143. // 版權所有        hedgehog
    144. // 更改聲明        TradeBlazer Software保留對TradeBlazer平臺
    145. //                        每一版本的TrabeBlazer公式修改和重寫的權利
    146. //------------------------------------------------------------------------
    復制代碼

     

  • TB客服: 已經附上指標代碼

    有需要的可自行稍作修改,加入文字提示,這樣就可以大大方便系統歷史測試之前的數據選取工作了。


    明眼人一眼就可以看出來,我的構建依據是持倉量的5日平均,以最大的那個合約作為主力合約


    實際中發現 把OPENINT()換成VOL()可能更好,因為在主力合約的變換上面,成交量的變化更先于持倉量。


    本文僅做拋磚引玉只用,歡迎斧正

    [ 本帖最后由 hedgehog 于 2009-3-9 14:26 編輯 ]

     

  • 網友回復: 很不錯.謝謝hedgehog 分享.

     

  • 網友回復: 不錯,加精

 

如果以上指標公式不適用于您常用的行情軟件

或者您想改編成選股公式,以便快速選出某種形態個股的話,

可以聯系我們相關技術人員 QQ: 262069696  點擊在線交流進行 有償 改編!

 


【字體: 】【打印文章】【查看評論

相關文章

    指定的模型還沒有相關內容!
主站蜘蛛池模板: 久久久久国产午夜 | 男女在线网站 | 91免视频 | 亚洲成人99 | 免费无遮挡十八污污网站 | 免费一级特黄欧美大片勹久久网 | 欧美性极品videosbest | 欧美日韩一区二区三区免费不卡 | 久久午夜鲁丝片午夜精品 | 在线不卡一区二区三区日韩 | 国产日韩欧美成人 | 国产精品日韩欧美一区二区 | 成人影院在线观看免费 | 国产欧美一区二区三区视频 | 6080欧美a大片一级 | aaaa黄色片 | 美女视频黄8频a美女大全软 | 日韩video| 亚洲人成网站在线播放观看 | 免费观看国产精品 | 97国产伦子在线观看 | 亚洲网站在线观看 | 免费一级特黄a | 伊人再现 | 国产三级日本三级在线播放 | 亚洲综合成人网 | 亚洲宗合 | 插久久| 色久视频 | 精品女同一区二区三区在线观看 | 欧美日韩精 | 国产综合久久久久 | 亚洲一区免费观看 | 一级毛片人与动免费观看 | 欧美青青 | 亚洲欧美日韩在线中文一 | 128tv在线观看| 欧美护士激情第一欧美精品 | 亚洲欧美国产一区二区三区 | 国产在线日韩在线 | 好吊日在线观看 |