Mira cómo descargar robots gratis
¿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
Visualizaciones:
647
Ranking:
votos: 26
Publicado:
2014.01.14 14:35
Actualizado:
2016.11.22 07:33

Cuando se escribe en un archivo, los datos pueden tardar algún tiempo en ser realmente escritos en el disco. Para guardar los datos de manera instantánea en un archivo, debemos usar la función FileFlush(). Si no se utiliza esta función, parte de los datos que aún no hayan sido escritos en el disco, se guardarán de manera forzada solamente cuando el archivo sea cerrado mediante la función FileClose().

El script en el ciclo obtiene los precios actuales de Bid y Ask y llama a la función FileWrite() para escribirlos. Cada 128 iteraciones se llama a la función FileFlush() para forzar la escritura de los datos en el disco.

Código:

//--- muestra la ventana con los parámetros de entrada al lanzar el script
#property script_show_inputs
//--- nombre del archivo a escribir
input string InpFileName="example.csv"; // nombre del archivo
//+------------------------------------------------------------------+
//| Función de inicio del script                                     |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- reset del valor del último error
   ResetLastError();
//--- abre el archivo
   int file_handle=FileOpen(InpFileName,FILE_READ|FILE_WRITE|FILE_CSV);
   if(file_handle!=INVALID_HANDLE)
     {
      //--- escribe los datos al archivo
      for(int i=0;i<1000;i++)
        {
         //--- llama a la función de escritura
         FileWrite(file_handle,TimeCurrent(),SymbolInfoDouble(Symbol(),SYMBOL_BID),SymbolInfoDouble(Symbol(),SYMBOL_ASK));
         //--- graba los datos en el disco cada 128 iteraciones
         if((i & 127)==127)
           {
            //--- ahora los datos están en el disco y no se perderán en caso de un error crítico
            FileFlush(file_handle);
            PrintFormat("i = %d, OK",i);
           }
         //--- pausa de 0.01 segundos
         Sleep(10);
        }
      //--- cierra el archivo
      FileClose(file_handle);
     }
   else
      PrintFormat("Error, código = %d",GetLastError());
  }

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

RouletteGame RouletteGame

El Juego de la Ruleta.

i-IntradayFibonacci i-IntradayFibonacci

Niveles de Fibonacci intradía

iChartsSwitchSymbol iChartsSwitchSymbol

Cuando se cambia el símbolo gráfico, cambiará los símbolos para todas las otras gráficas.

Demo_FileMove Demo_FileMove

El script muestra un ejemplo del uso de la función FileMove()