RAVI FX Fisher_v5

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

This indicator is designed to provide traders with a visual tool that captures the momentum and relative strength of price movements by comparing two different moving averages. Instead of just looking at the raw price, it analyzes the "gap" between fast-moving trends and slower-moving trends to help identify shifts in market sentiment.

How the Logic Works

1. Trend Comparison The script looks at two specific types of moving averages: a "fast" one (sensitive to recent price changes) and a "slow" one (representing the broader trend). By calculating the difference between these two, the tool identifies whether the current market momentum is accelerating upward, slowing down, or pulling back.

2. Volatility Adjustment To ensure that the data isn't distorted by sudden spikes in price or periods of extreme quiet, the logic incorporates a volatility measurement (ATR). This standardizes the readings, making it easier to see meaningful trend changes regardless of whether the market is currently very volatile or relatively stable.

3. The Momentum Conversion The core "magic" of this script lies in how it converts these calculations into a readable visual format. It takes the raw difference between the trends and passes it through a mathematical formula that compresses the data into a specific range. This results in a histogram that oscillates, making it easier for a trader to see at a glance whether the momentum is positive or negative.

4. Visual Signals and Thresholds The indicator displays three distinct visual elements:

  • The Histogram: This represents the actual calculated momentum of the market.
  • Upper and Lower Boundaries: The script creates fixed horizontal "trigger" lines. These act as boundaries. When the histogram moves outside of these lines, it suggests that the momentum has reached a significant level, potentially signaling a point of interest for entry or exit.

Summary for Traders

In simple terms, this tool acts like a speedometer for market trends. It filters out the "noise" of daily price fluctuations to show you the underlying strength of the current move. By watching how the histogram interacts with the trigger lines, traders can better identify when a trend is gaining significant power or when it may be losing steam.

Indicators Used
Indicator of the average true rangeMoving average indicator
Miscellaneous
Implements a curve of type %1
13 Views
0 Downloads
0 Favorites
RAVI FX Fisher_v5
//+------------------------------------------------------------------+
//|                                               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;
//---- buffers
double RAVIfxFishBuffer[];
double LoTrigBuff[];
double HiTrigBuff[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_HISTOGRAM);
   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);
      IFish=(MathExp(2*MAValue)-1)/(MathExp(2*MAValue)+1);
//----
      RAVIfxFishBuffer[shift]=IFish;
      LoTrigBuff[shift]=-trigger;
      HiTrigBuff[shift]=trigger;
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+

Comments