VWB
Download scriptThis tool is designed to provide traders with a visual and auditory mapping of price levels based on specific mathematical models. It functions by calculating moving averages and extending them into various "Risk Models" to help identify potential zones of interest or support and resistance.
Core Logic and Functionality
Trend Analysis via Moving Averages The script begins by tracking two primary Exponential Moving Averages (EMA) based on the closing prices of the market. These serve as the foundation for all other calculations. By observing these averages, the tool helps establish the general direction of the current market trend.
Dynamic Risk Modeling The core strength of this script is its ability to switch between four distinct "Risk Models." Depending on which model you select, the script calculates specific price levels (labeled as F+ and F-) relative to the secondary moving average.
- Model Variation: Each model uses different mathematical offsets. For example, Model 1 provides much tighter, more sensitive price levels, while Model 4 provides much wider, broader price zones.
- Upper and Lower Boundaries: For every model, the script projects three upward levels (representing potential targets or upper limits) and three downward levels (representing potential support or lower limits).
Visual and Real-Time Data The script handles several automated tasks to keep the user informed:
- Chart Visualization: It draws these calculated lines directly on your trading chart, allowing you to see the mathematical "boundaries" in real-time.
- On-Screen Dashboard: It provides a live text summary on the chart display. This dashboard shows the current values of all active moving averages and every specific price level for your chosen Risk Model, giving you an immediate data snapshot without having to hover over lines.
Automated Alerts To ensure you don't miss critical price actions, the script includes an integrated alert system. If the current market price touches or crosses any of the calculated moving averages or the specific risk model levels, the software will trigger an audio notification. This allows traders to monitor multiple price points simultaneously without needing to watch the screen constantly.
//+------------------------------------------------------------------+
//| VegasCurrencyDaily.mq4 |
//| "Vegas" |
//| |
//+------------------------------------------------------------------+
#property copyright "Vegas"
#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
//---- input parameters
extern bool Alerts=true;
extern int RiskModel=1;
extern int MA1=24;
extern int MA2=28;
//---- 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,24,0,MODE_EMA,PRICE_CLOSE,i);
ExtMapBuffer2[i]=iMA(NULL,0,28,0,MODE_EMA,PRICE_CLOSE,i);
//Model #1 89,144,233
if(RiskModel==1)
{
ExtMapBuffer5[i]=ExtMapBuffer2[i]+34*Point;
ExtMapBuffer5[i]=ExtMapBuffer2[i]+21*Point;
ExtMapBuffer5[i]=ExtMapBuffer2[i]+12*Point;
ExtMapBuffer8[i]=ExtMapBuffer2[i]-12*Point;
ExtMapBuffer8[i]=ExtMapBuffer2[i]-21*Point;
ExtMapBuffer8[i]=ExtMapBuffer2[i]-34*Point;
}
//Model #2 144,233,377
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]-89*Point;
ExtMapBuffer8[i]=ExtMapBuffer2[i]-144*Point;
}
//Model #3 233,377,610
if(RiskModel==3)
{
ExtMapBuffer3[i]=ExtMapBuffer2[i]+233*Point;
ExtMapBuffer4[i]=ExtMapBuffer2[i]+377*Point;
ExtMapBuffer5[i]=ExtMapBuffer2[i]+610*Point;
ExtMapBuffer6[i]=ExtMapBuffer2[i]-233*Point;
ExtMapBuffer7[i]=ExtMapBuffer2[i]-377*Point;
ExtMapBuffer8[i]=ExtMapBuffer2[i]-610*Point;
}
//Model #4 377,610,987
if(RiskModel==4)
{
ExtMapBuffer3[i]=ExtMapBuffer2[i]+987*Point;
ExtMapBuffer4[i]=ExtMapBuffer2[i]+1597*Point;
ExtMapBuffer5[i]=ExtMapBuffer2[i]+2584*Point;
ExtMapBuffer6[i]=ExtMapBuffer2[i]-987*Point;
ExtMapBuffer7[i]=ExtMapBuffer2[i]-1597*Point;
ExtMapBuffer8[i]=ExtMapBuffer2[i]-2584*Point;
}
Comment("\nRISK MODEL #",RiskModel," (1-4)\n\nEMA24 - ",ExtMapBuffer1[limit],"\nEMA28 - ",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