Author: Mr.Bah
Vegas1HR

This script is a specialized technical analysis tool designed for the MetaTrader platform to help traders visualize price trends and identify potential levels of interest based on moving averages. Rather than using standard indicators in isolation, it creates a dynamic "zone" or "map" around the current market price to assist in identifying structural shifts.

Core Logic and Functionality

1. Trend Foundation (Moving Averages) The script begins by calculating two primary Exponential Moving Averages (EMAs): one based on 144 periods and another on 169 periods. These two lines serve as the core "spine" of the indicator, representing the medium-to-long-term trend of the asset being traded.

2. The Risk Models (Dynamic Mapping) The most unique feature of this script is its "Risk Model" system. Depending on which model the user selects (from 1 to 4), the script automatically projects a series of specific price offsets both above and below the primary 169 EMA.

These models provide different levels of sensitivity:

  • Model 1: Uses smaller, tighter increments for more frequent signals.
  • Models 2 through 4: Gradually increase the distance of these projected levels, moving from conservative to more aggressive risk profiles.

Essentially, these models create a "grid" of price levels. When the market price moves, these lines act as visual markers to show how far the price has deviated from the trend and where it might be heading next.

3. Real-Time Data Visualization The script performs several actions simultaneously on the chart:

  • Visual Mapping: It draws multiple lines on your chart representing these various risk levels, allowing you to see the "map" of the current market environment at a glance.
  • On-Screen Dashboard: It provides a real-time text comment on the screen. This shows the exact numerical values of the primary EMAs and all the projected risk levels (F+1 through F-3), giving the trader precise data points without having to hover over the lines.

4. Automated Alerts To ensure the trader does not have to watch the screen at all times, the script includes an automated alert system. It monitors the current market price in real-time; if the price "touches" or intersects with any of the primary EMAs or any of the projected risk levels defined by the chosen model, the software will trigger an audible notification (an alert sound).

Summary for the User

Think of this tool as a navigation system for price action. It identifies the main trend using moving averages and then builds a "highway map" of support and resistance zones around that trend. By switching between Risk Models, you can customize how wide or narrow those zones are to fit your specific trading style.

Indicators Used
Moving average indicator
Miscellaneous
Implements a curve of type %1It plays sound alerts
14 Views
0 Downloads
0 Favorites
Vegas1HR
//+------------------------------------------------------------------+
//|                                                        Vegas.mq4 |
//|                                                           Mr.Bah |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Mr.Bah"
#property link      ""

#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 Green
#property indicator_color2 Blue
#property indicator_color3 Red
#property indicator_color4 Red
#property indicator_color5 Red
#property indicator_color6 Red
#property indicator_color7 Red
#property indicator_color8 Red
//---- input parameters
extern bool      Alerts=true;
extern int       RiskModel=1;
extern int       MA1=144;
extern int       MA2=169;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
double ExtMapBuffer4[];
double ExtMapBuffer5[];
double ExtMapBuffer6[];
double ExtMapBuffer7[];
double ExtMapBuffer8[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,ExtMapBuffer3);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,ExtMapBuffer4);
   SetIndexStyle(4,DRAW_LINE);
   SetIndexBuffer(4,ExtMapBuffer5);
   SetIndexStyle(5,DRAW_LINE);
   SetIndexBuffer(5,ExtMapBuffer6);
   SetIndexStyle(6,DRAW_LINE);
   SetIndexBuffer(6,ExtMapBuffer7);
   SetIndexStyle(7,DRAW_LINE);
   SetIndexBuffer(7,ExtMapBuffer8);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int limit;
   int    counted_bars=IndicatorCounted();
  //---- check for possible errors
   if(counted_bars<0) return(-1);
  //---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
  //---- main loop
     for(int i=0; i<limit; i++)
       {
        //---- ma_shift set to 0 because SetIndexShift called abowe
         ExtMapBuffer1[i]=iMA(NULL,0,144,0,MODE_EMA,PRICE_CLOSE,i);
         ExtMapBuffer2[i]=iMA(NULL,0,169,0,MODE_EMA,PRICE_CLOSE,i);
         
         //Model #1 34,55,89
         if(RiskModel==1)
         {
            ExtMapBuffer3[i]=ExtMapBuffer2[i]+34*Point;
            ExtMapBuffer4[i]=ExtMapBuffer2[i]+55*Point;
            ExtMapBuffer5[i]=ExtMapBuffer2[i]+89*Point;
            
            ExtMapBuffer6[i]=ExtMapBuffer2[i]-34*Point;
            ExtMapBuffer7[i]=ExtMapBuffer2[i]-55*Point;
            ExtMapBuffer8[i]=ExtMapBuffer2[i]-89*Point;    
         }
         
         //Model #2 55,89,144
         if(RiskModel==2)
         {
            ExtMapBuffer3[i]=ExtMapBuffer2[i]+55*Point;
            ExtMapBuffer4[i]=ExtMapBuffer2[i]+89*Point;
            ExtMapBuffer5[i]=ExtMapBuffer2[i]+144*Point;
            
            ExtMapBuffer6[i]=ExtMapBuffer2[i]-55*Point;
            ExtMapBuffer7[i]=ExtMapBuffer2[i]-88*Point;
            ExtMapBuffer8[i]=ExtMapBuffer2[i]-144*Point;    
         }
         
          //Model #3 89,144,233
         if(RiskModel==3)
         {
            ExtMapBuffer3[i]=ExtMapBuffer2[i]+89*Point;
            ExtMapBuffer4[i]=ExtMapBuffer2[i]+144*Point;
            ExtMapBuffer5[i]=ExtMapBuffer2[i]+233*Point;
            
            ExtMapBuffer6[i]=ExtMapBuffer2[i]-89*Point;
            ExtMapBuffer7[i]=ExtMapBuffer2[i]-144*Point;
            ExtMapBuffer8[i]=ExtMapBuffer2[i]-233*Point;    
         }
         
          //Model #4 144,233,377
         if(RiskModel==4)
         {
            ExtMapBuffer3[i]=ExtMapBuffer2[i]+144*Point;
            ExtMapBuffer4[i]=ExtMapBuffer2[i]+233*Point;
            ExtMapBuffer5[i]=ExtMapBuffer2[i]+377*Point;
            
            ExtMapBuffer6[i]=ExtMapBuffer2[i]-144*Point;
            ExtMapBuffer7[i]=ExtMapBuffer2[i]-233*Point;
            ExtMapBuffer8[i]=ExtMapBuffer2[i]-377*Point;    
         }
         
         Comment("\nRISK MODEL #",RiskModel," (1-4)\n\nEMA144 - ",ExtMapBuffer1[limit],"\nEMA169 - ",ExtMapBuffer2[limit], 
         "\n\nF+1 - ",ExtMapBuffer3[limit],"\nF+2 - ",ExtMapBuffer4[limit],
         "\nF+3 - ",ExtMapBuffer5[limit],"\n\nF-1 - ",ExtMapBuffer6[limit],
         "\nF-2 - ",ExtMapBuffer7[limit],"\nF-3 - ",ExtMapBuffer8[limit]);
       }
       
       //+--------------------------------------------------------------------------+
       //-                          ALERTS    PlaySound("alert.wav");               -
       //+--------------------------------------------------------------------------+
      if(Alerts)
      {
         if(Close[i]==ExtMapBuffer1[i] || Close[i]==ExtMapBuffer2[i])
         {
            PlaySound("alert.wav");
         }
         if(Close[i]==ExtMapBuffer3[i] || Close[i]==ExtMapBuffer4[i] || Close[i]==ExtMapBuffer5[i])
         {
            PlaySound("alert.wav");
         }
         if(Close[i]==ExtMapBuffer6[i] || Close[i]==ExtMapBuffer7[i] || Close[i]==ExtMapBuffer8[i])
         {
            PlaySound("alert.wav");
         }
      }
         
  //---- done

//---- 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+

Comments