Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5
BeginnerAlert - indicador para MetaTrader 5
- Visualizaciones:
- 1310
- Ranking:
- Publicado:
- 2017.01.11 08:45
- ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
Autor real:
EarnForex
Este indicador muestra los extremos de la tendencia (máximo y mínimo) que pueden utilizarse como puntos de soporte y resistencia para ayudar a determinar el canal de la tendencia actual, con posibilidad de enviar alertas, mensajes de correo y mensajes Push en el smartphone.
Este simple indicador utiliza un período determinado para encontrar ahí el mínimo y el máximo marcándolos con los puntos.
Para las alertas, mensajes de correo y mensajes Push en el smartphone, el código del indicador ha sufrido las siguientes modificaciones:
- En los parámetros de entrada del indicador, fueron añadidas nuevas variables de entrada
input uint NumberofBar=1;//Número de 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 la señal vía el email input bool PushON=false; //Permiso para enviar la señal al móvil
- Fueron añadidas tres funciones nuevas BuySignal(), SellSignal() y GetStringTimeframe() al final del código del indicador
//+------------------------------------------------------------------+ //| Buy signal function | //+------------------------------------------------------------------+ void BuySignal(string SignalSirname, // texto del nombre del indicador para los emails y mensajes Push double &BuyArrow[], // búfer de indicador con señales para la 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 los emails y ensajes Push double &SellArrow[], // búfer de indicador con señales para la 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); } //--- } //+------------------------------------------------------------------+ //| Obtención del timeframe como una cadena de caracteres | //+------------------------------------------------------------------+ string GetStringTimeframe(ENUM_TIMEFRAMES timeframe) { //---- return(StringSubstr(EnumToString(timeframe),7,-1)); //---- }
- En el bloque OnCalculate(), después del cálculo de los ciclos del indicador, fueron añadidas dos llamadas a las funciones BuySignal() y SellSignal()
//--- BuySignal("BeginnerAlert",BuyBuffer,rates_total,prev_calculated,Close,spread); SellSignal("BeginnerAlert",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, deben estar presentes los ceros o EMPTY_VALUE como valores vacíos.
Se supone que en el código del indicador, en el bloque OnCalculate(), va a usarse sólo una llamada a cada función BuySignal() y SellSignal()
Por primera vez este indicador fue implementado en MQL4 y fue publicado en Code Base el 03.09.2008.
Fig. 1. Indicador BeginnerAlert en el gráficoEn el gráfico
Fig. 2. Indicador BeginnerAlert. Envío de la alerta
Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/16448
Es un indicador para visualizar los patrones armónicos en el gráfico, los que ya existen y los que se están formando.
BcryptClase para trabajar con el algoritmo del cifrado por bloques.
Este indicador dibuja el Pivot diario, semanal y mensual con el texto en el historial.
XFatlXSatlMACD_HTFEl indicador XFatlXSatlMACD permite cambiar el período de tiempo del indicador en los parámetros de entrada.