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

//------------------------------------------------------------------------

// 简称: 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; // 清除标记,等待下一次死叉

           }

       }

   }

//------------------------------------------------------------------------


双均线策略
双均线平仓问题
“把双均线策略改写成A函数报单”的意义是什么呢?
双均线参数优化
双均线系统设置止损报错
求助双均线止盈止损策略
使用帮助文档中的示例双均线交易策略报错
均线策略
双均线交易5日破10线
双均线策略自动下单问题

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

谢谢您,解决啦!