因为WLD自带的MACD指标里面只能画一条线,MACDEx也是只能划一条线,所以我想自己编一个画两条线的,可以画DIF和MACD,然后计算两个的差值好画柱状图,DEBUG的时候发现,计算出来的MACD值最后居然趋近于零!!但是计算出来的DIF值是正常的,真是苦闷了,不知道是哪里出了问题,请各位高手帮忙看看。 红色字体的代码,我想可能是问题的所在,但是我不知道哪里出了问题,有疑问的话,我会尽量解释。谢谢各位了 var MACDValue : float; var MACDValueSerie : integer; var DIFValue : float; var DIFSerie : integer; var Value : float; var ValueSerie : integer; var Bar : integer; const Period1 = 10; const Period2 = 40; const Period3 = 20; DIFSerie := CreateSeries; ValueSerie := CreateSeries; MACDValueSerie := CreateSeries; for Bar :=Round(Max(Period1, Period2)) to Round(Max(Period1, Period2))+Period3 do Begin DIFValue := EMA( Bar, #Close, Period1 ) - EMA( Bar, #Close, Period2 ); SetSeriesValue( Bar, DIFSerie, DIFValue); end; for Bar := Round(Max(Period1, Period2))+Period3+1 to BarCount - 1 do Begin DIFValue := EMA( Bar, #Close, Period1 ) - EMA( Bar, #Close, Period2 ); SetSeriesValue( Bar, DIFSerie, DIFValue); MACDValue := EMA( Bar, DIFSerie, Period3); SetSeriesValue( Bar, MACDValueSerie, MACDValue); Value := DIFValue - MACDValue; SetSeriesValue( Bar, ValueSerie, Value); end;
这是自己写的一个传统的MACD指标,可供参考: var DIF,DEA ,MACDPane : integer; MACDPane := CreatePane( 100, true, true ); DIF := SubtractSeries( EMASeries( #Close ,12),EMASeries( #Close ,26)); DEA := EMASeries( DIF ,9); PlotSeries(DIF, MACDPane, #Black, #Thin ); PlotSeries(DEA, MACDPane, #Black, #Thin ); PlotSeries( SubtractSeries( DIF, DEA),MACDPane, 500,#Histogram);