主图副图同步显示请教怎么让macd的值做到零线上为红,零线下为空

各位大佬好,我萌新一枚, 有个问题想请教下,我在学习线上答疑20220127视频时,尝试跟着视频操作,将macd代码一齐写入副图和主图指标同步显示,大问题基本没有,就是有个小问题。正常MACD的值会在零线上变红,零线下变绿。我尝试按照系统写的macd指标,按照这思路加入if macdvalue >0 和 if macdvalue < 0 ,来赋值macdvalue不同颜色。但最终都只有一种颜色。

如图所示,我按照教学视频做出的其他指标都没有问题,就是macd值无论零线上下都是只有一种颜色

这是我按照视频写的代码,中间macd值加入if判断的部分删除了,无论加与否颜色都是只有一种,就是这里想请教,怎么才能做到和系统一样的效果,macdvalue值零线上为红,零线下为绿

系统提供的macd指标:

这是我写的原代码,请大佬们指教,谢谢

Vars

    Series<Numeric> MACDDiff; 
    series<Numeric> AvgMACD;
    series<Numeric> MACDValue;

    Numeric FastLength(12);
    Numeric SlowLength(26);
    Numeric MACDLength(9);

////////////画板设置    
    Plot plot_mydata;
    Numeric xData;//x轴数据集

 

Events
OnInit()
{
    SubscribeBar("OI888.CZCE","5m",20220104);
    //SubscribeBar("OI888.CZCE","15m",20200104);
    plot_mydata.figure(0);
    plot_mydata.setOption("result","x-format","time");
    plot_mydata.setOption("MACDDiff","color",red);
    plot_mydata.setOption("MACDValue","color",Yellow); 
    plot_mydata.setOption("AvgMACD","color",Green);
    plot_mydata.setOption("零线","color",White);
}

OnBar(ArrayRef<Integer> indexs)
{
    
        MACDDiff = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;    
        AvgMACD = XAverage(MACDDiff,MACDLength);
        MACDValue = MACDDiff - AvgMACD;
        //Commentary("macdvalue"+ text(MACDVALUE));
        ma = AverageFC(close,n);
        PlotNumeric ("ma",ma);
        golden = CrossOver(MACDDiff,AvgMACD);
        ending = CrossUnder(MACDDiff,AvgMACD);
        
        xData = date + time;
        plot_mydata.line("MACDDiff",xData,MACDDiff);
        plot_mydata.line("AvgMACD",xData,AvgMACD);
        plot_mydata.line("零线",xData,0);
        plot_mydata.line("MACDValue",xData,MACDValue); 

}

评论区
202****6181726058

好的,谢谢

2022-02-16 15:33
202****6181726058

谢谢老师,老师,还有个小问题,请问如果我想将图中的macdvalue值显示为柱状,而不是线段,有没有办法在代码中直接固定为柱状,每次调试后可以在公式设置中改为柱状,但比较麻烦,每次更新都必须重新换一次。另外我尝试用系统的MACD指标plotanto替换也不行, 请教老师我该怎么写

2022-02-16 15:13
顶部