高頻交易演算法研發心得--MACD指標演算法及應用
鳳鸞寶帳景非常,盡是泥金巧樣妝。
曲曲遠山飛翠色;翩翩舞袖映霞裳。
梨花帶雨爭嬌豔;芍藥籠煙騁媚妝。
但得妖嬈能舉動,取回長樂侍君王。
【摘自《封神演義》紂王在女媧宮上香時題的詩】
一首定場詩完畢,咱們書接上回。上回咱們說到使用基於MA長短週期均線上下穿越的方式對行情進行跟蹤。同時也提出該方法的問題,即:當前K線在短時間內出現了類似正弦曲線的波動時,短週期均線和長週期均線會頻繁的相互交差。這種情況的問題就是會導致系統進行頻繁的交易,如果看官們有過手動交易的經驗值,就不難發現,交易的越頻繁,可能賠的越多,同是,心臟承擔的壓力也越大。
從本文開始,我們來聊聊如果使用短線指標來儘量降低交易次數(注意:只能儘量降低,不可能完全螢幕!
MACD指標應該是大多數交易軟體中的預設技術指標(另筆者比較暈的是,為什麼這些指標會被叫做“技術指標”,完全看不出來和技術有半點關係,另外我也很討厭很多公司裡都把軟體工程師叫做“技術”),其維基百科的定義如下:
MACD:指數平滑異同移動平均線(Moving Average Convergence / Divergence, MACD)是股票交易中一種常見的技術分析工具,用於研判股票價格變化的強度、方向、能量,以及趨勢週期,以便把握股票買進和賣出的時機。MACD指標由一組曲線與圖形組成,通過收盤時股價或指數的快變及慢變的指數移動平均值(EMA)之間的差計算出來。
通常情況下,我們會看到的預設數值為MACD(12,26,9),那麼,該指標的演算法過程是什麼,引數的意義又是什麼呢?
其計算過程如下:
//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系統開發經驗(DX,OPENGL,U3D。。。)或者嵌入式電子系統開發經驗的話,那麼對這種“先進行座標系統變換,然後得到可量化處理資料”的應用方式就不會感到陌生。)
如果將上面計算過程中dea的引數次數由9改為1的話,上面的macd值就退化成我們前一篇文章中所說的長短均線追逐了,當dif值大於0時,短週期上穿長週期,可以考慮買入,反之亦然。
通過分析,我們大體上可以瞭解MACD(12,26,9)的數學含義。您可以認為12,26是兩個較短週期的跟蹤方式。在預設引數的情況下,MACD值出現了穿越了0值時,不能100%的做為買入、賣出條件,但是可以成為上一章節所提的MA線追逐演算法降低交易次數的重要參考,情況如下圖所示:
由於MACD值是由均值差值計算所得,因此,即使K線走勢持平或者微弱上升,都會導致兩個均值的差值越來越小,MACD也可能會出現0值跳變。另外,高點或低點峰不能作為判定點,因為你無法預料後面是否還會出現峰值。
如果希望彌補MACD線的弱點,可以使用SAR指標加以共同判讀,關於SAR指標,且聽下回分解。
作者:科學家
Email:[email protected]
微信:43175692