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
Asesores Expertos

Demo_FileWriteArray - Asesor Experto para MetaTrader 5

Visualizaciones:
926
Ranking:
(23)
Publicado:
2014.01.14 14:34
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 Asesor Experto obtiene los valores de los precios Bid y Ask en cada tick y los graba en la matriz de estructuras "prices". Cada veinte ticks el Asesor Experto escribe los datos de los objetos estructura en el archivo utilizando la función FileWriteArray(). Los datos se graban en un archivo binario en una subcarpeta de la carpeta local del terminal. La ubicación de la carpeta local del terminal puede ser obtenida mediante la función TerminalInfoString().

PrintFormat("Ruta hacia la carpeta local del terminal: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH)); 
Al eliminar el Asesor Experto del gráfico, los datos pendientes de escribir se escriben en el archivo y una vez realizado esto el Asesor Experto finaliza su trabajo.

Código:

//--- parámetros de entrada
input string InpFileName="data.bin";
input string InpDirectoryName="SomeFolder";
//+------------------------------------------------------------------+
//| Estructura para almacenar los datos de los precios               |
//+------------------------------------------------------------------+
struct prices
  {
   datetime          date; // fecha
   double            bid;  // precio Bid
   double            ask;  // precio Ask
  };
//--- variables globales
int    count=0;
int    size=20;
string path=InpDirectoryName+"//"+InpFileName;
prices arr[];
//+------------------------------------------------------------------+
//| Función de inicialización del experto                            |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- reserva memoria para la matriz
   ArrayResize(arr,size);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Función de dinicialización de experto                            |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- escribe las restantes count cadenas si count<n
   WriteData(count);
  }
//+------------------------------------------------------------------+
//| Función de ticks del Experto                                     |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- guarda los datos en la matriz
   arr[count].date=TimeCurrent();
   arr[count].bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
   arr[count].ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
//--- show current data
   Print("Fecha = ",arr[count].date," Bid = ",arr[count].bid," Ask = ",arr[count].ask);
//--- incrementa el contador
   count++;
//--- si el array está lleno, escribe los datos al archivo y pone el contador a cero
   if(count==size)
     {
      WriteData(size);
      count=0;
     }
  }
//+------------------------------------------------------------------+
//| Escribe n elementos de la matriz en el archivo                   |
//+------------------------------------------------------------------+
void WriteData(const int n)
  {
//--- abre el archivo
   ResetLastError();
   int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
   if(handle!=INVALID_HANDLE)
     {
      //--- escribe los datos de la matriz al final del archivo
      FileSeek(handle,0,SEEK_END);
      FileWriteArray(handle,arr,0,n);
      //--- cierra el archivo
      FileClose(handle);
     }
   else
      Print("Fallo al abrir el archivo, error ",GetLastError());
  }

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

Volatilidad Kaufman Volatilidad Kaufman

Indicador de volatilidad Kaufman según Perry Kaufman "Trading Inteligente: mejorar el rendimiento con el cambio de mercado".

Kaufman Efficiency Ratio Kaufman Efficiency Ratio

Ratio de Eficiencia DE Kaufman (también llamado "eficiencia generalizada de fractal") según libros de Perry Kaufman "Negociación inteligente" y "Nuevo Sistema y Métodos de Trading".

Demo_FileGetInteger Demo_FileGetInteger

Este script muestra un ejemplo del uso de la función FileGetInteger()

Demo_FileIsEnding Demo_FileIsEnding

Este script muestra un ejemplo del uso de la función FileIsEnding()