Super Signal v3all

Download script
Author: alterations by Money Duck @ 4xCampus.com
Super Signal v3all

This tool is designed as a visual trading indicator for the MetaTrader platform, specifically engineered to help traders identify potential entry and exit points in the financial markets. It functions by scanning price history to detect significant high and low points over two different rolling timeframes.

How the Logic Works

The script evaluates the market by looking at "peaks" (highs) and "valleys" (lows). It performs this analysis using two distinct windows of time:

  • Short-Term Window: Focuses on immediate price action.
  • Long-Term Window: Looks at a broader perspective of price movement.

By comparing these two perspectives, the tool differentiates between standard market movements and more significant shifts. When a new "peak" or "valley" is detected, the script calculates the distance of the move based on current market volatility (using an Average True Range calculation). This ensures that the signals adjust naturally to whether the market is moving calmly or experiencing high turbulence.

Visual Signals

The indicator places specific arrow icons on your chart to represent different types of market conditions:

  • Sell Signals: These appear above the price when the script identifies downward pressure.
  • Buy Signals: These appear below the price when the script identifies upward momentum.
  • Strength Differentiation: The logic distinguishes between "Minor" signals (potential entries or exits) and "Strong" signals (more significant shifts in trend).

Alert System and Customization

One of the primary features of this script is its notification system. It allows you to receive real-time alerts so you don't have to watch the charts constantly. The logic includes several layers of customization:

  1. Alert Types: You can configure the tool to notify you about everything, just "Buy" signals, just "Sell" signals, or only the "Strong" high-conviction signals.
  2. Notification Methods: Depending on your settings, the script can trigger a pop-up message on your screen, play an audible sound file, or send an email notification.
  3. Smart Filtering: The logic includes a "memory" function that prevents the tool from spamming you with the same alert multiple times on the same candle; it only triggers once per new price movement.

In summary, this script acts as a trend-following assistant that identifies high and low points across different time horizons, categorizes them by strength, and provides customizable notifications to help traders react to market shifts in real-time.

Indicators Used
Indicator of the average true range
Miscellaneous
Implements a curve of type %1It issuies visual alerts to the screenIt sends emailsIt plays sound alerts
12 Views
0 Downloads
0 Favorites
Super Signal v3all
//+------------------------------------------------------------------+
//|                                             super-signals_v2.mq4 |
//|                Copyright ?2006, Nick Bilak, beluck[AT]gmail.com  |
//|                               Modified by mtuppers[AT]gmail.com  |
//|			                            took away time, add periods  |
//+------------------------------------------------------------------+
#property copyright "Copyright ?2006, Nick Bilak"
#property copyright "alterations by Mark Tomlinson"
#property copyright "alterations by Money Duck @ 4xCampus.com"
#property link      "http://www.forex-tsd.com/"

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Yellow
#property indicator_color2 Lime
#property indicator_color3 Red
#property indicator_color4 Aqua
#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 1
#property indicator_width4 1

//input properties

extern int  dist2           = 21;
extern int  dist1           = 14;
extern bool alertsOn        = true;
extern string note1 = "alert all = 0",
              note2 = "buy only = 1, sell only = 2",
              note3 = "strong buy or strong sell = 3";
extern int alertsOption    = 0;
extern bool alertsOnCurrent = true;
extern bool alertsMessage   = true;
extern bool alertsSound     = true;
extern bool alertsEmail     = false;

double b1[];
double b2[];
double b3[];
double b4[];


int init()
{
   SetIndexBuffer(0,b1);
   SetIndexBuffer(1,b2);
   SetIndexBuffer(2,b3);
   SetIndexBuffer(3,b4);
   SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,334);
   SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,333);
   SetIndexStyle(2,DRAW_ARROW); SetIndexArrow(1,233);
   SetIndexStyle(3,DRAW_ARROW); SetIndexArrow(0,234);
   return(0);
}
int start()
{
   int counted_bars=IndicatorCounted();
   int i,limit,hhb,llb,hhb1,llb1;

   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
           limit=Bars-counted_bars;
           limit=MathMax(limit,dist1);
           limit=MathMax(limit,dist2);

   //
   //
   //
   //
   //

   for (i=limit;i>=0;i--)
      {
         hhb1 = Highest(NULL,0,MODE_HIGH,dist1,i-dist1/2);
         llb1 = Lowest(NULL,0,MODE_LOW,dist1,i-dist1/2);
         hhb  = Highest(NULL,0,MODE_HIGH,dist2,i-dist2/2);
         llb  = Lowest(NULL,0,MODE_LOW,dist2,i-dist2/2);

           // b1[i] = EMPTY_VALUE;
           // b2[i] = EMPTY_VALUE;
           // b3[i] = EMPTY_VALUE;
           // b4[i] = EMPTY_VALUE;
      
         double tr = iATR(NULL,0,50,i);
         if (i==hhb)  b1[i]=High[hhb] +tr;
         if (i==llb)  b2[i]=Low[llb]  -tr;
         if (i==hhb1) b3[i]=High[hhb1]+tr/2;
         if (i==llb1) b4[i]=Low[llb1] -tr/2;
      }
      
   //
   //
   //
   //
   //
   
   if (alertsOn)
      {
         int forBar = 1;
         if (alertsOnCurrent) forBar = 0;
         if (alertsOption == 0)  //alert on all direction
            {
            if (b1[forBar] != EMPTY_VALUE && b3[forBar] != EMPTY_VALUE) doAlert("strong sell");
            if (b1[forBar] != EMPTY_VALUE && b3[forBar] == EMPTY_VALUE) doAlert("sell");
            if (b1[forBar] == EMPTY_VALUE && b3[forBar] != EMPTY_VALUE) doAlert("minor sell or exit buy");
            if (b2[forBar] != EMPTY_VALUE && b4[forBar] != EMPTY_VALUE) doAlert("strong buy");
            if (b2[forBar] != EMPTY_VALUE && b4[forBar] == EMPTY_VALUE) doAlert("buy");
            if (b2[forBar] == EMPTY_VALUE && b4[forBar] != EMPTY_VALUE) doAlert("minor buy or exit sell");
            }
         if (alertsOption == 1)  //alert on buy only
            {
            if (b2[forBar] != EMPTY_VALUE && b4[forBar] != EMPTY_VALUE) doAlert("strong buy");
            if (b2[forBar] != EMPTY_VALUE && b4[forBar] == EMPTY_VALUE) doAlert("buy");
            if (b2[forBar] == EMPTY_VALUE && b4[forBar] != EMPTY_VALUE) doAlert("minor buy or exit sell");
            }
         if (alertsOption == 2)  //alert on sell only
            {
            if (b1[forBar] != EMPTY_VALUE && b3[forBar] != EMPTY_VALUE) doAlert("strong sell");
            if (b1[forBar] != EMPTY_VALUE && b3[forBar] == EMPTY_VALUE) doAlert("sell");
            if (b1[forBar] == EMPTY_VALUE && b3[forBar] != EMPTY_VALUE) doAlert("minor sell or exit buy");
            }
         if (alertsOption == 3)  //alert on strong buy or sell
            {
            if (b2[forBar] != EMPTY_VALUE && b4[forBar] != EMPTY_VALUE) doAlert("strong buy");
            if (b1[forBar] != EMPTY_VALUE && b3[forBar] != EMPTY_VALUE) doAlert("strong sell");
            }
      }
  return(0);
}

//
//
//
//
//

void doAlert(string doWhat)
{
   static string   previousAlert="nothing";
   static datetime previousTime;
   string message;
   string TimePeriod;
   
   if (Period()== 1)       TimePeriod = "1 MIN";
   if (Period()== 5)       TimePeriod = "5 MIN";
   if (Period()== 15)      TimePeriod = "15 MIN";
   if (Period()== 30)      TimePeriod = "30 MIN";
   if (Period()== 60)      TimePeriod = "1 HR";
   if (Period()== 240)     TimePeriod = "4 HR";
   if (Period()== 1440)    TimePeriod = "DAILY";
   if (Period()== 10080)   TimePeriod = "WEEKLY";
   if (Period()== 43200)   TimePeriod = "MONTHLY";

      if (previousAlert != doWhat || previousTime != Time[0]) {
          previousAlert  = doWhat;
          previousTime   = Time[0];

          //
          //
          //
          //
          //

          message =  StringConcatenate(Symbol()," at ", TimePeriod, " Super signal : ",doWhat);
             if (alertsMessage) Alert(message);
             if (alertsEmail)   SendMail(StringConcatenate(Symbol(),"Super signal "),message);
             if (alertsSound)   PlaySound("alert2.wav");
      }
}

Comments