大伙帮忙看看代码的问题在哪

大家好,我想记录macd金叉跟死叉之间的最高价的值,但是我写的这段代码,记录下来的值是错误的,大伙帮忙看看哪里出了问题,谢谢

Params

Numeric FastLength(12);

Numeric SlowLength(26);

Numeric MACDLength(9);

Vars

Series<Numeric> MACDDiff;

Series<Numeric> AvgMACD;

Series<Numeric> MACDValue;

Series<Bool> MAUP;

Series<Bool> MADOWN;

Series<Numeric> MKD;

Series<Numeric> MKK;

Series<Numeric> MAHIGH;

Series<Numeric> i;

Series<Numeric> MK;

Events

OnBar(ArrayRef<Integer> indexs)

{

MACDDiff = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ;

AvgMACD = XAverage(MACDDiff,MACDLength);

MACDValue = 2 * (MACDDiff - AvgMACD);

PlotNumeric("MACDDiff",MACDDiff);

PlotNumeric("MACDDEA",AvgMACD);

If (MACDValue >= 0)

PlotAuto("MACD",MACDValue,0,Red,Enum_Bar);

Else

PlotAuto("MACD",MACDValue,0,Green,Enum_Bar);

PlotNumeric("零线",0);

MAUP = CrossOver(MACDDiff,AvgMACD);

MADOWN = CrossUnder(MACDDiff,AvgMACD);

If(MAUP)

{

MKD = CurrentBar;

}

If(MADOWN)

{

MKK = CurrentBar;

}

For i = MKD To MKK

{

MAHIGH = Max(MAHIGH,High[i]);

}

If(MADOWN)

{

MAHIGH = 0;

}

Commentary("MAHIGH = " + Text(MAHIGH));

}

帮忙看看代码
请老师帮忙看看代码的错误
帮忙看看代码
帮忙看看我的对冲套利平仓条件有什么问题
请老师帮忙看下,代码问题出在哪里哦
请老师帮忙看看这个代码
帮忙看看这个代码是不是有问题?
编译时提示错误,错误号2002,帮忙看看是否有问题
求助贴 麻烦老师帮忙看看
请老师帮我看看这个错在哪里?

快速浏览一眼代码,然后简短说一下问题吧

这个算法设计的就有问题,不知道你自己有没有验算过

我举一个实例

打比方说,现在图表第30根bar发生金叉,按照你的算法逻辑,那就是mkd记录未29

然后第50根bar发生死叉,按照你的算法逻辑,mkk记录49

假设现在是第51根bar,按照你的for循环算法,循环变量i从29到49

执行的算法是,MAHIGH = Max(MAHIGH,High[i]);这里我就看不懂了

也就是你会比较从high[29]到high[49]这20根k线的最高价。这对吗?

你难道不是应该比较high[1]到high[21]这20根bar的最高价吗?

站在第51根bar来看,难道不是回溯21根的第30根bar是金叉,回溯1根的第50根bar是死叉吗?

怎么跑出来的29和49?这算法有仔细动脑想过吗??

但凡自己带一个实例进去看看也都知道算出来的不对吧?



代码分析建议投稿。


老兄,等到投稿回复,黄花菜都凉了😭

代码分析本来就是要花费很多精力和时间去处理,实在是忙不过来。

而且正常来说,代码诊断分析能力应该是要自己去养成的,要学会通过输出语句去打断点,做诊断,这些应该是自己要做的工作。

谢谢老师,已经搞清楚了