Z-Z1 LA Best Alert Next Bar-m15

Download script
Author: Copyright � 2005, MetaQuotes Software Corp.
Z-Z1  LA  Best  Alert Next Bar-m15

This script functions as a sophisticated visual and audible trend-tracking tool designed to identify significant price turning points on a trading chart. By filtering out minor market noise, it highlights the "peaks" and "valleys" of price action, allowing traders to see the underlying structure of the market more clearly.

Core Functionality

The script employs a multi-layered logic system to determine when the market has reached a true high or low:

  • Dynamic Range Detection: Instead of marking every small price movement, the tool looks at a specific window of previous data (the "Depth"). It only acknowledges a new peak or valley if the price movement exceeds a predefined threshold (Deviation). This ensures that minor fluctuations do not trigger false signals.
  • Point Filtering: The logic includes a "Backstep" mechanism. This acts as a verification layer that checks nearby candles to ensure that the identified high or low is indeed the absolute most extreme point in that specific area. It effectively "cleans" the data so that only the most significant points remain.
  • Peak & Valley Coordination: The script maintains two separate tracking systems—one for highs and one for lows. It ensures these points alternate correctly (e.g., a high must be followed by a low), providing a continuous, zigzag-like path of market momentum.

Automated Analysis & Alerts

Beyond just drawing shapes on the chart, the script performs active monitoring:

  • Trend Verification: The tool automatically calculates the direction between the two most recent identified points. It determines whether the market is moving upward or downward by comparing these coordinates.
  • Real-Time Notifications: When a new significant turning point is confirmed, the script triggers an immediate alert system. This includes a visual pop-up notification on the platform and an audible sound alert to capture the trader's attention instantly.
  • Contextual Awareness: The alerts are designed to provide specific context, identifying exactly which time frame and currency pair triggered the signal, helping the trader stay informed even when they are not staring directly at the screen.

Summary of User Experience

For a trader, this script serves as an automated "market map." It automatically ignores the "noise" of constant small price changes and only alerts the user when the market makes a meaningful move in a specific direction. By highlighting these structural shifts with visual markers and sound cues, it helps in identifying potential entry or exit zones based on established trend reversals.

Miscellaneous
Implements a curve of type %1It issuies visual alerts to the screenIt plays sound alerts
14 Views
0 Downloads
0 Favorites
Z-Z1 LA Best Alert Next Bar-m15
//+------------------------------------------------------------------+
//|                                       Z1.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Lime

//---- input parameters
extern bool AlarmWithBox = false;
extern string SoundWAV = "Yehaw.wav";


//---- indicator parameters
extern int ExtDepth=33;  //Best on 15M chart.
extern int ExtDeviation=5;
extern int ExtBackstep=3;
extern int barn=1500;
extern int from=0;
//---- indicator buffers
double ExtMapBuffer[];
double ExtMapBuffer2[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers(2);
//---- drawing settings
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,108);
//---- indicator buffers mapping
   SetIndexBuffer(0,ExtMapBuffer);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexEmptyValue(0,0.0);
   ArraySetAsSeries(ExtMapBuffer,true);
   ArraySetAsSeries(ExtMapBuffer2,true);
//---- indicator short name
   IndicatorShortName("ZigZag("+ExtDepth+","+ExtDeviation+","+ExtBackstep+")");
//---- initialization done
   return(0);
  }
  
datetime last_time = 0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int    shift=barn, back,lasthighpos,lastlowpos;
   double val,res;
   double curlow,curhigh,lasthigh,lastlow;

   for(shift=barn-ExtDepth; shift>from; shift--){
      val=Low[Lowest(NULL,0,MODE_LOW,ExtDepth,shift)];
      if(val==lastlow) 
         val=0.0;
      else { 
         lastlow=val; 
         if((Low[shift]-val)>(ExtDeviation*Point)) 
            val=0.0;
         else{
            for(back=1; back<=ExtBackstep; back++){
               res=ExtMapBuffer[shift+back];
               if((res!=0)&&(res>val)) ExtMapBuffer[shift+back]=0.0; 
               }
            }
         } 
      ExtMapBuffer[shift]=val;
      //--- high
      val=High[Highest(NULL,0,MODE_HIGH,ExtDepth,shift)];
      if(val==lasthigh) 
         val=0.0;
      else{
         lasthigh=val;
         if((val-High[shift])>(ExtDeviation*Point)) 
            val=0.0;
         else{
            for(back=1; back<=ExtBackstep; back++){
               res=ExtMapBuffer2[shift+back];
               if((res!=0)&&(res<val)) ExtMapBuffer2[shift+back]=0.0; 
               } 
            }
         }
      ExtMapBuffer2[shift]=val;
      }

   // final cutting 
   lasthigh=-1; lasthighpos=-1;
   lastlow=-1;  lastlowpos=-1;

   for(shift=barn-ExtDepth; shift>from; shift--){
      curlow=ExtMapBuffer[shift];
      curhigh=ExtMapBuffer2[shift];
      if((curlow==0)&&(curhigh==0)) continue;
      //---
      if(curhigh!=0){
         if(lasthigh>0){
            if(lasthigh<curhigh) ExtMapBuffer2[lasthighpos]=0;
            else ExtMapBuffer2[shift]=0;
            }
         //---
         if(lasthigh<curhigh || lasthigh<0){
            lasthigh=curhigh;
            lasthighpos=shift;
            }
         lastlow=-1;
         }
      //----
      if(curlow!=0){
         if(lastlow>0){
            if(lastlow>curlow) ExtMapBuffer[lastlowpos]=0;
            else ExtMapBuffer[shift]=0;
            }
         //---
         if((curlow<lastlow)||(lastlow<0)){
            lastlow=curlow;
            lastlowpos=shift;
            } 
         lasthigh=-1;
         }
      }
  
   for(shift=barn-1; shift>from; shift--){
      if(shift>=barn-ExtDepth) ExtMapBuffer[shift]=0.0;
      else{
         res=ExtMapBuffer2[shift];
         if(res!=0.0) ExtMapBuffer[shift]=res;
         }
      }
   int last_found[2],f = 0; 
   for(shift=from+1; f<2 && shift<barn; shift++){
      if(ExtMapBuffer[shift]!=0){
         last_found[f] = shift;
         f++;
         }
      }
   if(f>0){
      if(last_time != Time[last_found[0]]){
         last_time = Time[last_found[0]];
         double dir = ExtMapBuffer[last_found[0]]-ExtMapBuffer[last_found[1]];
         if(dir>0){
            Alert("Green Dot["+Period()+"] at "+Symbol()+",bar = "+last_found[0]);
              // Alert("Line 1 Message here :", " SELL " ,Symbol() ," at ", Close[0] ; //, " \nStop Loss: " , val5 , " Exit Target: " , val3 , " | TIME FRAME : " ,Period(),"2nd message here?? !");
           	     PlaySound(SoundWAV);
	  }	  
         else if(dir<0)
         {
            Alert("Green Dot ["+Period()+"] at "+Symbol()+",bar = "+last_found[0]);
            //Alert("Line 2 Message here :", " SELL " ,Symbol() ," at ", Close[0] ; //, " \nStop Loss: " , val5 , " Exit Target: " , val3 , " | TIME FRAME : " ,Period(),"2nd message here?? !");

           	  	     PlaySound(SoundWAV);
	  }	  
         else if(f==1)
         {
            Alert("Found Green Dot Z-Z1["+Period()+"] at "+Symbol()+",bar = "+last_found[0]);
               //Alert("Line 3 Message here :", " SELL " ,Symbol() ," at ", Close[0] ; //, " \nStop Loss: " , val5 , " Exit Target: " , val3 , " | TIME FRAME : " ,Period(),"2nd message here?? !");
           	 	     PlaySound(SoundWAV);
	        }
         }
      }
}

Comments