The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

Finance::GeniusTrader::Indicators::FISH

Overview Infos cited from chart manual at http://www.geocities.com/ user42_kevin/chart/index.html

The fisher transform indicator by John Ehlers is a range oscillator showing where today's price is within the past N-days highest and lowest, with some smoothing is used plus what's known in mathematics as a fisher transform. This is similar to Stochastics and Williams %R but the transformation stretches values near the high and low, helping to highlight extremes. =head2 Calculation

The calculation is as follows. The prices used are the midpoint between the day's high and low (as in most of Ehlers' indicators). Today's price is located within the highest and lowest of those prices from the past N days, scaled to -1 for the low and 1 for the high.

     price = (high + low) / 2
     
                 price - Ndaylow
     raw = 2 * ------------------ - 1
               Ndayhigh - Ndaylow

This raw position is smoothed by a 5-day EMA and a log form which is the mathematical fisher transform, before a final further 3-day EMA smoothing.

     smoothed = EMA[5] of raw
     
                                  1 + smoothed
     fisher = EMA[3] of 0.5 * log ------------
                                  1 - smoothed

Parameters

The standard Fisher-Transform works with a 10-days parameter : n = 10

Creation

 Finance::GeniusTrader::Indicators::FISH->new()
 Finance::GeniusTrader::Indicators::FISH->new([20])

If you need a 30 days Fisher Transform of the opening prices you can write one of those lines :

 Finance::GeniusTrader::Indicators::FISH->new([30, "{I:Prices OPEN}"])

A 10 days Fisher Transform of the RSI could be created with :

 Finance::GeniusTrader::Indicators::FISH->new([10, "{I:RSI}"])

Finance::GeniusTrader::Indicators::SMI::calculate($calc, $day)