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
- Visualizaciones:
- 1078
- Ranking:
- 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

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

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

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.

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.