Mira cómo descargar robots gratis
¡Búscanos en Facebook!
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
Indicadores

RJTX_Matches_Smoothed_Alert - indicador para MetaTrader 5

Visualizaciones:
730
Ranking:
(14)
Publicado:
2018.12.04 11:10
Actualizado:
2023.03.27 14:33
\MQL5\Include\
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Autor real:

Rafael Jimenez Tocino

Indicador RJTX_Matches_Smoothed con el envío de alertas, mensajes de correo y notificaciones Push a su teléfono inteligente.

En el código del indicador, han sido hechas las siguientes modificaciones para las alertas, mensajes de correo y Push al smartphone:

  1. Han sido añadidas nuevas variables de entrada a los parámetros de entrada del indicador:
    input uint NumberofBar=1;                //Número de la barra para enviar la señal
    input bool SoundON=true;                  // Permiso de la alerta
    input uint NumberofAlerts=2;               // Número de alertas
    input bool EMailON=false;                // Permiso para enviar señales por email
    input bool PushON=false;                   // Permiso para enviar la alerta al móvil
    


  2. Han sido añadidas tres nuevas funciones BuySignal(), SellSignal() y GetStringTimeframe() al final del código del indicador
    //+------------------------------------------------------------------+
    //| Buy signal function                                              |
    //+------------------------------------------------------------------+
    void BuySignal(string SignalSirname,      // texto del nombre del indicador para emails y señales Push
                   double &BuyArrow[],        // búfer de indicador con señales de compra
                  const int Rates_total,     // número actual de las barras
                   const int Prev_calculated, // número de barras en el tick anterior
                   const double &Close[],     // precio de cierre
                   const int &Spread[])       // spread
      {
    //---
       static uint counter=0;
       if(Rates_total!=Prev_calculated) counter=0;
    
       bool BuySignal=false;
       bool SeriesTest=ArrayGetAsSeries(BuyArrow);
       int index,index1;
       if(SeriesTest)
        {
         index=int(NumberofBar);
         index1=index+1;
        }
       else
         {
          index=Rates_total-int(NumberofBar)-1;
          index1=index-1;
         }
       if(!BuyArrow[index1] && BuyArrow[index]) BuySignal=true;
       if(BuySignal && counter<=NumberofAlerts)
         {
          counter++;
          MqlDateTime tm;
          TimeToStruct(TimeCurrent(),tm);
          string text=TimeToString(TimeCurrent(),TIME_DATE)+" "+string(tm.hour)+":"+string(tm.min);
          SeriesTest=ArrayGetAsSeries(Close);
          if(SeriesTest) index=int(NumberofBar);
          else index=Rates_total-int(NumberofBar)-1;
          double Ask=Close[index];
          double Bid=Close[index];
          SeriesTest=ArrayGetAsSeries(Spread);
          if(SeriesTest) index=int(NumberofBar);
          else index=Rates_total-int(NumberofBar)-1;
          Bid+=Spread[index]*_Point;
          string sAsk=DoubleToString(Ask,_Digits);
          string sBid=DoubleToString(Bid,_Digits);
          string sPeriod=GetStringTimeframe(ChartPeriod());
          if(SoundON) Alert("BUY signal \n Ask=",Ask,"\n Bid=",Bid,"\n currtime=",text,"\n Symbol=",Symbol()," Period=",sPeriod);
          if(EMailON) SendMail(SignalSirname+": BUY signal alert","BUY signal at Ask="+sAsk+", Bid="+sBid+", Date="+text+" Symbol="+Symbol()+" Period="+sPeriod);
          if(PushON) SendNotification(SignalSirname+": BUY signal at Ask="+sAsk+", Bid="+sBid+", Date="+text+" Symbol="+Symbol()+" Period="+sPeriod);
         }
    
    //---
      }
    //+------------------------------------------------------------------+
    //| Sell signal function                                             |
    //+------------------------------------------------------------------+
    void SellSignal(string SignalSirname,      // texto del nombre del indicador para emails y señales Push
                    double &SellArrow[],       // búfer de indicador con señales de compra
                    const int Rates_total,     // número actual de las barras
                    const int Prev_calculated, // número de barras en el tick anterior
                    const double &Close[],     // precio de cierre
                    const int &Spread[])       // spred
      {
    //---
       static uint counter=0;
       if(Rates_total!=Prev_calculated) counter=0;
    
       bool SellSignal=false;
       bool SeriesTest=ArrayGetAsSeries(SellArrow);
       int index,index1;
       if(SeriesTest)
        {
         index=int(NumberofBar);
         index1=index+1;
        }
       else
         {
          index=Rates_total-int(NumberofBar)-1;
          index1=index-1;
         }
       if(!SellArrow[index1] && SellArrow[index]) SellSignal=true;
       if(SellSignal && counter<=NumberofAlerts)
         {
          counter++;
          MqlDateTime tm;
          TimeToStruct(TimeCurrent(),tm);
          string text=TimeToString(TimeCurrent(),TIME_DATE)+" "+string(tm.hour)+":"+string(tm.min);
          SeriesTest=ArrayGetAsSeries(Close);
          if(SeriesTest) index=int(NumberofBar);
          else index=Rates_total-int(NumberofBar)-1;
          double Ask=Close[index];
          double Bid=Close[index];
          SeriesTest=ArrayGetAsSeries(Spread);
          if(SeriesTest) index=int(NumberofBar);
          else index=Rates_total-int(NumberofBar)-1;
          Bid+=Spread[index]*_Point;
          string sAsk=DoubleToString(Ask,_Digits);
          string sBid=DoubleToString(Bid,_Digits);
          string sPeriod=GetStringTimeframe(ChartPeriod());
          if(SoundON) Alert("SELL signal \n Ask=",Ask,"\n Bid=",Bid,"\n currtime=",text,"\n Symbol=",Symbol()," Period=",sPeriod);
          if(EMailON) SendMail(SignalSirname+": SELL signal alert","SELL signal at Ask="+sAsk+", Bid="+sBid+", Date="+text+" Symbol="+Symbol()+" Period="+sPeriod);
          if(PushON) SendNotification(SignalSirname+": SELL signal at Ask="+sAsk+", Bid="+sBid+", Date="+text+" Symbol="+Symbol()+" Period="+sPeriod);
         }
    //---
      }
    //+------------------------------------------------------------------+
    //|  Obtener timeframe como una cadena                              |
    //+------------------------------------------------------------------+
    string GetStringTimeframe(ENUM_TIMEFRAMES timeframe)
      {
    //----
       return(StringSubstr(EnumToString(timeframe),7,-1));
    //----
      }
    


  3. En el bloque OnCalculate() después del ciclo del cálculo del indicador, han sido insertadas las llamadas a las funciones BuySignal() y SellSignal()
    //---     
       BuySignal("RJTX_Matches_Smoothed_Alert",BuyBuffer,rates_total,prev_calculated,close,spread);
       SellSignal("RJTX_Matches_Smoothed_Alert",SellBuffer,rates_total,prev_calculated,close,spread);
    //---
    


Donde BuyBuffer y SellBuffer son nombres de los búferes de indicador para almacenar las señales de compra y de venta. En los búferes de indicador, como valores vacíos, tienen que figurar ceros o EMPTY_VALUE.

Se supone que en el código del indicador, en el bloque OnCalculate() va a usarse sólo una llamada a las funciones BuySignal() y SellSignal().

El indicador utiliza las clases de la librería SmoothAlgorithms.mqh (hay que copiar a la carpeta de datos del terminal\MQL5\Include). La descripción detallada del trabajo con ellas se encuentra en el artículo Promediación de series de precio para cálculos intermedios sin usar buffers adicionales.

Por primera vez, este indicador fue implementado en MQL4 y publicado en Code Base 23.12.2015.


Fig. 1. Indicador RJTX_Matches_Smoothed_Alert en el gráfico

Fig. 1. Indicador RJTX_Matches_Smoothed_Alert en el gráfico


Fig. 2. Indicador RJTX_Matches_Smoothed_Alert. Envío de alerta.

Fig. 2. Indicador RJTX_Matches_Smoothed_Alert. Envío de alertas.

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

RJTX_Matches_Smoothed_Alert_xx RJTX_Matches_Smoothed_Alert_xx

El indicador RJTX_Matches_Smoothed_Alert envía alertas, mensajes de correo y notificaciones Push a su teléfono inteligente. En sus parámetros de entrada se puede reemplazar los símbolos visualizados del indicador.

NRTR_Revers NRTR_Revers

Asesor Experto a base del indicador iATR (Average True Range, ATR)

HLCrossSigForWPR_HTF HLCrossSigForWPR_HTF

El indicador HLCrossSigForWPR tiene la posibilidad de cambiar el timeframe del indicador en los parámetros de entrada.

Extreme EA Extreme EA

Se utilizan los indicadores iCCI (Commodity Channel Index, CCI) y dos iMA (Moving Average, MA).