策略不循环

程序循环一次后就不再继续循环,麻烦老师给改一下,先给解决这个问题,程序后续还会加入委托撤单的条件。

Params

   Numeric Length1(5);

   Numeric Length2(90);

   Numeric jiaoyishoushu(1); //建仓数量

   Numeric WinStopLength(2);  //平仓跳数

   

Vars

   Global Integer sendCount(0); //变量

   Global Integer fillCount(0); //变量

   Numeric mairuPrice;        //多单开仓价

   Numeric WinStopPrice;        //多单平仓价

   

   Series<Numeric> EMAValue1;

   Series<Numeric> DbEMAValue1;

   Series<Numeric> TEMAValue1;

   

   Series<Numeric> EMAValue2;

   Series<Numeric> DbEMAValue2;

   Series<Numeric> TEMAValue2;  

   

Events

   OnReady()

   {

       //根据操作源订阅委托

       Bool ret = A_SubscribeTradeByCreateSource(A_GetOrderCreateSource);

       Print("A_SubscribeTradeByCreateSource:" + IIFString(ret, "True", "False"));

   }

 

   OnBar(ArrayRef<Integer> indexs)

   {

        //计算三重平滑均线

       Range[0:DataSourceSize() - 1]

       {

           EMAValue1 = XAverage(Close,Length1);

           DbEMAValue1 = XAverage(EMAValue1,Length1);

           TEMAValue1 = XAverage(DbEMAValue1,Length1);

           

           EMAValue2 = XAverage(Close,Length2);

           DbEMAValue2 = XAverage(EMAValue2,Length2);

           TEMAValue2 = XAverage(DbEMAValue2,Length2);            

           

           PlotNumeric("EMA1",TEMAValue1);

           PlotNumeric("EMA2",TEMAValue2);

                   

       }

       

       if(BarStatus == 2 && sendCount == 0 && Q_Last > TEMAValue1 ) //如果(当前bar为最后一根bar & 变量sendCount = 0 && 最新价 > 均线1 )

       {

           

           //发开仓单

           mairuPrice = TEMAValue1 - (WinStopLength*MinMove*PriceScale);

           Array<Integer> orders; //整数型变量名称

           //账户下单操作

           Bool ret = A_SendOrderEx(Enum_Buy, Enum_Entry, jiaoyishoushu, mairuPrice, orders, "", A_GetOrderCreateSource); //布尔型变量ret=账户下单(买入,开仓,1手,最新买盘价格,变量名称,将数组转为字符串,获取报单源名称

           Print("Buy,A_SendOrderEx:" + IIFString(ret, "True", "False") + "," + TextArray(orders)); //提示信息(多头建仓是否成功)

          if(ret)

           {

               sendCount = sendCount + 1;

           }


       }

       if(BarStatus == 2 && sendCount > 0 && sendCount <= fillCount ) //如果(当前bar为最后一根bar && 变量sendCount > 0 && 变量sendCount <= 变量fillCount)

       {//发平仓单

           WinStopPrice = TEMAValue1 + (WinStopLength*MinMove*PriceScale);

           Array<Integer> orders;

           //账户下单操作

           Bool ret = A_SendOrderEx(Enum_Sell, Enum_Exit, jiaoyishoushu,  WinStopPrice, orders, "", A_GetOrderCreateSource); //布尔型变量ret=账户下单(卖出,平仓,1手,最新卖盘价格,变量名称,将数组转为字符串,获取报单源名称

           Print("Sell,A_SendOrderEx:" + IIFString(ret, "True", "False") + "," + TextArray(orders)); //提示信息(多头平仓是否成功)

           sendCount = -1;

       }

   }


   OnFill(FillRef ordFill)

   {

       fillCount = fillCount + 1;

       Print("fillCount:" + Text(fillCount));

   }



for循环问题
for循环的问题
关于退出for循环的问题
循环语句
for 循环怎么写Break?
让交易循环起来
循环里,怎么把序列函数放在循环外,而不会触发警告?
策略交易不产生开仓信号
循环BUG,求解答
循环中使用索引函数

完整模型结构分析,要么付费代写业务,要么看置顶直播投稿