2013年10月12日 星期六

Adaptive Moving Average Filter 交易系統

    上一篇介紹完了AMA指標後,這篇來介紹一個使用AMA發展出的一個簡易交易系統Adaptive Moving Average Filter Trade System

    這個交易策略主要概念,使用AMA均線變動的方向判斷多空趨勢方向,為Trend Following的策略。



    然而在盤整盤無明顯趨勢時,AMA均線的變動方向也會跟著快速反覆的變動,造成反覆過多無效的進場。因此這個策略使用了一個濾網AMAF,來判斷AMA變動方向改變時,何時才是有效的的轉折。


AMA Filter Function程式碼:
//AMAF:Adaptive Moving Average Fltr
Inputs: Period(Numeric), Pcnt(Numeric),LengthF(Numeric),LengthS(Numeric); 
Vars: Noise(0), Signal(0), Diff(0), efRatio(0), Smooth(1), Fastest(2/(LengthF+1)  ),Slowest( 2/(LengthS+1) ), AdaptMA(0), AMAFltr(0);

Diff = AbsValue(Close - Close[1]);

IF CurrentBar <= Period Then AdaptMA = Close;

IF CurrentBar > Period Then Begin
       Signal = AbsValue(Close - Close[Period]);
       Noise = Summation(Diff, Period);
      
       if Noise <> 0 then
              efRatio = Signal / Noise;
             
       Smooth = Power(efRatio * (Fastest - Slowest) + Slowest, 2);
       AdaptMA = AdaptMA[1] + Smooth * (Close - AdaptMA[1]);
       AMAFltr = StdDev(AdaptMA-AdaptMA[1], Period) * Pcnt;
End;

AMAF = AMAFltr;


AMAF計算方式如下,計算AMA與前一根AMA[1]的差值,並取其Period內的標準差,並乘上一個常數Pcnt


AMAFltr = StdDev(AdaptMA-AdaptMA[1], Period) * Pcnt;



AMA Filter Trade System原始策略程式碼:
//Type: System, Name: Adaptive Moving Average Fltr System
Inputs: Period(10), Pcnt(.15),LengthF(2),LengthS(50);
Vars: AMAVal(0), AMAFVal(0), AMALs(0), AMAHs(0);

AMAVal = AMA(Period,LengthF,LengthS);
AMAFVAl = AMAF(Period, Pcnt,LengthF,LengthS);

IF CurrentBar = 1 Then Begin
       AMALs = AMAVal;
       AMAHs = AMAVal;
End Else Begin
       IF AMAVal < AMAVal[1] Then
              AMALs = AMAVal;
       IF AMAVal > AMAVal[1] Then
              AMAHs = AMAVal;
      
IF AMAVal - AMALs Crosses Above AMAFVal Then
       Buy This Bar on Close;
IF AMAHs - AMAVal Crosses Above AMAFVal Then
       Sellshort This Bar on Close;
      
End;

原始策略只有進場沒有出場條件,因此為永遠持倉多空對翻的策略

價格上漲時AMAAMALs (AMA的相對低點)的差值超過了AMAF,表示有效的往上轉折,進場作多

價格下跌時,當AMAAMAHs (AMA的相對高點)的差值超過了AMAF,表示有效的往下轉折進場放空



AMA Filter Trade System台指期回測
以下我將這個原始策略進行了簡單修改,針對台指期進行了回測
AMA參數使用Inputs: Period(10), Pcnt(.25),LengthF(2),LengthS(30);

  • 回測商品:台指期TXF1
  • 回測時間:2000/01/01~2013/10/11
  • 回測手續費:單口來回1,000
  • 回測軟體: Multichart
  • 回測週期:60 K


平倉權益曲線


策略績效結果

年週期分析





















近期進出場狀況



從回測結果看來,為績效普通的波段策略,但是近期內仍有創高能力。


1 則留言: