Vegas Currency Daily

Download script
Author: Vegas
Vegas Currency Daily

The 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.

Indicators Used
Moving average indicator
Miscellaneous
Implements a curve of type %1It plays sound alerts
11 Views
0 Downloads
0 Favorites
Vegas Currency Daily
//+------------------------------------------------------------------+
//|                                           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