4hVegasMetaTraderWeeklyIndicator(1)

Download script
Author: Spiggy
4hVegasMetaTraderWeeklyIndicator(1)

This tool is designed to analyze and visualize the momentum of the weekly market trend by calculating the relationship between two specific moving averages. Instead of just showing where the price is, it focuses on the "speed" and "direction" of the trend change.

Core Logic Overview

The script works by comparing a fast-moving average (which reacts quickly to recent price changes) against a slower-moving average (which represents the broader, long-term trend). By calculating the gap between these two averages, the tool determines whether the market momentum is accelerating or decelerating.

How it Identifies Market Movement

The tool performs a three-step logic process for every candle on your chart:

  1. Trend Comparison: It identifies the current difference between the 5-period Simple Moving Average and the 21-period Exponential Moving Average.
  2. Momentum Tracking: It compares that current difference to the difference from the previous period. This allows the script to see if the gap is widening, narrowing, or flipping directions.
  3. Directional Signaling:
    • If the momentum gap is increasing in a positive direction, the tool identifies an "UP" trend.
    • If the momentum gap is decreasing or moving into negative territory, it identifies a "DOWN" trend.

Visual Outputs

To make this data easy to read at a glance, the script translates these mathematical differences into visual elements:

  • Trend Line: Provides a continuous visual of the raw difference between the two averages.
  • Histogram Bars: These act as directional signals. They appear only when there is a confirmed change in momentum, effectively highlighting "Up" movements in one color and "Down" movements in another, allowing you to see the strength of the current move instantly.

Data Management

Beyond the visual chart, the script includes an automated logging feature. It identifies the specific week on the calendar and saves a unique value representing that week's direction. This ensures that the data remains consistent and can be referenced by the system as a permanent record of the market's weekly behavior.

Indicators Used
Moving average indicator
Miscellaneous
Implements a curve of type %1
18 Views
0 Downloads
0 Favorites
4hVegasMetaTraderWeeklyIndicator(1)
//+------------------------------------------------------------------+
//| 4Hour Vegas Model - Weekly Chart Direction Calculator            |
//|                                                           Spiggy |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Spiggy"
#property link      ""

#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_color2 Green
#property indicator_color3 Red

//---- input parameters

//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexStyle(2,DRAW_HISTOGRAM);
   SetIndexBuffer(2,ExtMapBuffer3);

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
  int    limit;
  int    i;
  int    counted_bars=IndicatorCounted();
  double EMA21;
  double SMA5;
  double EMA21Prev;
  double SMA5Prev;
  string ValueIndex;
  string Direction;
  string KeyValue;
   
  // Always prepare all of the information for the other indicators
  if(counted_bars<0) return(-1);

  if(counted_bars>0) counted_bars--;
  limit=Bars-counted_bars;
  
  //---- main loop
  for(i=limit; i>=0; i--)
  {
    //---- Calculate the current weekly trend
    EMA21=iMA(NULL,0,21,0,MODE_EMA,PRICE_MEDIAN,i);
    SMA5 =iMA(NULL,0,5,0,MODE_SMA,PRICE_MEDIAN,i);
         
    //---- Calculate the previous weekly trend
    EMA21Prev=iMA(NULL,0,21,0,MODE_EMA,PRICE_MEDIAN,i+1);
    SMA5Prev =iMA(NULL,0,5,0,MODE_SMA,PRICE_MEDIAN,i+1);

    // Calculate the difference of the MAs
    ExtMapBuffer1[i] = SMA5-EMA21;

    // Calculate the difference of the MAs
    if (((SMA5-EMA21) - (SMA5Prev-EMA21Prev)) > 0.0 )
    {
      ExtMapBuffer2[i] = (SMA5-EMA21) - (SMA5Prev-EMA21Prev);
      ExtMapBuffer3[i] = 0.0;
      Direction = "UP";
    }
    
    if (((SMA5-EMA21) - (SMA5Prev-EMA21Prev)) < 0.0 )
    {
      ExtMapBuffer2[i] = 0.0;
      ExtMapBuffer3[i] = (SMA5-EMA21) - (SMA5Prev-EMA21Prev);
      Direction = "DOWN";
    }
    
    // Calculate the start of the week and publish the value in a global variable
    // Publish this with the previous Sunday as the index
    ValueIndex = TimeToStr(Time[i]-TimeDayOfWeek(Time[i]),TIME_DATE);
    KeyValue = Symbol() + "-ThisWeekDirection-" + ValueIndex;
    if (! GlobalVariableCheck(KeyValue))
    GlobalVariableSet(KeyValue, ((SMA5-EMA21) - (SMA5Prev-EMA21Prev)));
    Print("Key: " + KeyValue + " = " + DoubleToStr(((SMA5-EMA21) - (SMA5Prev-EMA21Prev)),4));
  }
         
   return(0);
  }
//+------------------------------------------------------------------+

Comments