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_FileWriteArray - Asesor Experto para MetaTrader 5
- Visualizaciones:
- 958
- Ranking:
- 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
Indicador de volatilidad Kaufman según Perry Kaufman "Trading Inteligente: mejorar el rendimiento con el cambio de mercado".
Kaufman Efficiency RatioRatio 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".
Este script muestra un ejemplo del uso de la función FileGetInteger()
Demo_FileIsEndingEste script muestra un ejemplo del uso de la función FileIsEnding()