Mira cómo descargar robots gratis
¡Búscanos en Telegram!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Scripts

Demo_FileWriteInteger - script para MetaTrader 5

Visualizaciones:
977
Ranking:
(34)
Publicado:
2014.01.14 14:28
Actualizado:
2016.11.22 07:33
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

El script obtiene los precios del símbolo especificado, los analiza y escribe la información sobre sus movemientos durante un periodo de tiempo determinado en un archivo binario. La función FileWriteInteger() se utiliza para escribir todos los datos.

Los valores de fecha se convierten previamente a cadenas, se separan en una matriz de tipo uchar y luego se escriben al archivo utilizando la función.

Código:

//--- muestra la ventana de parámetros de entrada al lanzar el script
#property script_show_inputs
//--- parametros para recibir datos del terminal
input string             InpSymbolName="EURUSD";           // par de divisas
input ENUM_TIMEFRAMES    InpSymbolPeriod=PERIOD_H1;        // periodo
input datetime           InpDateStart=D'2013.01.01 00:00'; // fecha inicial de copiado de datos
//--- parámetros para escribir los datos en el archivo
input string             InpFileName="Trend.bin"; // nombre del archivo
input string             InpDirectoryName="Data"; // nombre de la carpeta
//+------------------------------------------------------------------+
//| Función de inicio del script                                     |
//+------------------------------------------------------------------+
void OnStart()
  {
   datetime date_finish=TimeCurrent();
   double   close_buff[];
   datetime time_buff[];
   int      size;
//--- inicializa la variable de errores
   ResetLastError();
//--- copia el precio de cierre de cada barra
   if(CopyClose(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,close_buff)==-1)
     {
      PrintFormat("Error al copiar los precios de cierre. Código de error = %d",GetLastError());
      return;
     }
//--- copia el precio de cierre de cada barra
   if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,time_buff)==-1)
     {
      PrintFormat("Error al copiar los precios de cierre. Código de error = %d",GetLastError());
      return;
     }
//--- recibe el tamaño del buffer
   size=ArraySize(close_buff);
//--- abre el archivo para escribir los valores (si no existe, se creará 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á disponible para 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 de la matriz arr
      uchar arr[];     // matriz de tipo uchar
      //--- escribe los valores de fecha en el archivo
      for(int i=0;i<size-1;i++)
        {
         //--- compara los precios de cierre de la barra actual y la siguiente
         if(close_buff[i]<=close_buff[i+1])
           {
            if(up_down!=1)
              {
               //--- escribe la fecha en el archivo usando FileWriteInteger
               StringToCharArray(TimeToString(time_buff[i]),arr);
               arr_size=ArraySize(arr);
               //--- primero, escribe el número de símbolos en la matriz
               FileWriteInteger(file_handle,arr_size,INT_VALUE);
               //--- escribe los símbolos
               for(int j=0;j<arr_size;j++)
                  FileWriteInteger(file_handle,arr[j],CHAR_VALUE);
               //--- cambia la bandera de la tendencia
               up_down=1;
              }
           }
         else
           {
            if(up_down!=-1)
              {
               //--- escribe el valor de la fecha usando FileWriteInteger
               StringToCharArray(TimeToString(time_buff[i]),arr);
               arr_size=ArraySize(arr);
               //--- primero escribe el número de símbolos en la matriz
               FileWriteInteger(file_handle,arr_size,INT_VALUE);
               //--- escribe los símbolos
               for(int j=0;j<arr_size;j++)
                  FileWriteInteger(file_handle,arr[j],CHAR_VALUE);
               //--- cambia la bandera de la tendencia
               up_down=-1;
              }
           }
        }
      //--- cierra el archivo
      FileClose(file_handle);
      PrintFormat("Los datos se han escrito, el archivo %s ha sido cerrado",InpFileName);
     }
   else
      PrintFormat("Error al abrir el archivo %s, código de error = %d",InpFileName,GetLastError());
  }

Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/1635

Demo_FileReadInteger Demo_FileReadInteger

Este indicador muestra un ejemplo del uso de la función FileReadInteger()

Support and Resistance Support and Resistance

El indicador "Soporte y Resistencia" muestra los niveles de soporte y resistencia utilizando el indicador Fractals de Bill Williams.

Módulo de señales de comercio, basado en el indicador BrainTrend2 Módulo de señales de comercio, basado en el indicador BrainTrend2

Una vela de color Lime del indicador BrainTrend2 es la señal para abrir una posición larga, una vela Magenta es la señal para abrir una posición corta.

Módulo de señales de comercio, basado en el indicador BrainTrend1 Módulo de señales de comercio, basado en el indicador BrainTrend1

Una vela azul del indicador BrainTrend1 es la señal para abrir una posición larga, una vela roja es la señal para abrir una posición corta.