indicator · own pane · open source

Fisher Transform

Deepwick · @deepwickv1Updated 2 Oct 2026▲ 0 users
Running…
Loading chart…

About

Fisher Transform stretches price into a near-Gaussian distribution then inverts the CDF so turns become sharp peaks. Excellent reversal oscillator.

  • Above +1.6 = overbought, below -1.6 = oversold.
  • Crossover of trigger (previous bar's value) flags momentum shifts.
  • Raise Length for steadier swings on noisy assets.

Source code

//@version=5
indicator("Fisher Transform", overlay=false)
len = input.int(10, "Length", minval=2, maxval=100)
var float val = 0.0
var float fish = 0.0
hlc3 = (high + low + close) / 3.0
val := 0.33 * 2.0 * ((hlc3 - ta.lowest(hlc3, len)) / (ta.highest(hlc3, len) - ta.lowest(hlc3, len)) - 0.5) + 0.67 * nz(val[1], 0.0)
fish := 0.5 * math.log((1.0 + val) / (1.0 - val)) + 0.5 * nz(fish[1], 0.0)
trigger = nz(fish[1], fish)
hline(1.6, "Overbought", color=color.gray, linestyle=hline.style_dashed)
hline(-1.6, "Oversold", color=color.gray, linestyle=hline.style_dashed)
p_Fisher = plot(fish, "Fisher", color=color.blue, linewidth=2)
p_Trigger = plot(trigger, "Trigger", color=color.red)
alertcondition(ta.crossover(fish, trigger), "Fisher crosses trigger up", "Fisher crossed above trigger")
alertcondition(ta.crossunder(fish, trigger), "Fisher crosses trigger down", "Fisher crossed below trigger")

Comments

No comments yet.

Sign in to comment.