Descargar MetaTrader 5

ArrayIsDynamic

La función comprueba si el array es dinámico.

bool  ArrayIsDynamic(
   const void&  array[]    // array comprobado
   );

Parámetros

array[]

[in]  Array que se comprueba.

Valor devuelto

Devuelve true, si el array indicado es dinámico, de lo contrario devuelve false.

Ejemplo:

#property description "Este indicador no calcula valores, sino intenta aplicar una vez"
#property description "la llamada de la función ArrayFree() a tres arrays: dinámico, estático y"
#property description "búfer de indicadores. Los resultados se muestran en el diario de los EAs."
//--- ajustes del indicador
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- variables globales
double ExtDynamic[];   // array dinámico
double ExtStatic[100]; // array estático
bool   ExtFlag=true;   // bandera
double ExtBuff[];      // búfer de indicadores
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- adjudicamos la memoria para el array
   ArrayResize(ExtDynamic,100);
//--- indicator buffers mapping
   SetIndexBuffer(0,ExtBuff);
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//--- realizamos el análisis singular
   if(ExtFlag)
     {
      //--- tratamos de liberar la memoria para los arrays
      //--- 1. Array dinámico
      Print("+============================+");
      Print("1. Cheque del array dinámico:");
      Print("Tamaño antes de liberar memoria = ",ArraySize(ExtDynamic));
      Print("Es un array dinámico = ",ArrayIsDynamic(ExtDynamic) ? "Sí" : "No");
      //--- tratamos de liberar la memoria del array
      ArrayFree(ExtDynamic);
      Print("Tamaño después de liberar memoria = ",ArraySize(ExtDynamic));
      //--- 2. Array estático
      Print("2. Chequeo del array estático:");
      Print("Tamaño antes de liberar memoria = ",ArraySize(ExtStatic));
      Print("Es un array estático = ",ArrayIsDynamic(ExtStatic) ? "Sí" : "No");
      //--- tratamos de liberar la memoria del array
      ArrayFree(ExtStatic);
      Print("Tamaño después de liberar memoria = ",ArraySize(ExtStatic));
      //--- 3. Búfer de indicadores
      Print("3. Chequeo del búfer de indicadores:");
      Print("Tamaño antes de liberar memoria = ",ArraySize(ExtBuff));
      Print("Es un array dinámico = ",ArrayIsDynamic(ExtBuff) ? "Sí" : "No");
      //--- tratamos de liberar la memoria del array
      ArrayFree(ExtBuff);
      Print("Tamaño después de liberar memoria = ",ArraySize(ExtBuff));
      //--- cambiamos el valor de la bandera
      ExtFlag=false;
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }

Véase también

Acceso a las series temporales e indicadores