首页 > 解决方案 > 如何在 for 循环中填充动态二维数组

问题描述

这对许多人来说似乎微不足道,但它似乎让我变得更好,因为我无法弄清楚如何使用ArrayResize()(我认为这是非常必要的)来解决这个问题。

在下面的代码中,我想填充ar[][2]when isBodyis true。我怎样才能做到这一点。

int ar[][2];

void CheckBody()   {

   for (int i = 20; i >= 0; i--) {
   
      if (isBody) {
         int a = i + 1;
         int b = i - 3*i;
         
         // how to populate ar with [a,b] when isBody is true in this block
         
      }
   }
}

标签: algorithmic-tradingmql5metatrader5

解决方案


尝试以下代码,它被编程为作为 EA 运行,但如果在指标中使用,则可以轻松修改(您必须为isBody变量添加代码)。

#property strict

int ar[][2];

//+------------------------------------------------------------------+
//| Initialization function of the expert                            |
//+------------------------------------------------------------------+
int OnInit()
{
   ArrayInitialize(ar,NULL);
   ArrayResize(ar,1);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Deinitialization function of the expert                          |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{

}
//+------------------------------------------------------------------+
//| "Tick" event handler function                                    |
//+------------------------------------------------------------------+
void OnTick()
{
   for(int i=20; i>=0; i--)
   {
      if(isBody)
      {
         if(ar[0][0]!=NULL) ArrayResize(ar,ArrayRange(ar,0)+1);
         int a=i+1;
         int b=i-3*i;
         ar[ArrayRange(ar,0)-1][0]=a; ar[ArrayRange(ar,0)-1][1]=b;
      }
   }
}

推荐阅读