期貨軟體TB系統原始碼解讀系列56-DMA

DMA即差離移動平均,算法很簡單,就是用短週期均線減去長週期均線,得到一個值,再把這個值按週期算一個新的均值。

源代碼及解讀如下:

Params

Numeric FastLength(10 );//聲明數值參數FastLength,初值10.//

Numeric SlowLength(50 );//聲明數值參數SlowLength,初值50.//

Numeric SmoothLength(10);//聲明數值參數SmoothLength,初值10.//

Vars

NumericSeries DMAValue;//聲明數值序列變量DMAValue。//

Numeric AvgDMA;//聲明數值變量AvgDMA。//

Begin

DMAValue =(AverageFC(Close, FastLength) - AverageFC(Close,SlowLength));//這裡算短週期與長週期的均線,兩個一相減,即可得到變量DMAValue值了。//

AvgDMA = AverageFC(DMAValue,SmoothLength); //把求得的變量DMAValue值與週期10帶回求均值函數,即可求得變量AvgDMA值了。//

PlotNumeric("DMA",DMAValue); //畫線DMA,值為DMAValue。//

PlotNumeric("DMA Average",AvgDMA); //畫線DMA Average,值為AvgDMA。//

PlotNumeric("Ref",0);//畫零線。//

End

期貨軟件TB系統源代碼解讀系列56-DMA

寫成簡單的程序化系統,跟雙均線差不多了,代碼及結果如下:

Params

Numeric FastLength(10 );

Numeric SlowLength(50 );

Numeric SmoothLength(10);

Numeric DslowLength(200);

Vars

NumericSeries DMAValue;

NumericSeries AvgDMA;

NumericSeries AvgValue3;

Begin

DMAValue =(AverageFC(Close, FastLength) - AverageFC(Close,SlowLength));

AvgDMA = AverageFC(DMAValue,SmoothLength);

AvgValue3 = AverageFC(Close,DslowLength);

PlotNumeric("MA3",AvgValue3);

If(MarketPosition <>1 And DMAValue[1]>AvgDMA[1] && High >= AvgValue3[1])

{

Buy(1,Max(Open , AvgValue3 ));

}

If(MarketPosition ==1 && DMAValue[1] < AvgDMA[1])

{

Sell(1,Open);

}

If(MarketPosition <> -1 And DMAValue[1]

{

SellShort(1,Min(Open , AvgValue3 ));

}

If(MarketPosition ==-1 && DMAValue[1] > AvgDMA[1])

{

BuyToCover(1,open);

}

End

期貨軟件TB系統源代碼解讀系列56-DMA


分享到:


相關文章: