一、MACD详细的计算过程 第一步:设参数:α为平滑指数,N为变更,可通过窗口进行参数修改,分别为X和Y,默认为选取12和26天,则α默认为2/13和2/27。 第二步:EMA的算法:若Y=EMA(X,N),则Y=[2*X+(N-1)*Y’]/(N+1),其中Y’表示上一周期的Y值。 X是变量,天天的X值都不同,从远到近地标记,它们分别记为X1,X2,X3,….,Xn 假如N=1,则EMA(X,1)=[2*X1+(1-1)*Y’]/(1+1)=X1 假如N=2,则EMA(X,2)=[2*X2+(2-1)*Y’]/(2+1)=(2/3)*X2+(1/3)X1 假如N=3,则EMA(X,3)=[2*X3+(3-1)*Y’]/(3+1)=[2*X3+2*((2/3)*X2+(1/3)*X1)]/4=(1/2)*X3+(1/3)*X2+(1/6)*X1=3/6*X3+2/6*X2+1/6*X1 假如N=4,则EMA(X,4)=[2*X4+(4-1)*Y’]/(4+1)=2/5*X4+3/5*((1/2)*X3+(1/3)*X2+(1/6)*X1)=4/10*X4+3/10*X3+2/10*X2+1/10*X1 =2/5*X4+3/10*X3+3/15*X2+3/30*X1 假如N=5,则EMA(X,5)=2/(5+1)*X5+(5-1)/(5+1)(2/5*X4+3/10*X3+3/15*X2+3/30*X1) =(1/3)*X5+(4/15)*X4+(3/15)*X3+(2/15)*X2+(1/15)*X1=5/15*X5+4/15*X4+3/15*X3+2/15*X2+1/15*X1 …………循环下往吧:)第三步:通过以上算法算出EMAX和EMAY,要求默认为12,26,但其参数可以自行调节。 第四步:计算 MACD.DIF=EMAX-EMAY 。 第五步:计算 MACD.DEA=EMA(MACD.DIF,Z),Z值默认为9,但实际可以自行调节。 第六步:计算MACD.MACD=(MACD.DIF-MACD.DEA)*2 相关参数资料 1、http:///how-to-calculate-ema-in-excel/中的 Set EMAChart = ActiveSheet.ChartObjects.Add(Left:=Range("a12").Left, Width:=500, Top:=Range("a12").Top, Height:=300)With EMAChart.Chart .Parent.Name = "EMA Chart" With .SeriesCollection.NewSeries .ChartType = xlLine .Values = Sheets("data").Range("e2:e" & numRows) .XValues = Sheets("data").Range("a2:a" & numRows) .Format.Line.Weight = 1 .Name = "Price" End With With .SeriesCollection.NewSeries .ChartType = xlLine .AxisGroup = xlPrimary .Values = Sheets("data").Range("h2:h" & numRows) .Name = "EMA" .Border.ColorIndex = 1 .Format.Line.Weight = 1 End With .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Price" .Axes(xlValue, xlPrimary).MaximumScale = WorksheetFunction.Max(Sheets("Data").Range("e2:e" & numRows)) .Axes(xlValue, xlPrimary).MinimumScale = Int(WorksheetFunction.Min(Sheets("Data").Range("e2:e" & numRows))) .Legend.Position = xlLegendPositionRight .SetElement (msoElementChartTitleAboveChart) .ChartTitle.Text = "Close Price & " & EMAWindow & "-Day EMA" End With 谢谢。 |
|