期貨量化交易軟軟件:怎樣開發(fā)可以獲利的交易策略
簡介
通過技術(shù)分析開發(fā)成功交易策略的過程可以分為以下幾步:

編輯
在某個資產(chǎn)價格圖表窗口上附加幾個技術(shù)指標(biāo), 并識別出其中信號指標(biāo)與市場關(guān)聯(lián)的模式.
把上一步相關(guān)性分析取得的數(shù)據(jù)進行公式化.
把策略轉(zhuǎn)換為對應(yīng)的編程語言進而創(chuàng)建一個機械化的交易系統(tǒng).
在基于歷史數(shù)據(jù)的模擬器中運行這個交易系統(tǒng)并調(diào)整它的輸入?yún)?shù)(優(yōu)化).
如果之前的步驟不能增加資產(chǎn), 則返回第一步.
在模擬賬戶中運行之前創(chuàng)建的系統(tǒng)進行測試.
如果之前的步驟不能在模擬系統(tǒng)中獲利, 返回第一步.
在真實效益中使用該系統(tǒng), 并且根據(jù)市場條件的變化時而調(diào)節(jié)其輸入?yún)?shù).
事實就是這樣. 通過這種方式建立的系統(tǒng)不僅可以用于自動化交易, 也可以在人工交易中作建議, 提示來自技術(shù)指標(biāo)的重要信號. 讓我們嘗試一下計算機化這個過程, 看看會發(fā)生什么. 本文分析這樣的實例: 根據(jù)讀取的加速/減速振蕩指標(biāo) (AC), 使用單層神經(jīng)網(wǎng)絡(luò)來預(yù)測未來價格的走向.
神經(jīng)網(wǎng)絡(luò)
什么是神經(jīng)網(wǎng)絡(luò)或感知器?它是一種算法, 它使用線性過濾在某個類上增加或者減少對象. 不等式看起來是這樣的:
? ? ?w1 * a1 + w2 * a2 + ... wn * an > d,
其中: wi - 以 i 為索引的權(quán)重系數(shù), ai - 對象索引 i 的數(shù)值, d - 閾值, 通常等于0. 如果不等式的左側(cè)大于閾值, 則對象屬于某一類, 如果低于閾值, 則不屬于那一類. 赫茲期貨量化的對象分類只需要分成兩類的情況下, 單層神經(jīng)網(wǎng)絡(luò)就已經(jīng)足夠了. 也許看起來在這個在神經(jīng)網(wǎng)絡(luò)不等式中的權(quán)重系數(shù)就像薩滿法術(shù)一般. 而現(xiàn)實情況并非如此. 神經(jīng)網(wǎng)絡(luò)的運行原則是含有幾何學(xué)意義的. 實際上, 一個幾何學(xué)上的平面可以被描述為一個線性等式. 例如, 在三維空間中, 關(guān)聯(lián)著X, Y, Z坐標(biāo)的平面等式如下所示:
A * X + B * Y + C * Z + D = 0
在該平面一側(cè)的所有點的坐標(biāo)都滿足如下不等式:
A * X + B * Y + C * Z + D > 0
而平面另外一側(cè)的所有點的坐標(biāo)都滿足下面的不等式:
A * X + B * Y + C * Z + D < 0
這樣的話, 如果我們知道了這樣的一個平面等式和任何點的坐標(biāo), 赫茲期貨量化就可以在空間內(nèi)通過這個平面把所有的點分成兩個集合. 相應(yīng)地, 神經(jīng)網(wǎng)絡(luò)不等式中的權(quán)重系數(shù)也就是在某個對象標(biāo)記的多維空間中定義的特定平面等式. 通過不等式的方式,赫茲期貨量化就可以準(zhǔn)確地區(qū)分這些對象是在指定平面的這一側(cè)還是另外一側(cè). 為了這個目標(biāo), 赫茲期貨量化只需要確定對象的坐標(biāo), 并且在平面等式中做代換, 然后與0坐比較就可以了. 問題定義 如果我們把對象分成兩類, 例如買入和賣出, 并使用技術(shù)分析中指標(biāo)或者振蕩指標(biāo)的數(shù)值作為標(biāo)記, 赫茲期貨量化只需要找到一個平面等式并且在區(qū)分目標(biāo)中使用它就好了. 問題定義非常清楚. 然而, 神經(jīng)網(wǎng)絡(luò)有一個問題. 讓我們看一下以X和Y坐標(biāo)標(biāo)記的二維空間, 赫茲期貨量化將在此空間放置坐標(biāo)點對象. ?

編輯
上圖顯示, 紅色點集不與藍色點集的坐標(biāo)相交, 這兩個點集被直線分開了(二維空間中, 使用線來分隔, 而三位或多維空間中, 使用面來分隔). 請注意, 這些分隔線的等式可能有所不同. 現(xiàn)在看另外一個實例: ? ? ? ?

編輯
赫茲期貨量化可以看到, 在平面中這些點有所交匯, 沒有辦法使用直線清楚地把它們分開. 唯一可行的方案就是在這兩個點集中畫一條直線, 使得絕大部分紅色點在一側(cè), 藍色點在另外一側(cè). 這一次,我們使用一個優(yōu)化方案, 也就是找到一個對應(yīng)于平面或者直線的等式, 可以把兩類對象最大程度地分開, 但是在區(qū)分過程中也許會有所錯誤, 一些屬于某一類的點可能被分到另外一類中. 還有一些其他實現(xiàn)神經(jīng)網(wǎng)絡(luò)的方法, 如通過非線性過濾或者多層網(wǎng)絡(luò). 非線性過濾可以使用高階曲面來作為分隔面以區(qū)分不同類型的對象. 多層網(wǎng)絡(luò)則使用多個過濾器(分隔面)來把對象分為三類或者更多種類. 讓我們定義一個需要解決的問題. 如果交易者需要在交易中獲利, 他所需要知道的基本信息就是價格改變的方向. 如果價格上漲, 交易者應(yīng)該開一個買入倉位. 如果價格下跌, 則應(yīng)該開一個賣出倉位. 這樣, 我們就有了兩類對象, 即價格移動的方向. 根據(jù)技術(shù)分析, 交易者需要通過研究技術(shù)指標(biāo)和振蕩指標(biāo)來做出決定. 我們將分析加速減速振蕩指標(biāo)(AC). 因為振蕩指標(biāo)都是水平線上分離的柱形圖, 我們將需要一個線性過濾器構(gòu)成的神經(jīng)網(wǎng)絡(luò). 我們將使用的對象標(biāo)記模式為: 在當(dāng)前時刻前每隔七個時段進行計算的四個點的值.

編輯
在上圖中, 振蕩指標(biāo)值使用圓形做了標(biāo)記. 我們將把它們標(biāo)識為a1, a2, a3和a4, 并且把它們代入到平面等式中計算與零做比較, 以決定其模式應(yīng)當(dāng)屬于哪一側(cè). 現(xiàn)在問題只剩下怎樣獲得這個把模式區(qū)分為價格上漲還是價格下跌的平面等式了. 為了這個目標(biāo), 我們將使用赫茲期貨量化中內(nèi)含的遺傳算法來加快優(yōu)化過程. 換句話說, 赫茲期貨量化將使用這樣的方法來選擇線性過濾器的權(quán)重系數(shù), 最終我們可以使用基于歷史數(shù)據(jù)優(yōu)化的策略來得到取得最大利潤的線性等式. 為此我們至少需要此交易策略的公式, 以把這種交易算法轉(zhuǎn)換為赫茲期貨量化中EA的代碼.. 理論上, 一個交易系統(tǒng)應(yīng)該同時提供進入和退出市場的信號. 然而, 在如下條件下, 退出信號是可選或者不需要的:
下單帶有止損位和獲利位;
在收到市場趨勢反轉(zhuǎn)信號時平倉并下反向單.
為了避免交易系統(tǒng)太過復(fù)雜, 我們將使用保護性止損, 止損以及反向信號來作為輸出. 在這樣的條件下, 神經(jīng)網(wǎng)絡(luò)將只輸出兩種信號, 即: ? ? ?
價格將可能上漲;
價格將可能下跌.
這將簡化神經(jīng)網(wǎng)絡(luò)的任務(wù), 只需要把對象區(qū)分為兩類. 交易系統(tǒng)的優(yōu)化過程也可以去除止盈單的控制來進行簡化, 即避免了選擇另外一個輸入?yún)?shù). 在這種情況下, 使用移動止損來逐步向獲利方向設(shè)置止損值, 直至神經(jīng)網(wǎng)絡(luò)發(fā)出反向信號或者出錯的時候就夠了.. 神經(jīng)網(wǎng)絡(luò)的出錯將觸發(fā)保護性止損. 另外, 訂單管理系統(tǒng)變得復(fù)雜了. 實現(xiàn)向相反方向的快速倉位反轉(zhuǎn), 最好的方法是使用雙倍手?jǐn)?shù)的訂單, 可以隨后關(guān)閉之前的反向訂單. 這種方法可以在收到神經(jīng)網(wǎng)絡(luò)的信號后立即進行反向的操作. 為了減少錯誤的神經(jīng)網(wǎng)絡(luò)信號, 赫茲期貨量化將只根據(jù)已經(jīng)完成的價格柱以及此柱的開盤價格來讀取和做出決定. 問題的解決 請參照以下實現(xiàn)此交易策略的EA源代碼: //+------------------------------------------------------------------+ //| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ArtificialIntelligence.mq4 | //| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Copyright й 2006, Yury V. Reshetov | //| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? http://reshetov.xnet.uz/ | //+------------------------------------------------------------------+ #property copyright "Copyright й 2006, Yury V. Reshetov ICQ:282715499 ?http://reshetov.xnet.uz/" #property link "http://reshetov.xnet.uz/" //---- 輸入?yún)?shù) extern int ? ?x1 = 120; extern int ? ?x2 = 172; extern int ? ?x3 = 39; extern int ? ?x4 = 172; // 止損水平 extern double sl = 50; extern double lots = 0.1; extern int ? ?MagicNumber = 888; static int prevtime = 0; static int spread = 3; //+------------------------------------------------------------------+ //| EA 初始化函數(shù) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| //+------------------------------------------------------------------+ int init()