+91-0000000000

}

Monday – Friday : 9:00 AM – 6:30 PM

Ehlers Fisher Transform

Ehlers Fisher Transform in Amibroker converts price data into a Gaussian normal distribution. Using the Amibroker data feed, this indicator helps traders identify potential reversals or turning points in the market.

/_SECTION_BEGIN("Ehlers Fisher Transform"); 
/
//------------------------------------------------------------------------------
//
//  The Fisher Transform converts price data to a nearly Gaussian probability
//  density function. The result is an indicator that reverses very sharply
//  when a trend changes.
//
//------------------------------------------------------------------------------

SetBarsRequired(200, 0);

// Ehlers formulas
// from Ehlers, John F. Cybernetic Analysis for Stocks and Futures. Wiley. 2004. 
// Chapter 1, p. 1. Code on p. 7.

function InverseFisher(array)
{
  e2y = exp(2 * array);
  return (e2y - 1)/(e2y + 1);
}

function Normalize(array, arraylen)
// Figure 1.7 on p. 7
{
  MaxH = HHV(array, arraylen);
  MinL = LLV(array, arraylen);
  Value1[0] = array[0];  // Initialize as array

  for(i = 1; i < BarCount; i++)
  {
     Value1[i] = .5 * 2 * ((array[i] - MinL[i]) / (MaxH[i] - MinL[i]) - .5) + .5 * Value1[i-1];
     if (Value1[i] > .9999) Value1[i] = .9999;
     if (Value1[i] < -.9999) Value1[i] = -.9999;
  }
  return Value1;
}

function Fisher(array)
// Figure 1.7 on p. 7
{
  F = array;
  F = .25 * log((1+ array)/(1 - array)) + .5 * Ref(F, -1);
  return F;
}

Med = (H+L)/2;

// Fisher Transform
FisherXform = Fisher(Normalize(Med, 10));
f1 = FisherXform;
bbtop = BBandTop(f1,5,0.5);
bbbot = BBandBot(f1,5,0.5);

Buy = f1 > bbtop AND C > EMA(C,34);
Sell = f1 < bbbot AND C < EMA(C,34);

Col_buy = IIf(Buy,colorBrightGreen, IIf(Sell,colorRed,colorGrey40));


Plot(FisherXform, "Fisher Transform", Col_buy, styleLine);
//Plot(Ref(FisherXform, -1), "", colorBlue, styleLine);
PlotGrid(2);
PlotGrid(-2);
_SECTION_END();

Open chat
1
Hi, how can I help you?