RAVI FX Fisher_001

Download script
Author: Copyright � 2005, Luis Guilherme Damiani
RAVI FX Fisher_001

The RAVI FX Fisher is a technical analysis tool designed to help traders visualize market momentum and price velocity in a clear, consolidated format. Instead of looking at raw price movements, this script translates complex market data into a smooth oscillating line that highlights the strength of current trends.

How it Works

The core logic of the script relies on comparing two different moving averages—one that reacts quickly to price changes (the fast average) and one that tracks long-term trends (the slow average). By calculating the difference between these two, the tool determines the "velocity" of the market.

To ensure the data is relevant across different types of assets (like different currencies or commodities), the script automatically adjusts for market volatility. This means the indicator remains consistent and readable regardless of whether the market is moving aggressively or quietly.

Key Features and Visuals

  • The Momentum Line: The primary output is a flowing line that moves between specific boundaries. It serves as a visual representation of where the market's "energy" currently sits.
  • Dynamic Scaling: The script includes an optional mathematical conversion (the IFT toggle) that helps smooth out the data, making it easier to identify significant shifts in trend without being distracted by minor price noise.
  • Trigger Zones: The tool establishes clear upper and lower horizontal boundaries (trigger levels). These act as visual benchmarks:
    • When the momentum line approaches or exceeds these boundaries, it indicates a high-intensity move in the market.
    • When the line stays within these zones, it suggests a more neutral or consolidating environment.

Summary for Traders

Essentially, this indicator acts as a "speedometer" for price action. It strips away the clutter of standard charts to show you the underlying force behind a movement. By monitoring how the momentum line interacts with the upper and lower trigger boundaries, traders can better identify when a trend is gaining significant strength or potentially losing steam.

Indicators Used
Indicator of the average true rangeMoving average indicator
Miscellaneous
Implements a curve of type %1
12 Views
0 Downloads
0 Favorites
RAVI FX Fisher_001
//+------------------------------------------------------------------+
//|                                               RAVI FX Fisher.mq4 |
//|                         Copyright © 2005, Luis Guilherme Damiani |
//|                                      http://www.damianifx.com.br |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, Luis Guilherme Damiani"
#property link      "http://www.damianifx.com.br"

#property indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 MediumSeaGreen
#property indicator_color2 MediumVioletRed
#property indicator_color3 MediumVioletRed
//---- input parameters
extern int       MAfast=4;
extern int       MAslow=49;
extern double trigger=0.07;
extern int       maxbars=500;
extern bool apply_IFT=true;

//---- buffers
double RAVIfxFishBuffer[];
double LoTrigBuff[];
double HiTrigBuff[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,RAVIfxFishBuffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,LoTrigBuff);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,HiTrigBuff);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+

int start()
  {
      int    counted_bars=IndicatorCounted();
      double MAValue=0;
      double IFish=0;
      //---- check for possible errors
      if(counted_bars<0) return(-1);
      int limit=Bars-counted_bars;
      if(limit>maxbars)limit=maxbars;
      if (limit>Bars-MAslow-1)limit=Bars-MAslow-1;   
      //---- 
      for (int shift = 0; shift<=limit;shift++)
      {
	     //if period >70 then {LoTrigger=-0.15;HiTrigger=0.15;}else {LoTrigger=-0.07;HiTrigger=0.07;};
	
	     MAValue = 100 * (iMA(NULL,0,MAfast,0,MODE_LWMA,PRICE_TYPICAL,shift) - iMA(NULL,0,MAslow,0,MODE_LWMA,PRICE_TYPICAL,shift))*iATR(NULL,0,MAfast,shift)
	              /iMA(NULL,0,MAslow,0,MODE_LWMA,PRICE_TYPICAL,shift)/iATR(NULL,0,MAslow,shift);
	     if(apply_IFT)IFish=(MathExp(2*MAValue)-1)/(MathExp(2*MAValue)+1);
	     else IFish=MAValue;
	    
	    
         RAVIfxFishBuffer[shift]=IFish;
         LoTrigBuff[shift]=-trigger;
         HiTrigBuff[shift]=trigger;
       }
   
//----
   return(0);
  }
//+------------------------------------------------------------------+

Comments