FileLoad

Lee todo el contenido de un archivo binario especificado en una matriz transmitida de tipos numéricos o estructuras sencillas. La función permite leer rápidamente los datos de un tipo conocido en la matriz apropiada.

long  FileLoad(
   const string  file_name,         // nombre del archivo
   void&         buffer[],          // matriz de tipos numéricos o estructuras sencillas
   int           common_flag=0      // bandera del archivo, por defecto el archivo se busca en la carpeta <catálogo_de_datos>\MQL5\Files\
   );

Parámetros

file_name

[in]  Nombre del archivo desde el que se leerán los datos.

buffer

[out]  Matriz de tipos numéricos o estructuras sencillas.

common_flag=0

[in] bandera de archivo que indica el modo de trabajo. Si no se indica el parámetro, entonces el archivo se buscará en la subcarpeta MQL5\Files (o  <catálogo_del_agente_de_simulación>\MQL5\Files en caso de simulación).

Valor devuelto

Número de elementos leídos o -1 en caso de fallo.

Observación

La función FileLoad() lee del archivo un número de bytes múltiplo del tamaño del elemento de la matriz. Por ejemplo, supongamos que el tamaño del archivo es de 10 bytes, y la lectura se realiza en una matriz de tipo double (sizeof(double)=8). En este caso, solo se leerán 8 bytes, los 2 restantes al final del archivo sencillamente se descartarán, y la propia función FileLoad() retornará 1 (1 elemento leído).

Ejemplo:

//+------------------------------------------------------------------+
//|                                                Demo_FileLoad.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2000-2024, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property copyright "Copyright 2000-2024, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property script_show_inputs
//--- input parameters
input int      bars_to_save=10; // número de barras
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string  filename=_Symbol+"_rates.bin";
   MqlRates rates[];
//---
   int copied=CopyRates(_Symbol,_Period,0,bars_to_save,rates);
   if(copied!=-1)
     {
      PrintFormat(" CopyRates(%s) copied %d bars",_Symbol,copied);
      //---  escribimos las cotizaciones en el archivo
      if(!FileSave(filename,rates,FILE_COMMON))
         PrintFormat("FileSave() failed, error=%d",GetLastError());
     }
   else
      PrintFormat("Failed CopyRates(%s), error=",_Symbol,GetLastError());
//--- ahora leemos estas cotizaciones de vuelta desde el archivo
   ArrayFree(rates);
   long count=FileLoad(filename,rates,FILE_COMMON);
   if(count!=-1)
     {
      Print("Time\tOpen\tHigh\tLow\tClose\tTick Voulme\tSpread\tReal Volume");
      for(int i=0;i<count;i++)
        {
         PrintFormat("%s\t%G\t%G\t%G\t%G\t%I64u\t%d\t%I64u",
                     TimeToString(rates[i].time,TIME_DATE|TIME_SECONDS),
                     rates[i].open,rates[i].high,rates[i].low,rates[i].close,
                     rates[i].tick_volume,rates[i].spread,rates[i].real_volume);
        }
     }
  }

Véase también

Estructuras y clases, FileReadArray, FileReadStruct, FileSave