My-SSL_channel_chart_alert

Author: mladen
My-SSL_channel_chart_alert

This tool is designed to analyze market trends and provide visual cues regarding the current direction of price movement. By observing the relationship between the current market price and a moving average, it helps traders identify shifts in momentum between bullish (upward) and bearish (downward) phases.

Core Logic Overview

The script operates by calculating two specific boundaries based on a user-defined lookback period. These boundaries represent a smoothed average of the market's highs and lows. The primary objective of the logic is to determine which "channel" the price is currently interacting with to define the prevailing trend.

How it Works

  • Trend Identification: The script constantly monitors whether the current closing price is trading above or below specific calculated averages.
  • Dynamic Switching: When the price closes above a specific threshold, the logic flags an upward trend. Conversely, if the price drops below a corresponding threshold, it switches to a downward trend flag.
  • Visual Channeling: Based on these flags, the tool draws two lines on your chart. These lines act as a "channel" that adjusts dynamically:
    • In an upward trend, the lines represent the floor and ceiling of the current momentum.
    • In a downward trend, the lines flip to reflect the new price action boundaries.
  • Smart Switching: The tool ensures that these channels only transition when a definitive shift in price behavior is detected, preventing "flickering" or constant jumping between states during minor price fluctuations.

Alert System

Beyond visual representation, the script includes an automated notification system. It monitors for "trend flips"—the exact moment the logic switches from an upward to a downward state (or vice versa). When these specific transitions occur, the script can be configured to provide real-time notifications via:

  • On-Screen Pop-ups: Instant visual alerts on your trading platform.
  • Email Notifications: Sending a summary of the trend change directly to your inbox.
  • Audio Signals: Playing a sound file to notify you of a trend shift in real-time.

This logic is intended to help traders stay aligned with the broader market flow by clearly highlighting when the price structure has shifted from one direction to another.

Indicators Used
Moving average indicator
Miscellaneous
It issuies visual alerts to the screenIt sends emailsIt plays sound alerts
11 Views
0 Downloads
0 Favorites
My-SSL_channel_chart_alert
//+------------------------------------------------------------------+
//|                                            SSL channel chart.mq4 |
//|                                                           mladen |
//|                                                                  |
//| initial SSL for metatrader developed by Kalenzo                  |
//+------------------------------------------------------------------+
#property copyright "mladen"
#property link      "mladenfx@gmail.com"
//----
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Green
#property indicator_width1 2
#property indicator_width2 2
//----
extern int  Lb           =54;
extern bool alertsOn     =false;
extern bool alertsMessage=true;
extern bool alertsSound  =false;
extern bool alertsEmail  =false;
//----
double ssld[];
double sslu[];
double Hlv[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers(3);
   SetIndexBuffer(0,ssld); SetIndexDrawBegin(0,Lb+1);
   SetIndexBuffer(1,sslu); SetIndexDrawBegin(0,Lb+1);
   SetIndexBuffer(2,Hlv);
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted();
   int i,limit;
//----
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit=(Bars-counted_bars);
//----
   for(i=limit;i>=0;i--)
     {
      Hlv[i]=Hlv[i+1];
      if(Close[i]>iMA(Symbol(),0,Lb,0,MODE_SMA,PRICE_HIGH,i+1)) Hlv[i]= 1;
      if(Close[i]<iMA(Symbol(),0,Lb,0,MODE_SMA,PRICE_LOW,i+1))  Hlv[i]=-1;
      if(Hlv[i]==-1)
        {
         ssld[i]=iMA(Symbol(),0,Lb,0,MODE_SMA,PRICE_HIGH,i+1);
         sslu[i]=iMA(Symbol(),0,Lb,0,MODE_SMA,PRICE_LOW ,i+1);
        }
      else
        {
         ssld[i]=iMA(Symbol(),0,Lb,0,MODE_SMA,PRICE_LOW ,i+1);
         sslu[i]=iMA(Symbol(),0,Lb,0,MODE_SMA,PRICE_HIGH,i+1);
        }
     }
//----
   if (alertsOn)
      if (Hlv[0]!=Hlv[1])
         if (Hlv[0]==1)
            doAlert("up");
         else  doAlert("down");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void doAlert(string doWhat)
  {
   static string   previousAlert="nothing";
   static datetime previousTime;
   string message;
//----
     if (previousAlert!=doWhat || previousTime!=Time[0]) 
     {
      previousAlert =doWhat;
      previousTime  =Time[0];
//----
      message= StringConcatenate(Symbol()," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," SSL trend changed to ",doWhat);
      if (alertsMessage) Alert(message);
      if (alertsEmail)   SendMail(StringConcatenate(Symbol(),"SSL "),message);
      if (alertsSound)   PlaySound("alert2.wav");
     }
  }
//+------------------------------------------------------------------+

Comments