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:
- 1126
- Ranking:
- Publicado:
- Actualizado:
-
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
El script define las señales generadas por el indicador MACD y las guarda en un archivo. Dentro de los parámetros de entrada del script se pueden especificar parámetros de cálculo para el indicador MACD, el nombre de la divisa y el período, así como la fecha a partir de la cual se analizarán los datos. El archivo con las señales del indicador estarán ubicadas en la subcarpeta "Data" de la carpeta local del terminal.
Código:
Inicialmente, obtenemos una matriz con valores del indicador y una matriz de fechas para el período indicado:
//--- la fecha final es la fecha actual date_finish=TimeCurrent(); //--- recibe el manejador del indicador MACD ResetLastError(); int macd_handle=iMACD(InpSymbolName,InpSymbolPeriod,InpFastEMAPeriod,InpSlowEMAPeriod,InpSignalPeriod,InpAppliedPrice); if(macd_handle==INVALID_HANDLE) { //--- fallo al recibir el manejador del indicador PrintFormat("Error al recbir el manejador del indicador. Código de error = %d",GetLastError()); return; } //--- nos mantenemos en el ciclo hasta que el indicador calcule todos sus valores while(BarsCalculated(macd_handle)==-1) Sleep(10); // pausa para permitir al indicador realizar sus cálculos //--- copia los valores del indicador durante un cierto periodo de tiempo ResetLastError(); if(CopyBuffer(macd_handle,0,InpDateStart,date_finish,macd_buff)==-1) { PrintFormat("Fallo al copiar los valores del indicador. Código de error = %d",GetLastError()); return; } //--- Copia las fechas correspondientes a los valores del indicador ResetLastError(); if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,date_buff)==-1) { PrintFormat("Fallo al copiar los valores de fechas. Código de error = %d",GetLastError()); return; }
Ahora definimos las señales del indicador y las fechas de su formación:
//--- recibimos el tamaño del buffer macd_size=ArraySize(macd_buff); //--- analizamos los datos y guardamos las señales del indicador en las matrices ArrayResize(sign_buff,macd_size-1); ArrayResize(time_buff,macd_size-1); for(int i=1;i<macd_size;i++) { //--- señal de compra if(macd_buff[i-1]<0 && macd_buff[i]>=0) { sign_buff[sign_size]=true; time_buff[sign_size]=date_buff[i]; sign_size++; } //--- señal de venta if(macd_buff[i-1]>0 && macd_buff[i]<=0) { sign_buff[sign_size]=false; time_buff[sign_size]=date_buff[i]; sign_size++; } }
Finalmente, escribimos los valores de las señales obtenidas al archivo utilizando la función FileWrite():
//--- abrimos el archivo para escribir los valores del indicador (si el archivo no existe, se creará automáticamente) ResetLastError(); int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_CSV); if(file_handle!=INVALID_HANDLE) { PrintFormat("El archivo %s está disponible para escritura",InpFileName); PrintFormat("Ruta del archivo: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH)); //--- primero, se escribe el número de señales FileWrite(file_handle,sign_size); //--- se escribe las fechas y valores de las señales en el archivo for(int i=0;i<sign_size;i++) FileWrite(file_handle,time_buff[i],sign_buff[i]); //--- cerramos el archivo FileClose(file_handle); PrintFormat("Los datos ha sido escritos, el archivo %s está cerrado",InpFileName); } else PrintFormat("Fallo al abrir el archvo %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/1626
Blau_Mtm
Indicador de momento de William Blau.
Demo_FileReadDatetime
Este indicador muestra un ejemplo del uso de la función FileReadDatetime()
Clase de un módulo de señales de comercio, en la "ruptura de la barra interior" en la dirección de la tendencia
La estrategia es la siguiente: cuando aparece una (outside) bar, comprueba si hay una ruptura de la barra interior en dirección de la tendencia y genera una señal de apertura de posición. El módulo de señales de comercio es compatible con la nueva versión del asistente de MQL5.
STALIN
Las señales de compra/venta del indicador se basan en el cruce de dos medias móviles con diferentes períodos.