Welcome Forex EA downloads & MT4/MT5 auto-trading resources — EAs, Gold EAs, quant tools and real-world automation.
Sign In Sign Up

Iin_MA_Signal_Alert - MetaTrader 5 Script - MT4/MT5 Resource

author EAcpu | 2 reads | 0 comments |

Iin_MA_Signal_Alert - indicator for MetaTrader 5

Iin_MA_Signal_Alert - indicator for MetaTrader 5

Iin_MA_Signal_Alert - indicator for MetaTrader 5

Iin_MA_Signal_Alert - indicator for MetaTrader 5

Real author: Inzuka Nain

Iin_MA_Semaphore signal indicator has alert, email and push notification capabilities.

In order to implement alerts, email messages and push notifications, the following changes were made to the indicator code:

 Input unit number = 1 ; //The number of bars of the signal
Input boolean sound on = true ; //enable alert
Input unit alarm number = 2 ; //Alarm number
input boolean email-on = false ; //enable mailing signal
input boolean pressed = false ; //enable signaling to mobile devices
  • Three new functions have been added at the end of the indicator code: BuySignal(), SellSignal() and GetStringTimeframe()
     //+------------------------------------------------------------------+
    //|Buy signal function |
    //+------------------------------------------------------------------+
    Blank buy signal( string signal sir name, // Indicator name text for emails and push messages double buy arrow(&B)[], // Indicator buffer with buy signal constant integer rate_total, // Current number of bars constant integer ex_calculation, // Number of bars for the previous tick constant double & close [], // Closing price constant int & spread[]) // spread { //--- stationary unit counter = 0 ;
    if (Rates_total!=Prev_calculated) counter = 0 ;
    
    boolean buysignal = false ;
    booleanSeriesTest = array getSeries (BuyArrow);
    integer exponent;
    if (series test) index = integer (number of items);
    Other indexes=Rates_total- integer (number of items) -1 ;
    if ( Normalized Double (BuyArrow[index], _number ) && BuyArrow[index]!= null_VALUE ) BuySignal= True ;
    if (BuySignal && counter<=NumberofAlerts)
        {
          counter++;
    MqlDateTimeTM ;
    BuildTime ( timecurrent (),tm);
    string literal = string time ( timecurrent (), TIME_DATE ) + "" + string (tm.hour) + ":" + string (tm.minute);
          SeriesTest = arrayGetSeries ( close );
    if (series test) index = integer (number of items);
    Other indexes=Rates_total- integer (number of items) -1 ;
    double question = close [index];
    double bid = close [index];
          SeriesTest = arrayGetSeries (spread);
    if (series test) index = integer (number of items);
    Other indexes=Rates_total- integer (number of items) -1 ;
    bid += spread[index];
    Thin string question = double to string ( question , _number );
    stringbid = double to string ( bid , _number );
    String sPeriod=GetStringTimeframe( ChartPeriod ());
    if (sound on) alert ( "buy signal\n ask=" , ask , "\n bid=" , bid , "\n current time=" , text, "\n symbol=" , symbol (), "period=" ,s period);
    if (email) send mail (signal sir name + ": buy signal alert" , "buy signal at inquiry =" + ask + ", bid =" + bid + ", date = " + text + " symbol = " + symbol () + " period = " + s period);
    yword">If (push) send notification (Signal Mr. Name + ": Buy signal at Ask=" + Ask + ", Bid = " + Bid + ", Date = " + Text + " Symbol = " + Symbol () + "Period = " + Period); } //--- } //+--------------------------------------------------------------------------------+ // | Sell Signal Function | //+--------------------------------------------------------------------------------+ Blank Sell Signal ( String Signal Mr. Name, // Indicator name text for emails and push messages Double sales arrows (&S)[], // indicator buffer with sell signals constant integer rates_total, // current number of bars constant integer prev_calculated, // number of bars of the previous price movement constant double & close [], // closing price constant integer &spread[]) // spread { //--- stationary unit counter = 0 ; if (Rates_total!=Prev_calculated) counter = 0 ; boolean SellSignal = False ; boolean Series Test = Array Get Series (Sell Arrow); integer index; if (SeriesTest) index = integer (number of bars); else index = Rates_total - integer (number of bars) - 1 ; if ( normalized double (SellArrow[index], _Number ) && SellArrow[index]!= null_VALUE ) sell signal = true ; if (SellSignal && Counter<=NumberofAlerts) { Counter++; MqlDateTimeTM ; BuildTime ( timecurrent (),tm); string literal = string time ( timecurrent (), TIME_DATE ) + "" + string (tm.hour) + ":" + string (tm.minute); Series test = array to get series ( closed ); if (series test) index = integer (number of bars); other indexes = Rates_total- integer (number of bars) - 1 ; double ask = close [index]; double bid = close [index]; series test = array to get series (propagation); if (series test) index = integer (number of bars); other indexes = Rates_total- integer (number of bars) - 1 ; bid +=spread[index]; string ask = Double to String ( ask , _number );string bid=Double to String( bid , _number ); string sPeriod=GetStringTimeframe( ChartPeriod ()); if (sound on) alert ( "sell signal\n ask=" , ask , "\n bid =" ,bid, "\n current time=" ,text, "\n symbol=" , symbol (), " period=",s period); if (email) send mail (signal sir name + ": sellSignal alert", "Sell signal on ask=" +ask+ ", bid=" +bid+ ", date=" + text + " symbol=" + symbol ()+ "period=" +speriod); if (push) send notification (signal mr name + ": sell signal on ask=" +ask+ ", bid=" +bid+ ", date=" +text+ "symbol=" + symbol ()+ "period=" +speriod); } //--- } //+------------------------------------------------------------------+ //| Get the time range in string form | //+------------------------------------------------------------------+ Get the string time range ( ENUM_TIMEFRAMES approximate time) { //---- return ( string substring ( enumeration to string (approximate time), 7 , - 1 )); //---- }
  • Added several calls to the BuySignal() and SellSignal() functions after the indicator calculation period in the OnCalculate() block
     //--- BuySignal("Iin_MA_Signal_Alert", BuyBuffer, rates_total, prev_calculated, closing price, spread);
      SellSignal("Iin_MA_Signal_Alert",SellBuffer,rates_total,prev_calculated,closing,spread); //---
    

    Where BuyBuffer and SellBuffer are the names of the indicator buffers used to store buy and sell signals. Due to empty values ​​in the indicator buffer must be set to zero or EMPTY_VALUE.

    It is assumed that the only calls to the BuySignal() and SellSignal() functions will be used in the OnCalculate() block of the indicator code.

    Iin_MA_Signal_Alert - indicator for MetaTrader 5

    Figure 1. Iin_MA_Signal_Alert on the chart

    Iin_MA_Signal_Alert - indicator for MetaTrader 5

    Figure 2.Iin_MA_Signal_Alert. Generate alert


    Attachment download

    📎iin_ma_signal_alert.mq5 (27.17 KB)

    Source: MQL5 #21911

  • Verification code Refresh