技術分析往往離不開均線系統,她是我們觀察價格走勢的基礎。www.emoneybtc.com
短期均線貼近價格走勢,靈敏度高,但會有很多噪聲,產生虛假信號;長期均線在判斷趨勢上一般比較准確,但是長期均線有著嚴重滯後的問題。我們想得到這樣的均線,當價格沿一個方向快速移動時,短期的移動平均線是最合適的;當價格在橫盤的過程中,長期移動平均線是合適的。
為了達成以上目的,我們來看看Kaufman的自適應均線系統,下面是算法:
步驟1:價格方向價格方向被表示為整個時間段中的淨價格變化。比如,使用n天的間隔(或n小時):
direction = price – price[n];
其中,direction是當前價格差或方向數值,price是當前價格(當日收盤價或小時收盤價),price[n]是n日前的收盤價(或n個周期前)。
步驟2:波動性波動性是市場噪音的總數量,它可以用許多不同的方法定義,但是這個計算使用了所有“日到日”或“小時到小時”的價格變化的總和(每一個都作為一個正數),在同樣的n個周期上。
如下表達:
volatility = @sum(@abs(price – price[1]), n);
其中,volatility是指波動性數值,@abs是絕對值函數,@sum(value, n)是n個周期中的數值之和函數。
步驟3:效率系數(ER)以上兩個成分被組合起來,以表達方向移動對噪音之比,稱之為效率系數,ER:
Efficiency_Ratio = direction/volativity;
用“方向性”除以“噪音”,該系數的值就從0到1 變化。當市場在全部n日以同一方向移動時,則方向=波動性,效率系數=1。如果波動對於同樣的價格移動是增加了,“波動性”就變得較大並且ER往小於1的方向移動。如果價格不變化,則方向=0,ER=0。
這個結果作為一個指數式平滑系數是方便的,它每天改變趨勢線的一個百分比,ER=1就等效於100%,對應最快的移動平均線,它應當能有效工作,因為價格在一個方向上移動而沒有回撤。當ER=0時,一個非常慢的移動平均值是最好的,可以在市場趨勢不明時避免貿然止損離場。
步驟4:變換上述系數為趨勢速度為了應用於一個指數式移動平均值,比率將被變換為一個平滑系數c,依靠下面的公式,每天的均線速度可以簡單地用改變平滑系數來改變,成為自適應性的。該公式如下:
EXPMA = EXPMA[1] + c(price – EXPMA[1]);
測試表明,平方平滑系數的數值大大地改進了結果,這是依靠在一個橫盤的市場中阻止了趨勢線的移動。在橫盤的市場中這個過程選擇了非常慢的趨勢,而在高度趨勢化的周期中加速至非常快的趨勢(但不是100%)。這個平滑系數是:
fastest = 2/(N+1) = 2/(2+1) = 0.6667;
slowest = 2/(N+1) = 2/(30+1) = 0.0645;
smooth = ER(fastest - slowest) + slowest;
c = smoothsmooth;
平方平滑系數迫使c的數值趨向於零。這意味著較慢的移動平均線將比快速移動平均值用得更多。這和在出現不確定狀況時你就更加保守是一樣的道理。
AMA = AMA[1] + c(price – AMA[1]);
自調節式過濾器設計為了與系統的自適應特性相一致,當價格波動變得更多或更少時,過濾器也要相應取較大或較小值。為了完成這點,過濾器被定義為AMA變化的一個小的百分數:
過濾器 = percentage@std(AMA-AMA[1], n);
其中,@std(series, n)是價格系列n個周期的標准差。
最小的過濾器百分數0.1可被用於較快的交易,而較大的百分數1.0將可以選擇出更有意義的價格移動的交易。典型例證是:外匯和期貨市場交易較快,股票和利率市場交易較慢。通常,過濾器大小是依據20天周期的數據來計算。
向交易規則中添加過濾器:當AMA - @lowest(AMA, n) > 過濾器,買入;
當@highest(AMA, n) – AMA > 過濾器,賣出。
根據以上規則,構建文華策略:DIRECTION:=CLOSE-REF(CLOSE,10);
VOLATILITY:=SUM(ABS((CLOSE-REF(CLOSE,1))),10);
ER:=ABS(DIRECTION/VOLATILITY);
FASTSC:=2/(2+1);
SLOWSC:=2/(30+1);
SSC:=ER(FASTSC-SLOWSC)+SLOWSC;
CONSTANT:=SSCSSC;
AMA:EMA(DMA(CLOSE,CONSTANT),2),COLORGREEN;
FIL:=STD(AMA-REF(AMA,1),20);
PARTLINE(AMA-LLV(AMA,3)>FIL0.1,AMA,COLORMAGENTA);