iMA_Fibs_Above_v2

Download script
Author: Copyright � 2005, Metaquotes
iMA_Fibs_Above_v2

This tool is designed for traders who use Moving Averages to smooth out price action and identify trends. Its primary function is to calculate a central moving average line and then project several secondary levels above that line based on specific percentage values.

Core Functionality

1. Versatile Moving Average Selection The script allows you to choose between different types of moving averages depending on your trading style. It supports standard models such as:

  • Simple Moving Average (SMA)
  • Exponential Moving Average (EMA)
  • Smoothed Moving Average (SMMA)
  • Linear Weighted Moving Average (LWMA)
  • Least Squares Moving Average (LSMA)

2. Dynamic Fibonacci Level Projections Instead of just providing a single moving average line, this script takes that "base" average and creates seven additional support/resistance levels. It calculates these levels by adding specific values (defined as Fibonacci-style inputs) to the price of the moving average.

Essentially, if the moving average is the "anchor," the script draws a series of paths radiating upward from that anchor. These lines help traders visualize potential zones of interest or volatility corridors relative to the current trend.

How it Works on the Chart

  • The Anchor: The script constantly calculates the moving average based on the period you define (e.g., 14 periods).
  • The Expansion: For every point where the moving average is drawn, the script simultaneously calculates seven other points. It takes the value of the moving average at that specific moment and adds your chosen Fibonacci numbers to it.
  • Visual Output: This results in a "bundle" of lines moving across your chart. You can see the main trend line clearly, while the secondary lines provide a visual map of the price range based on the specific offsets you have entered in the settings.

Summary for Traders

This indicator is built for those who want to see more than just a single trend line. By combining a customizable moving average with multiple projected levels, it helps in identifying potential price "boundaries." It provides a comprehensive visual layout of where the price might react relative to the moving average's current position.

Indicators Used
Moving average indicator
Miscellaneous
Implements a curve of type %1
12 Views
0 Downloads
0 Favorites
iMA_Fibs_Above_v2
//+------------------------------------------------------------------+
//|                                                     iMA_Fibs.mq4 |
//|                                Copyright © 2006, Robert L Hill   |
//|                                     mailto:robydoby314@yahoo.com |
//+------------------------------------------------------------------+
// This indicator allows selection of MA type and sets levels based on Fib values
// Added MAType 4 to use LSMA
#property copyright "Copyright © 2005, Metaquotes"
#property link      "mailto:metaquotes@metaquotes.net"
//----
#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Red
#property indicator_color4 Red
#property indicator_color5 Red
#property indicator_color6 Red
#property indicator_color7 Red
#property indicator_color8 Red
#property indicator_width1  2
#property indicator_width2  1
#property indicator_width3  1
#property indicator_width4  1
#property indicator_width5  1
#property indicator_width6  1
#property indicator_width7  1
#property indicator_width8  1
//---- input parameters
extern int       MAPeriod=14;
extern int       MAType=1;
extern int fibo1=23;
extern int fibo2=38;
extern int fibo3=50;
extern int fibo4=62;
extern int fibo5=76;
extern int fibo6=100;
extern int fibo7=127;
//---- buffers
double LineBuffer[];
double Fib1[];
double Fib2[];
double Fib3[];
double Fib4[];
double Fib5[];
double Fib6[];
double Fib7[];
//---- variables
int    MAMode;
string strMAType;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+1);
//---- indicators
   IndicatorBuffers(8);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,LineBuffer);
   SetIndexDrawBegin(0,MAPeriod);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,Fib1);
   SetIndexDrawBegin(1,MAPeriod);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,Fib2);
   SetIndexDrawBegin(2,MAPeriod);
   SetIndexStyle(3,DRAW_LINE);
   SetIndexBuffer(3,Fib3);
   SetIndexDrawBegin(3,MAPeriod);
   SetIndexStyle(4,DRAW_LINE);
   SetIndexBuffer(4,Fib4);
   SetIndexDrawBegin(4,MAPeriod);
   SetIndexStyle(5,DRAW_LINE);
   SetIndexBuffer(5,Fib5);
   SetIndexDrawBegin(5,MAPeriod);
   SetIndexStyle(6,DRAW_LINE);
   SetIndexBuffer(6,Fib6);
   SetIndexDrawBegin(6,MAPeriod);
   SetIndexStyle(7,DRAW_LINE);
   SetIndexBuffer(7,Fib7);
   SetIndexDrawBegin(7,MAPeriod);
//---- name for DataWindow and indicator subwindow label
   IndicatorShortName( strMAType+ " (" +MAPeriod + ") ");
//----
   switch(MAType)
     {
      case 1: strMAType="EMA"; MAMode=MODE_EMA; break;
      case 2: strMAType="SMMA"; MAMode=MODE_SMMA; break;
      case 3: strMAType="LWMA"; MAMode=MODE_LWMA; break;
      case 4: strMAType="LSMA"; break;
      default: strMAType="SMA"; MAMode=MODE_SMA; break;
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double LSMA(int Rperiod, int shift)
  {
   int i;
   double sum;
   int length;
   double lengthvar;
   double tmp;
   double wt;
//---
   length=Rperiod;
   sum=0;
   for(i=length; i>=1 ;i--)
     {
      lengthvar=length + 1;
      lengthvar/=3;
      tmp=0;
      tmp =(i - lengthvar)*Close[length-i+shift];
      sum+=tmp;
     }
   wt=sum*6/(length*(length+1));
   return(wt);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   double MA;
   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;
//----
   for(int i=limit; i>=0; i--)
     {
      if (MAType==4)
        {
         MA=LSMA(MAPeriod,i);
        }
      else
        {
         MA=iMA(NULL,0,MAPeriod,0,MAMode,PRICE_CLOSE,i);
        }
      LineBuffer[i]=MA;
      Fib1[i]=MA + fibo1*Point;
      Fib2[i]=MA + fibo2*Point;
      Fib3[i]=MA + fibo3*Point;
      Fib4[i]=MA + fibo4*Point;
      Fib5[i]=MA + fibo5*Point;
      Fib6[i]=MA + fibo6*Point;
      Fib7[i]=MA + fibo7*Point;
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+

Comments