FileWriteInteger

Escribe en un archivo binario el valor del parámetro de tipo int desde la posición actual del puntero del archivo.

Escribe en un archivo CSV o de texto el valor del parámetro de tipo int convertido a texto desde la posición actual del puntero del archivo.

uint  FileWriteInteger(
   int  file_handle,        // manejador del archivo
   int  value,              // valor para escribir
   int  size=INT_VALUE      // tamaño en bytes
   );

Parámetros

file_handle

[in]  Descriptor de archivo devuelto por la función FileOpen().

value

[in]  Valor entero.

size=INT_VALUE

[in]   Cantidad de bytes (hasta 4 inclusive) que hay que escribir. Están previstas las constantes siguientes: CHAR_VALUE=1, SHORT_VALUE=2 y INT_VALUE=4, de esta manera, la función puede escribir el valor entero del tipo char, uchar, short, ushort, int o uint.

Valor devuelto

En caso de éxito, la función devuelve el número de bytes escritos. El puntero del archivo se desplaza el mismo número de bytes.

Nota

En caso de escritura en un archivo binario, equivale a llamar a la función FileWrite con un parámetro de tipo int

int int_value;
FileWrite(file_handle,int_value);

Ejemplo:

//+------------------------------------------------------------------+
//|                                        Demo_FileWriteInteger.mq5 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- mostramos la ventana de parámetros de entrada al iniciar el script
#property script_show_inputs
//--- parámetros para obtener datos desde el terminal
input string             InpSymbolName="EURUSD";           // par de divisas
input ENUM_TIMEFRAMES    InpSymbolPeriod=PERIOD_H1;        // período de tiempo
input datetime           InpDateStart=D'2013.01.01 00:00'; // fecha de inicio del copiado de datos
//--- parámetros para la escritura de datos en el archivo
input string             InpFileName="Trend.bin"; // nombre del archivo
input string             InpDirectoryName="Data"; // nombre de la carpeta
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   datetime date_finish=TimeCurrent();
   double   close_buff[];
   datetime time_buff[];
   int      size;
//--- reseteamos el valor del error
   ResetLastError();
//--- copiamos el precio de cierre para cada barra
   if(CopyClose(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,close_buff)==-1)
     {
      PrintFormat("Fallo al copiar los valores de los precios de cierre. Código del error = %d",GetLastError());
      return;
     }
//--- copiamos el tiempo para cada barra
   if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,time_buff)==-1)
     {
      PrintFormat("Fallo al copiar el valor del tiempo. Código del error = %d",GetLastError());
      return;
     }
//--- obtenemos el tamaño del búfer
   size=ArraySize(close_buff);
//--- abrimos el archivo para escribir los valores (si no existe, se crea automáticamente)
   ResetLastError();
   int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_BIN);
   if(file_handle!=INVALID_HANDLE)
     {
      PrintFormat("El archivo %s está abierto para la escritura",InpFileName);
      PrintFormat("Ruta del archivo: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
      //--- 
      int   up_down=0; // bandera de la tendencia
      int   arr_size;  // tamaño del array arr
      uchar arr[];     // array del tipo uchar
      //--- escribimos los valores de tiempo en el archivo
      for(int i=0;i<size-1;i++)
        {
         //--- comparamos los precios de cierre para la barra actual y la siguiente
         if(close_buff[i]<=close_buff[i+1])
           {
            if(up_down!=1)
              {
               //--- escribimos los valores de la fecha en el archivo utilizando FileWriteInteger
               StringToCharArray(TimeToString(time_buff[i]),arr);
               arr_size=ArraySize(arr);
               //--- primero escribimos el número de símbolos del array
               FileWriteInteger(file_handle,arr_size,INT_VALUE);
               //--- escribimos los propios símbolos
               for(int j=0;j<arr_size;j++)
                  FileWriteInteger(file_handle,arr[j],CHAR_VALUE);
               //--- cambiamos la bandera de la tendencia
               up_down=1;
              }
           }
         else
           {
            if(up_down!=-1)
              {
               //--- escribimos el valor de la fecha en el archivo utilizando FileWriteInteger
               StringToCharArray(TimeToString(time_buff[i]),arr);
               arr_size=ArraySize(arr);
               //--- primero escribimos el número de símbolos del array
               FileWriteInteger(file_handle,arr_size,INT_VALUE);
               //--- escribimos los propios símbolos
               for(int j=0;j<arr_size;j++)
                  FileWriteInteger(file_handle,arr[j],CHAR_VALUE);
               //--- cambiamos la bandera de la tendencia
               up_down=-1;
              }
           }
        }
      //--- cerramos el archivo
      FileClose(file_handle);
      PrintFormat("Datos grabados, el archivo %s cerrado",InpFileName);
     }
   else
      PrintFormat("Fallo al abrir el archivo %s, Código del error = %d",InpFileName,GetLastError());
  }

Véase también

IntegerToString, StringToInteger, Tipos enteros