//+------------------------------------------------------------------+ //| 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-
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
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