改写WLD中自带的MACD指标时碰到的奇怪问题,求高手们帮忙

Discussion in 'Wealth-Lab Developer' started by wuxiao, Feb 2, 2006.

  1. 因为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;
     
  2. 自己先顶一下,不知道什么时候才有人能看见这个帖子。。。。。 :(
     
  3. 难道真的没有人关注吗?苦闷 :(
     
  4. 这是自己写的一个传统的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);
     
  5. 谢谢战神觉者, :) 我也找到了一个替代的方法,可是没有你的简单,看来还得多看函数库了。。。。。。 :oops: