1. 程式人生 > >高頻交易演算法研發心得--MACD指標演算法及應用

高頻交易演算法研發心得--MACD指標演算法及應用

鳳鸞寶帳景非常,盡是泥金巧樣妝。

曲曲遠山飛翠色;翩翩舞袖映霞裳。

梨花帶雨爭嬌豔;芍藥籠煙騁媚妝。

但得妖嬈能舉動,取回長樂侍君王。

【摘自《封神演義》紂王在女媧宮上香時題的詩】

一首定場詩完畢,咱們書接上回。上回咱們說到使用基於MA長短週期均線上下穿越的方式對行情進行跟蹤。同時也提出該方法的問題,即:當前K線在短時間內出現了類似正弦曲線的波動時,短週期均線和長週期均線會頻繁的相互交差。這種情況的問題就是會導致系統進行頻繁的交易,如果看官們有過手動交易的經驗值,就不難發現,交易的越頻繁,可能賠的越多,同是,心臟承擔的壓力也越大。

從本文開始,我們來聊聊如果使用短線指標來儘量降低交易次數(注意:只能儘量降低,不可能完全螢幕!

),首先來看看MACD指標。

MACD指標應該是大多數交易軟體中的預設技術指標(另筆者比較暈的是,為什麼這些指標會被叫做“技術指標”,完全看不出來和技術有半點關係,另外我也很討厭很多公司裡都把軟體工程師叫做“技術”),其維基百科的定義如下:

MACD指數平滑異同移動平均線Moving Average Convergence / Divergence, MACD)是股票交易中一種常見的技術分析工具,用於研判股票價格變化的強度、方向、能量,以及趨勢週期,以便把握股票買進和賣出的時機。MACD指標由一組曲線與圖形組成,通過收盤時股價或指數的快變及慢變的指數移動平均值EMA)之間的計算出來。

指更短時段的EMA,而則指較長時段的EMA,最常用的是1226EMA

通常情況下,我們會看到的預設數值為MACD12269),那麼,該指標的演算法過程是什麼,引數的意義又是什麼呢?

其計算過程如下:

//1.首先分別計算當前點的12次EMA均值和26次EMA均值的差,KlineValues可以取Close值或者中間值,其名曰:dif

var dif = EMA(KlineValues, 12) - EMA(KlineValues, 26);

//2.為了資料的平穩性,對前面的均值差,再一次計算EMA,次數為9

var dea = EMA(dif,9);

//3.為了其資料的視覺化,求上面二者的差值,並放大兩倍

var macd = (dif - dea) * 2;

從計算過程的第一步中,看官不難發現,MACD的本質是將EMA曲線進行了座標系統的變換,即:以長週期為X軸,並檢視短週期的變化情況。由於DIF值是由兩個不同週期的均線計算得到的,因此,該值總是圍繞著0點上下變換的。

(看官:如果您有過3D系統開發經驗(DXOPENGLU3D。。。)或者嵌入式電子系統開發經驗的話,那麼對這種“先進行座標系統變換,然後得到可量化處理資料”的應用方式就不會感到陌生。)

如果將上面計算過程中dea的引數次數由9改為1的話,上面的macd值就退化成我們前一篇文章中所說的長短均線追逐了,當dif值大於0時,短週期上穿長週期,可以考慮買入,反之亦然。

通過分析,我們大體上可以瞭解MACD12269)的數學含義。您可以認為1226是兩個較短週期的跟蹤方式。在預設引數的情況下,MACD值出現了穿越了0值時,不能100%的做為買入、賣出條件,但是可以成為上一章節所提的MA線追逐演算法降低交易次數的重要參考,情況如下圖所示:

 

由於MACD值是由均值差值計算所得,因此,即使K線走勢持平或者微弱上升,都會導致兩個均值的差值越來越小,MACD也可能會出現0值跳變。另外,高點或低點峰不能作為判定點,因為你無法預料後面是否還會出現峰值。

如果希望彌補MACD線的弱點,可以使用SAR指標加以共同判讀,關於SAR指標,且聽下回分解。

                                                    作者:科學家

                                                    Email[email protected]

                                                    微信:43175692