划线错误(图中白色均线位置感觉不对,是哪里出错了?请老师看看)

//------------------------------------------------------------------------Params Numeric FastLengthMA(20);// 短期指数平均线参数 //Numeric SlowLengthMA(20);// 长期指数平均线参数 Numeric FastLength(12); Numeric SlowLength(26); Numeric MACDLength(9);Vars Series<Numeric> AvgValue1; Series<Numeric> AvgValue2; Series<Numeric> MACDDiff; Series<Numeric> AvgMACD; Series<Numeric> MACDValue; Series<Numeric> Fast_ma; Series<Numeric> Slow_ma; Plot pen1; Plot pen2; Events OnReady() { SetBackBarMaxCount(1+Max(FastLength,SlowLength)); Range[0:DataSourceSize() - 1] { setPlotOption("MA1", "begin-bar", FastLengthMA); //setPlotOption("MA2", "begin-bar", SlowLengthMA); setPlotOption("MACDDiff", "begin-bar", SlowLength); setPlotOption("MACDDEA", "begin-bar", SlowLength + MACDLength); setPlotOption("MACD", "begin-bar", SlowLength + MACDLength); } pen2.figure(0); //开个副图 } OnBar(ArrayRef<Integer> indexs) { AvgValue1 = AverageFC(Close,FastLengthMA); // AvgValue2 = AverageFC(Close,SlowLengthMA); PlotNumeric("MA1",AvgValue1); // PlotNumeric("MA2",AvgValue2); { If(CurrentBar==0) {Fast_ma=Close; Slow_ma=Close; MACDDiff=Fast_ma-Slow_ma; AvgMACD=MACDDiff; } Else { Fast_ma=Fast_ma[1]+(Close-Fast_ma[1])*2/(FastLength+1); Slow_ma=Slow_ma[1]+(Close-Slow_ma[1])*2/(SlowLength+1); MACDDiff=Fast_ma-Slow_ma; AvgMACD=AvgMACD[1]+(MACDDiff-AvgMACD[1])*2/(MACDLength+1); AvgMACD=AvgMACD[1]+(Fast_ma-Slow_ma-AvgMACD[1])*2/(MACDLength+1); } pen2.line("MACDDiff",date+time,MACDDiff);//画出MACD的两条均线 pen2.Line("macddea",date+time,AvgMACD); Numeric X; X=((FastLength+1)*(SlowLength+1)*((AvgMACD[1]*(MACDLength+1)-2*(AvgMACD[1]))/(MACDLength-1)-Fast_ma[1]+Slow_ma[1])/2+(SlowLength+1)*Fast_ma[1]-(FastLength+1)*Slow_ma[1])/(SlowLength-FastLength); pen1.line("X",X); MACDValue = MACDDiff - AvgMACD;

pen1.line("X",X); 既然你画的是X,那么就验算X的值

这两个参数你确定对的么?

回复:分开的,一个是用来计算均线的,一个是用来计算MACD的

回复:你是不是想反算macd指标的金叉死叉点?老师有搞过公式 你可以看看跟你有什么不一样 https://www.bilibili.com/video/BV1K34y1A7Lq?spm_id_from=333.788.videopod.sections&vd_source=0f5409c4d9c360588dbae5f07a75e860

回复:楼主代码我没看懂正在学习中如果是你说的反算其实换个思路没必要的自己弄个序列变量正算非常简单

回复:老刘只是举个栗子其实方案有正反两个

回复:啊?正反两个是什么意思?反算的意思是 算当close价格在什么点位的时候,计算出的macd柱==0直接的思路就是把公式写出来,用代数的方式做还有其他思路,对吗?

回复:当然你琢磨一下

回复:你的意思是实时用boll判断macd==0?那在图表交易中 buy sell 命令 就不能用到固定的价格了哦好像也可以 ,macd==0的 时候, 把价格取出来是这个意思吗

回复:第一,你给的代码不全,没办法复现。第二,你觉得图中白线画的不对是吧?那为什么不自己演算一下呢?线上每一个点的值都是可以显示或者commentary输出的,看看你的计算表达式到底哪一步算错了