一个简单策略,调用Close[1]实效,跪求高手老师指导。。。。

//------------------------------------------------------------------------// //------------------------------------------------------------------------Params Numeric MALength(20); // 指数平均线参数 Numeric RollBackTh(0.01); //回撤比例阈值 Vars Series<Numeric> AvgValue1; //均线 Numeric ExtrValue(100); //极值 Numeric Rollback(0); //回撤比例Events OnReady() { SetBackBarMaxCount(1 + MALength); //获取足够的BAR } OnBar(ArrayRef<Integer> indexs) { AvgValue1 = AverageFC(Close,MALength); //计算均线 PlotNumeric(\"MA1\",AvgValue1); //绘制均线 If(MarketPosition == 0 && Close[1] > AvgValue1[1] && Close[1] > Close[2]) //无持仓,且收盘价位于均线上,上涨 { Buy(0,Open); //开多单 } If(MarketPosition == 1) //持有多单 { If(ExtrValue < Close[1]) //极值小于上一个BAR的收盘价 { ExtrValue = Close[1]; //更新极值 }Else { Rollback = (ExtrValue-Close[1])/ExtrValue; //计算上一个BAR的收盘价相比极值的回撤比例 If(Rollback > RollBackTh) //回撤比例超过阈值 { Sell(0,Open); //平掉多单 ExtrValue = 0; //极值归零 } } } }//------------------------------------------------------------------------// 编译版本 2024.02.21 V1.0// 版权所有 // 更改声明 //------------------------------------------------------------------------问题描述:1.以上为策略全部代码;2.代码执行到 Rollback = (ExtrValue-Close[1])/ExtrValue; //计算上一个BAR的收盘价相比极值的回撤比例 If(Rollback > RollBackTh) //回撤比例超过阈值出现问题“Rollback = (ExtrValue-Close[1])/ExtrValue;”这代码的具体问题是Close[1]调用失败,该行代码不执行,若把Close[1]替换某个常数比如3000,则可以执行;“ If(Rollback > RollBackTh)”这代码的具体问题是RollBackTh调用失败,若把RollBackTh替换某个常数比如0.01,则可以执行;请老师帮忙排查分析一下问题出在哪里?跪谢。。。。。。

已解决,是数组赋值的问题。

逻辑问题烦请老师明示,自己感觉查不出问题了。。。。

若把Close[1]替换某个常数比如3000,则可以执行;

回复:你觉得这个else分支照你现在的逻辑会有可能发生执行吗?

回复:逻辑问题烦请老师明示,自己感觉查不出问题了。。。。

你是怎么知道Close[1]调用失败了