Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5
Demo_FileFlush - script para MetaTrader 5
- Visualizaciones:
- 796
- Ranking:
- Publicado:
- 2014.01.14 14:35
- 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
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 Ltd
Artículo original: https://www.mql5.com/ru/code/1615
Cuando se cambia el símbolo gráfico, cambiará los símbolos para todas las otras gráficas.
Demo_FileMoveEl script muestra un ejemplo del uso de la función FileMove()