Página 1 de 1

Fisher Transform para AmiBroker

Publicado: 05 May 2023 12:13
por X-Trader
Os dejo por aquí el código en AFL de indicador de la transformada de Fisher, sobre el cual hablamos en este artículo:

https://www.x-trader.net/la-transformacion-de-fisher/

Saludos,
X-Trader

Código: Seleccionar todo

_SECTION_BEGIN("Fisher Transform");
//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 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])/IIf(MaxH[i]-MinL[i]==0,1,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));
Plot(FisherXform, "Fisher Transform", colorRed, styleThick);
Plot(Ref(FisherXform, -1), "", colorGreen, styleThick);
PlotGrid(2, colorLightGrey);
PlotGrid(-2, colorLightGrey);
_SECTION_END();