Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
BrainTrend1Sig_Alert - indicador para MetaTrader 5
- Visualizações:
- 1587
- Avaliação:
- 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:
- 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
- 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)); //---- }
- 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.2. Indicador BrainTrend1Sig_Alert. Emissão do alerta
Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/16629
Indicador XMA em forma de vela.
MACDCandleTrendIndicador de sinal de semáforo com uso da alteração de cor das velas do indicador MACDCandle como sinais de negociação.
Indicador ZigZag com etiquetas de preço dos valores dos picos do ZigZag.
Zigzag2_R_ArrowsZigZag Zigzag2_R com exibição de seus valores como ícones de fractal.