各位大佬好,我萌新一枚, 有个问题想请教下,我在学习线上答疑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);
}
http://www.tbquant.net/fun/849.html
更多的需求,建议通过帮助中心的文献资料自行查阅
要学会自学哦
好的,谢谢
把value分城两组数据,0上一组,0下一组,不同的组别用不同的line对象去画图
谢谢老师,老师,还有个小问题,请问如果我想将图中的macdvalue值显示为柱状,而不是线段,有没有办法在代码中直接固定为柱状,每次调试后可以在公式设置中改为柱状,但比较麻烦,每次更新都必须重新换一次。另外我尝试用系统的MACD指标plotanto替换也不行, 请教老师我该怎么写