Does anyone have a "Fisher" Indicator that works?

 

Hello folks. I have been researching Indicators and am very impressed with how well this "Fisher" Indicator works. The problem though is it seems to lose its mind on some of the charts you attach it too. Is there another version of this Indicator out there or a script to refresh this Indicator from time to time so it paints correcly. It cannot be used in an EA the way it is acting but when your refresh it manually it is pretty amazing. See attached file. It is not in MQL4 format though. I'd like to get my hands on a real good Fisher Indicator if anyone has one to share.

Cheers

Shayne

Files:
fisher.zip  3 kb
fisher.ex4  4 kb
 
//+------------------------------------------------------------------+
//|                                              FisherTransform.mq4 |
//|                                                                  |
//| Fisher Transform                                                 |
//|                                                                  |
//| Algorithm taken from book                                        |
//|     "Cybernetics Analysis for Stock and Futures"                 |
//| by John F. Ehlers                                                |
//|                                                                  |
//|                                              contact@mqlsoft.com |
//|                                          http://www.mqlsoft.com/ |
//+------------------------------------------------------------------+
#property copyright "Coded by Witold Wozniak"
#property link      "www.mqlsoft.com"
 
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
 
#property indicator_level1 0
 
double Fisher[];
double Trigger[];
double Value1[];
 
extern int Length = 10;
int buffers = 0;
int drawBegin = 0;
 
int init() {
    if (Length < 3) Length = 3;
    drawBegin = Length;      
    initBuffer(Fisher, "Fisher", DRAW_LINE);
    initBuffer(Trigger, "Trigger", DRAW_LINE);
    initBuffer(Value1);
    IndicatorBuffers(buffers);
    IndicatorShortName("Fisher Tranform [" + Length + "]");
    return (0);
}
  
int start() {
    if (Bars <= Length)  return (0);
    int countedBars = IndicatorCounted();
    if (countedBars < 0) return (-1);
    if (countedBars > 0) countedBars--;
    int s, limit = Bars - countedBars - 1;
    for (s = limit; s >= 0; s--) {
        double price = P(s);
        double MaxH = price;
        double MinL = price;
        for (int i = 0; i < Length; i++) {
            price = P(s + i);
            if (price > MaxH) MaxH = price;
            if (price < MinL) MinL = price;
        }        
        Value1[s] = 0.5 * 2.0 * ((P(s) - MinL) / (MaxH - MinL) - 0.5) + 0.5 * Value1[s + 1];
        if (Value1[s] > 0.9999) Value1[s] = 0.9999;
        if (Value1[s] < -0.9999) Value1[s] = -0.9999;
        Fisher[s] = 0.25 * MathLog((1 + Value1[s]) / (1 - Value1[s])) + 0.5 * Fisher[s + 1];
        Trigger[s] = Fisher[s + 1];
    }    
    return (0);
}
 
double P(int index) {
    return ((High[index] + Low[index]) / 2.0);
}
 
void initBuffer(double array[], string label = "", int type = DRAW_NONE, int arrow = 0, int style = EMPTY, int width = EMPTY, color clr = CLR_NONE) {
    SetIndexBuffer(buffers, array);
    SetIndexLabel(buffers, label);
    SetIndexEmptyValue(buffers, EMPTY_VALUE);
    SetIndexDrawBegin(buffers, drawBegin);
    SetIndexShift(buffers, 0);
    SetIndexStyle(buffers, type, style, width);
    SetIndexArrow(buffers, arrow);
    buffers++;
}

Please inform me: Why Fisher? What have you heard about it? etc.

thanks

 

Many many variations, see

http://www.lmgtfy.com/?q=fisher+indicator

Good Luck

-BB-

Reason: