Vegas1HR
Download scriptThis 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.
//+------------------------------------------------------------------+
//| 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