Vegas Currency Daily
Download scriptThe VegasCurrencyDaily script is a visual trading tool designed to help traders identify specific price levels and zones based on moving averages and mathematical offsets. It functions by layering "Risk Models" over the price action, providing a structured framework for monitoring potential entry or exit points.
Core Mechanics
The logic of the script revolves around two primary components:
1. Moving Average Foundation The tool calculates two distinct Exponential Moving Averages (EMA) based on the closing prices of the market:
- EMA 24: Provides a faster reference for current price trends.
- EMA 28: Serves as the primary baseline for the script's calculation logic.
2. Risk Model Offsets The script utilizes "Risk Models" to project specific price levels above and below the EMA 28 baseline. These offsets are based on specific numerical sequences (resembling Fibonacci-style spacing) and are categorized into four different modes:
- Model 1: Uses smaller, tighter intervals for more sensitive price monitoring.
- Models 2, 3, and 4: Progressively increase the distance of these levels, allowing traders to choose a "Risk Profile" that suits their specific trading style—ranging from conservative/tight levels to wider, more distant targets.
Visual and Data Output
Instead of just showing simple lines, the script calculates eight distinct price buffers (three above the baseline and three below). These are rendered as lines on your chart, creating a "grid" of significance around the moving average. Additionally, the script provides a real-time text summary in the corner of the chart, displaying the exact numerical values for all active models and averages so you can see the current price targets at a glance.
Alert System
The script includes an automated notification logic. It constantly monitors whether the current market price (the "Close") touches any of the calculated moving averages or the specific risk model levels. If the price interacts with these key levels, the script triggers an audible alert, ensuring that traders can react immediately to significant price actions without having to watch the screen every second.
//+------------------------------------------------------------------+
//| 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
#property indicator_color8 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)
{
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 #2 144,233,377
if(RiskModel==2)
{
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;
}
//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]+377*Point;
ExtMapBuffer4[i]=ExtMapBuffer2[i]+610*Point;
ExtMapBuffer5[i]=ExtMapBuffer2[i]+987*Point;
ExtMapBuffer6[i]=ExtMapBuffer2[i]-377*Point;
ExtMapBuffer7[i]=ExtMapBuffer2[i]-610*Point;
ExtMapBuffer8[i]=ExtMapBuffer2[i]-987*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