1. 程式人生 > >高頻交易演算法研發心得--均線演算法

高頻交易演算法研發心得--均線演算法

今天來探討一下常見的均線演算法的應用。在各種交易軟體中,我們常常可以見到MA指標,EMA指標以及SMA指標。

首先說明SMA的二義性,如果您在百度直接搜尋SMA指標,指的是帶加權的指數平均值;然而,再去查詢“簡單移動平均線”百度給出的縮寫又是SMA。因此,為了明確,科學,本文采用了“維基百科”的說法,其解釋如下:

MA:又稱移動平均線簡稱均線,移動平均可撫平短期波動,反映出長期趨勢或週期。數學上,移動平均可視為一種卷積以筆者的理解,可以認為,MA只是一種類似曲線的統稱。

SMA簡單移動平均Simple Moving AverageSMA)是連續N天的算術平均值。該指標也就大家在常見的軟體中見到的MA

值。

EMA指數移動平均Exponential Moving AverageEMAEWMA)是以指數式遞減加權的移動平均。各數值的加權影響力隨時間而指數式遞減,越近期的資料加權影響力越重,但較舊的資料也給予一定的加權值。以筆者的理解,該指標定義與常見軟體中所指的EMA相同。其影象特點如下:

    WMA加權移動平均Weighted Moving AverageWMA)指計算平均值時將個別資料以不同數值,在技術分析中,nWMA的最近期一個數值乘以n、次近的乘以n-1,如此類推,一直到0。該指標的影象如下所示:

通過對比EMA和WMA的影象,不難發現,EMA隨著時間的發展,其衰減比較明顯,可以較為靈敏的反映趨勢的變化。因此,在常見的軟體中,會比較多的使用SMA(MA)和EMA。

咱們書歸正文,說了上面一堆難以理解的概念,下面聊聊這些指標的應用以及問題所在。

我們經常會在電視裡和網路上看到民間所謂之“均線金叉”以及“均線死叉”。其圖如下(短週期線:EMA21,長週期線MA50):

數學解析如下:

當短週期均線下穿長週期線的時候,說明整體趨勢正在下降,可以賣出。

當短週期均線上穿長週期線的時候,說明整體趨勢正在上長,可以買入。

從上圖中,觀者不難發現,短週期均線採用的是EMA線,原因是EMA演算法本身會導致越接近當前時間的EMA值,衰減越厲害,這樣可以保證其值越接近真實值,但又不能達到其真實值(看官:微積分中所說的極限)。

然而長週期均線採用的卻是

MA線,原因是SMA值是採用算術平均值得到的,沒有任何加權,這樣可以保障長線不受小的K線波動影響,並且可以持續變化。

可以說利用長短均線相互追逐的買賣判定方法,在大多數情況下是適用的,而且也是金融交易中比較常用的演算法。但在某些情況下,此法可以會導致您多次小額度賠錢的!情況如下圖所示:

通過上圖,看官不難發現,當前K線在短時間內出現了類似正弦曲線的波動時,短週期均線和長週期均線會頻繁的相互交差,在這種情況下,基本上每次都會陪點錢,因為MA演算法都是事後諸葛亮,所以出現了這種情況,要麼立刻停止交易,要麼找到一些短週期指標加以判讀,以減小交易次數。那麼需要採用什麼樣的指標,如何控制呢?且聽下回分解。。。

備註:無論是哪種MA線,在週期比較的長的情況下,都會變得比較圓滑,這樣就為軟體自動判定該曲線是否出現極值點,提供了可操作性。其演算法很簡單,如下所示:(C#

double[] data = new double[100];

//原理是極值點兩邊的斜率相乘小於0

if ((data[i]-data[i-1])*(data[i+1]-data[i])<0)

{

    //出現極值點

}

                                                    作者:科學家

                                                    Email[email protected]

                                                    微信:43175692