双均线策略修改后为啥不能开仓呢?

//------------------------------------------------------------------------// 简称: DualMA// 名称: 双均线交易系统// 类别: 策略应用// 类型: 内建应用//------------------------------------------------------------------------Params Numeric FastLength(5); // 短期指数平均线参数 Numeric SlowLength(10); // 长期指数平均线参数Vars Series<Numeric> AvgValue1; Series<Numeric> AvgValue2; Bool bGoldenCross(false); // 标记是否出现完全金叉 Bool bDeathCross(false); // 标记是否出现完全死叉 Integer crossCount(0); // 用来记录从金叉/死叉到现在的天数 Events OnBar(ArrayRef<Integer> indexs) { AvgValue1 = AverageFC(Close, FastLength); AvgValue2 = AverageFC(Close, SlowLength); PlotNumeric("MA1", AvgValue1); PlotNumeric("MA2", AvgValue2); // 判断是否发生金叉或死叉 if (AvgValue1[1] > AvgValue2[1] && AvgValue1[2] <= AvgValue2[2]) { bGoldenCross = true; bDeathCross = false; crossCount = 0; } else if (AvgValue1[1] < AvgValue2[1] && AvgValue1[2] >= AvgValue2[2]) { bDeathCross = true; bGoldenCross = false; crossCount = 0; } // 如果是金叉,开始计数 if (bGoldenCross) { crossCount=crossCount+1; // 检查是否达到完全金叉条件 if (crossCount >= 4) { if (MarketPosition <> 1) { Buy(0, Open); } bGoldenCross = false; // 清除标记,等待下一次金叉 } } // 如果是死叉,开始计数 if (bDeathCross) { crossCount=crossCount+1; // 检查是否达到完全死叉条件 if (crossCount >= 4) { if (MarketPosition <> -1) { SellShort(0, Open); } bDeathCross = false; // 清除标记,等待下一次死叉 } } }//------------------------------------------------------------------------

你这是在进行定义变量时出的错误,你定义的是普通变量,程序每运行一次,都会对普通变量重新分配内存,进行初始化操作,所以普通变量无法保存上一个Bar中程序运行的结果。你需要定义成序列或者全局变量。

回复:谢谢您,解决啦!