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

iStochKomposterAlert - indicador para MetaTrader 5

Visualizaciones:
901
Ranking:
(28)
Publicado:
2016.10.18 13:42
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

Autor real:

komposter

Indicador de señal de semáforo de flechas con salida de las zonas de sobrecompra y sobreventa del oscilador estocástico clásico, con alertas y envío de mensajes de correo y notificaciones push al smartphone.

Para las alertas y el envío de mensajes de correo y notificaciones push al smartphone, en el código del indicador se han hecho los siguientes cambios:

  1. En los parámetros de entrada del indicador se han escrito nuevas variables de entrada
    input uint NumberofBar=1;//Número de la barra para enviar la señal
    input bool SoundON=true; //Permiso de alerta
    input uint NumberofAlerts=2;//Número de alertas
    input bool EMailON=false; //Permiso para enviar una señal por correo
    input bool PushON=false; //Permiso para envia una señal al móvil
    
  2. Se han añadido tres nuevas funciones, BuySignal(), SellSignal() y GetStringTimeframe() al final del código del indicador
    //+------------------------------------------------------------------+
    //| Buy signal function                                              |
    //+------------------------------------------------------------------+
    void BuySignal(string SignalSirname,      // el texto del nombre del indicador para las señales por correo y push
                   double &BuyArrow[],        // búfer de indicador con las señales de compra
                   const int Rates_total,     // número actual de 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;
       if(SeriesTest) index=int(NumberofBar);
       else index=Rates_total-int(NumberofBar)-1;
       if(NormalizeDouble(BuyArrow[index],_Digits) && BuyArrow[index]!=EMPTY_VALUE) 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];
          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 señales push y por correo
                    double &SellArrow[],       // búfer de indicador con las señales de compra
                    const int Rates_total,     // número actual de 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 SellSignal=false;
       bool SeriesTest=ArrayGetAsSeries(SellArrow);
       int index;
       if(SeriesTest) index=int(NumberofBar);
       else index=Rates_total-int(NumberofBar)-1;
       if(NormalizeDouble(SellArrow[index],_Digits) && SellArrow[index]!=EMPTY_VALUE) 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];
          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 marco temporal en forma de línea                              |
    //+------------------------------------------------------------------+
    string GetStringTimeframe(ENUM_TIMEFRAMES timeframe)
      {
    //----
       return(StringSubstr(EnumToString(timeframe),7,-1));
    //----
      }
    
  3. En el bloque OnCalculate() después de los ciclos de cálculo del indicador se han añadido un par de llamadas a las funciones BuySignal() y SellSignal()
    BuySignal("iWPRSign",BuyBuffer,rates_total,prev_calculated,close,spread);
        SellSignal("iWPRSign",SellBuffer,rates_total,prev_calculated,close,spread);
    

Donde BuyBuffer y SellBuffer serán los nombres de los búferes de indicador para guardar las señales de compra y venta. En los búferes de indicador, en calidad de valores vacíos deberá haber o bien ceros o bien EMPTY_VALUE.

Se presupone que en el código del indicador, en el bloque OnCalculate() se usará solo una llamada a las funciones BuySignal() y SellSignal().

Imágenes:

Fig. 1. Indicador iStochKomposterAlert en el gráfico

Fig. 1. Indicador iStochKomposterAlert en el gráfico

Fig.2. Indicador iStochKomposterAlert. Envío de la alerta

Fig.2. Indicador iStochKomposterAlert. Envío de la alerta

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

Trailing-stop universal Trailing-stop universal

El asesor funciona tanto en el modo normal, con una sola posición, como en el modo HEDGE con multitud de posiciones abiertas.

RAVI_Histogram RAVI_Histogram

Indicador Range Action Verification Index en forma de histograma de fuerza y dirección de la tendencia actual.

Volume_Weighted_MA_Cloud_HTF Volume_Weighted_MA_Cloud_HTF

Indicador Volume_Weighted_MA_Cloud con posibilidad de cambiar el marco temporal del indicador en los parámetros de entrada.

Exp_Volume_Weighted_MA_StDev Exp_Volume_Weighted_MA_StDev

Sistema comercial construido con las señales del indicador Volume_Weighted_MA_StDev.