Descargar MetaTrader 5

ArraySwap

Intercambia el contenido de dos matrices dinámicas del mismo tipo. Para las matrices multidimensionales, deberá coincidir el número de elementos en todas las dimensiones, excepto la primera.

bool  ArraySwap(
   void&  array1[],      // primera matriz
   void&  array2[]       // segunda matriz
   );

Parámetros

array1[]

[in][out]  Matriz de tipo numérico.

array2[]

[in][out]  Matriz de tipo numérico.

Valor devuelto

Devuelve true en caso de éxito, de lo contrario, devuelve false. En este caso, GetLastError() retornará el código de error ERR_INVALID_ARRAY.

Nota

La función acepta matrices dinámicas del mismo tipo y de las mismas dimensiones, excepto la primera. Para los tipos enteros, el signo se ignora, es decir, char==uchar)

Ejemplo:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- matrices para guardar las cotizaciones
   double source_array[][8];
   double   dest_array[][8];
   MqlRates rates[];
//--- obtenemos los datos de las últimas 20 velas en el marco temporal actual
   int copied=CopyRates(NULL,0,0,20,rates);
   if(copied<=0)
     {
      PrintFormat("CopyRates(%s,0,0,20,rates) failed, error=%d",
                  Symbol(),GetLastError());
      return;
     }
//--- establecemos el tamaño de la matriz conforme al número de datos copiados
   ArrayResize(source_array,copied);
//--- rellanamos la matriz rate_array_1[] con los datos de rates[]
   for(int i=0;i<copied;i++)
     {
      source_array[i][0]=(double)rates[i].time;
      source_array[i][1]=rates[i].open;
      source_array[i][2]=rates[i].high;
      source_array[i][3]=rates[i].low;
      source_array[i][4]=rates[i].close;
      source_array[i][5]=(double)rates[i].tick_volume;
      source_array[i][6]=(double)rates[i].spread;
      source_array[i][7]=(double)rates[i].real_volume;
     }
//--- realizamos el intercambio de datos entre source_array[] y dest_array[]
   if(!ArraySwap(source_array,dest_array))
     {
      PrintFormat("ArraySwap(source_array,rate_array_2) failed, error code=%d",GetLastError());
      return;
     }
//--- nos aseguramos de que tras el intercambio, el tamaño de la matriz-fuente se haya convertido en cero
   PrintFormat("ArraySwap() done: ArraySize(source_array)=%d",ArraySize(source_array));
//--- mostramos los datos de la matriz-receptor dest_array[]
   ArrayPrint(dest_array);
  }

Vea también

ArrayCopy, ArrayFill, ArrayRange, ArrayIsDynamic