Carter_MA
Download scriptThis tool is designed to provide a comprehensive visual overview of market trends by simultaneously plotting five different moving averages on a single trading chart. By using these specific indicators, traders can better visualize the relationship between short-term price fluctuations and long-term price directions.
How It Works
The script identifies the "Exponential Moving Average" (EMA) for five distinct time horizons. Unlike a simple average, an exponential moving average places a higher weight on the most recent price data, making it more responsive to current market changes while still maintaining the context of historical trends.
The tool automatically calculates and displays the following five lines:
- Short-Term Trends (8 and 21): These move averages are highly reactive to recent price action, helping traders identify immediate momentum.
- Medium-Term Trends (50 and 100): These provide a bridge between immediate volatility and long-term stability, often used to identify structural shifts in the market.
- Long-Term Trend (200): This serves as a primary indicator of the overall health and direction of the market over an extended period.
Visual Layout
To help traders distinguish between these various layers of data, the script assigns unique visual styles to each line:
- The 8 EMA is displayed in a distinct solid color (Sienna).
- The 21 EMA appears as a solid Green line.
- The 50 EMA is rendered as a Blue line with a thickness of 2.
- The 100 EMA is represented by a Red dotted line.
- The 200 EMA is displayed as a thicker Red line (thickness of 3) to emphasize its importance as a major trend boundary.
By layering these five indicators together, the script allows you to see "the big picture." It enables you to observe whether the immediate price movement is aligned with, pulling away from, or crossing through the major historical trends established by these specific metrics.
//+------------------------------------------------------------------+
//| Carter MA.mq4 |
//| Copyright © 2006, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
//| This was my first indicator that I programmed for MetaTrader.
//| It's quite simple and plots 5 moving averages on your chart.
//| These 5 EMA's (8, 21, 50, 100, 200) are those that John Carter
//| uses personally on all of his charts.
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
#property indicator_chart_window
#property indicator_buffers 5
#property indicator_color1 Sienna
#property indicator_color2 Green
#property indicator_color3 Blue
#property indicator_color4 Red
#property indicator_color5 Red
//----
extern int ma1 = 8;
extern int ma2 = 21;
extern int ma3 = 50;
extern int ma4 = 100;
extern int ma5 = 200;
//----
double ma1_buffer [];
double ma2_buffer [];
double ma3_buffer [];
double ma4_buffer [];
double ma5_buffer [];
int a_begin;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
SetIndexStyle(0, DRAW_LINE);
SetIndexBuffer(0, ma1_buffer);
SetIndexLabel(0, "8 EMA");
//----
SetIndexStyle(1, DRAW_LINE);
SetIndexBuffer(1, ma2_buffer);
SetIndexLabel(1, "21 EMA");
//----
SetIndexStyle(2, DRAW_LINE,EMPTY,2);
SetIndexBuffer(2, ma3_buffer);
SetIndexLabel(2, "50 EMA");
//----
SetIndexStyle(3, DRAW_LINE,STYLE_DOT);
SetIndexBuffer(3, ma4_buffer);
SetIndexLabel(3, "100 EMA");
//----
SetIndexStyle(4, DRAW_LINE,EMPTY, 3);
SetIndexBuffer(4, ma5_buffer);
SetIndexLabel(4, "200 EMA");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars = IndicatorCounted();
//----
if(counted_bars < 0)
return(-1);
//----
if(counted_bars > 0)
counted_bars --;
int pos = Bars - counted_bars;
//----
while(pos >= 0)
{
ma1_buffer[pos] = iMA(NULL, 0, ma1, NULL, MODE_EMA, PRICE_CLOSE, pos);
ma2_buffer[pos] = iMA(NULL, 0, ma2, NULL, MODE_EMA, PRICE_CLOSE, pos);
ma3_buffer[pos] = iMA(NULL, 0, ma3, NULL, MODE_EMA, PRICE_CLOSE, pos);
ma4_buffer[pos] = iMA(NULL, 0, ma4, NULL, MODE_EMA, PRICE_CLOSE, pos);
ma5_buffer[pos] = iMA(NULL, 0, ma5, NULL, MODE_EMA, PRICE_CLOSE, pos);
pos--;
}
//----
return(0);
}
//+------------------------------------------------------------------+
Comments