想學EA必看:程序化交易之路,交易系統模型設計思路初探

俗話說的好:思路決定出路,眼界決定境界。作為一名程序化交易愛好者,僅僅依靠已經掌握了模型編寫平臺的基本語法和函數,是遠遠不夠的。要想編寫出一個真正具有實戰價值的自動交易系統模型,設計思想的重要性不言而喻,而設計思想實質上是集成了交易理念、交易思路、交易方法甚至包括交易經驗在內的一種積累與沉澱,絕非一日之功。為縮短程序化交易愛好者的學習探索之路,解決普通投資者缺乏系統設計思路等問題,本文擬從系統入市、離市等兩個方面,嘗試討論交易系統模型的常規設計思路。


【入市設計】


系統模型入市的設計思路,事實上應與投資者的交易風格喜好、交易時間框架密切相關,可以分別是趨勢跟蹤、震盪交易、套利交易等,近年來甚至也出現了基於基本面分析數據的量化模型,以及帶有人工智能性質的神經網絡、遺傳算法等具備自學習、自適應市場能力的高級交易系統模型。不過,依照筆者的見解,最簡單、最實用、最適合普通投資者的交易系統入市設計思路仍然是趨勢跟蹤,而趨勢跟蹤的實質就是追漲殺跌或者美其名曰:順勢而為。突破,是趨勢跟蹤系統設計中最為簡潔實用的設計思路,具體應用設計思路可能包括:


⒈通道突破。最著名的此類程式設計代表作為:海龜交易法則與四周規則。其入市信號觸發設計為:價格突破最近N根K線的高低點。長期來看,這種設計思路雖然簡單,但永遠也不會失效或顯得過時。事實上,越簡單的反而越有效!


⒉均線突破。該設計思路的代表作品有:克羅均線,它由4、9、18等三條均線組成;鱷魚組線,它由5、8、13等三條移中平均線組成;自適應均線,它由考夫曼博士提出,以市場效率生成彈性浮動參數,以均線拐頭為信號觸發,而非普通的均線金*、死*,有興趣的讀者可以參考其系統交易專著《精明交易者》。


⒊指標突破。常見的技術分析指標,如MACD、KDJ、RSI、BOLL、SAR、WR、ADX等,均可獨立構成一個簡單的趨勢跟蹤系統,當然,是使用系統默認參數,還是使用優化參數;是使用其常規用法,還是使用創新用法,可能存在仁者見仁、智者見智的分歧。筆者可能更傾向於具有一定技術分析功力的投資者,以自創技術分析指標為最佳,這樣可以確保你所使用的交易系統模型的專屬性。


⒋形態突破。形態突破,包括K線形態組合突破、經典技術分析形態突破等,K線形態組合的突破,以酒田戰法為最經典,著名的紅三兵、黑三兵、希望之星等經典K線形態均源於此,共分為酒田戰法70型。至於經典的雙頂、雙底、趨勢線突破、橫盤突破、頭肩頂底、三角形態、楔形、旗形、鑽石型、圓弧頂底等技術形態,因普通的模型編寫語言較難精確描述而存在一定的設計使用障礙,需要使用轉向函數及圖形模糊識別技術來克服。


⒌波動性突破。波動性可以定義為:最高價與最低價、當根K線的最高價與昨收盤、當根K線的最低價與昨收盤,這三組價格差額的最大者即該品種的波動性值,波動性既可以進行橫向比較品種間的波動性水平,也可以用於縱向判斷價格波動的異常,並作為入市信號的觸發器。我們可以直接從文華財經內置指標公式中得到如下源碼: MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW)),以此為基礎,我們不難得到波動性突破系統的基本設計思路。


⒍時間價格突破。在趨勢行情的必經之路,守株待兔,是我們進行突破系統設計的基本思路。而時間、價格突破,從速度、幅度的兩維視角預約了趨勢行情,堪稱突破系統設計的典範。基本設計思路為價格在N時間範圍內、上漲或下跌了N個點位。進一步拓展思路後,我們還可以引入周間日、日間時的概念,細化不同時間段的突破標準,以便更好地適應品種個性,此外,我們還可以時間、價格過濾器的方法來實現對趨勢行情的確認,以減少價格盤整階段的假突破現象。


遺憾的是,儘管很多投資者致力於追求日內趨勢跟蹤交易,以降低隔夜交易風險,並認為不同交易時間框架下理念、方法應具有一致性,但實證研究仍然表明,突破類趨勢跟蹤系統所應用的交易時間框架越長、越有效。我們有理由相信,任何一個設計簡單的突破類趨勢跟蹤系統,長期跟蹤市場日線以上級別的結果必然是盈利的,當然同時需要承受較大幅度的階段資金回撤,這是普通投資者難以堅持使用的主要原因,而這並非意味著該趨勢跟蹤系統失效了。


【離市設計】


⒈止損。止損,是交易系統模型設計中一個不可或缺的元素,資金止損、技術止損,是兩種主要的考慮方案,採用兩者孰低的方案可能更為科學。一方面,你要確保每筆交易不冒過大的風險,另一方面,你要背靠一個關鍵的壓力、支撐技術位置,採用反向交易信號作為自動止損的依據,則是持續在市的交易系統模型的一個常用止損方法。


⒉止盈。雖然固定點位的止盈、止損,也是系統設計中可以採用的方法,但我們更傾向於兼顧利潤保護和放大功能的跟蹤止盈或SAR拋物線止盈模式,隨著利潤的擴大,而不斷抬高甚至收緊止盈目標位置,可以在一定程度上起到利潤最大化的設計目標。


⒊時間清倉。以時間為因素考慮離場,無論是作為一種輔助離場方法,還是作為一種獨立的出市方法,都是一個不錯的思路。比如三根K線過後,如果既沒有達到止盈位、也沒有觸及止損位,就主動離場。《幽靈的禮物》中曾經對這種思路有過經典的描述:在市場沒有證明你是正確的時候,主動離場。


無論是入市方法,還是離市方法,建議程序化交易愛好者可以將它們都做成獨立的模塊,像積木一樣可以根據需要自由搭配使用,這對於提高系統模型設計效率與可能組合收益,會產生極大的幫助。當然,作為一個完整的交易系統,還需要考慮資金管理與頭寸調整的細節,建議大家參考《通向金融王國的自由之路》中的風險百分比法。最後,讓我們以一個波動性突破系統的實際例子來回顧一下本文所闡述的系統設計思路。


【波動性突破實盤系統介紹】


系統設計思想:波動性突破,本身帶有一定程度自適應市場的特點,為趨勢跟蹤系統中的上品,我們再加入時間清倉、順勢下轎的元素,在中性的盤整市道中主動退出突破交易,或在發生第二次波動性突破的時候順勢平倉,這樣就部分解決了利潤回撤的問題,至於參數,個人傾向於沒有參數的交易系統模型最好,最具有未來市場的適應能力,如果必須要有一、兩個參數,那麼以該參數在大幅度變動的測試環境下,仍然可以盈利為佳。


分享到:


相關文章: