Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Twitter!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Indicadores

BrainTrend1Sig_Alert - indicador para MetaTrader 5

Visualizações:
1551
Avaliação:
(18)
Publicado:
2017.01.09 12:18
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

Indicador de sinal semáforo BrainTrend1Sig_Alert com emissão de alertas, envio de e-mails e mensagens push para seu smartphone.

Para alertas, envio de e-mails e mensagens push para seu smartphone, no código do indicador foram feitas as seguintes alterações:

  1. Nos parâmetros de entrada do indicador, foram anexadas novas variáveis ​​de entrada
    input uint NumberofBar=1;//Número da barra para emissão do sinal
    input bool SoundON=true; //Autorização do alerta
    input uint NumberofAlerts=2;//Quantidade de alertas
    input bool EMailON=false; //Autorização para enviar o sinal via e-mail
    input bool PushON=false; //Autorização para enviar o sinal para o telefone
    
  2. Foram adicionadas três novas funções, isto é, BuySignal(), SellSignal() e GetStringTimeframe() no final do código do indicador
    //+------------------------------------------------------------------+
    //| Buy signal function                                              |
    //+------------------------------------------------------------------+
    void BuySignal(string SignalSirname,      // texto do nome do indicador para sinais push e de e-mail
                   double &BuyArrow[],        // buffer indicador com sinais de compra
                   const int Rates_total,     // número atual de barras
                   const int Prev_calculated, // número de barras no tick anterior
                   const double &Close[],     // preço de fechamento
                   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 do nome do indicador para sinais push e de e-mail
                    double &SellArrow[],       // buffer indicador com sinais de compra
                    const int Rates_total,     // número atual de barras
                    const int Prev_calculated, // número de barras no tick anterior
                    const double &Close[],     // preço de fechamento
                    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);
         }
    //---
      }
    //+------------------------------------------------------------------+
    //|  Obtenção do timeframe como uma cadeia de caracteres                              |
    //+------------------------------------------------------------------+
    string GetStringTimeframe(ENUM_TIMEFRAMES timeframe)
      {
    //----
       return(StringSubstr(EnumToString(timeframe),7,-1));
    //----
      }
    
  3. No bloco OnCalculate(), após os ciclos de cálculo do indicador, é adicionado um par de casos para as funções BuySignal() e SellSignal()
    //---
    BuySignal("BrainTrend1Sig_Alert",BuyBuffer,rates_total,prev_calculated,close,spread);
    SellSignal("BrainTrend1Sig_Alert",SellBuffer,rates_total,prev_calculated,close,spread);
    //---

Onde BuyBuffer e SellBuffer são os nomes de indicador dos buffers para armazenar sinais para compra e venda. Nos buffers de indicador, como valores vazios, devem haver zeros ou EMPTY_VALUE.

Supõe-se que no código do indicador, no bloco OnCalculate(), vai ser utilizado para um único tratamento das funções BuySignal() e SellSignal().

Fig.1. Indicador BrainTrend1Sig_Alert no gráfico

Fig.1. Indicador BrainTrend1Sig_Alert no gráfico

Fig.2. Indicador BrainTrend1Sig_Alert. Emissão do alerta

Fig.2. Indicador BrainTrend1Sig_Alert. Emissão do alerta

Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/16629

XMACandles XMACandles

Indicador XMA em forma de vela.

MACDCandleTrend MACDCandleTrend

Indicador de sinal de semáforo com uso da alteração de cor das velas do indicador MACDCandle como sinais de negociação.

ZigZag_NK_Color_Price ZigZag_NK_Color_Price

Indicador ZigZag com etiquetas de preço dos valores dos picos do ZigZag.

Zigzag2_R_Arrows Zigzag2_R_Arrows

ZigZag Zigzag2_R com exibição de seus valores como ícones de fractal.