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
Visualizaciones:
944
Ranking:
(28)
Publicado:
2014.01.14 14:32
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 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 Blau_Mtm

Indicador de momento de William Blau.

Demo_FileReadDatetime 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 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 STALIN

Las señales de compra/venta del indicador se basan en el cruce de dos medias móviles con diferentes períodos.