indicator · own pane · open source

Ehlers Fisher Transform

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

About

Ehlers Fisher Transform — compresses price into a near-Gaussian distribution and applies a Fisher inverse so turns become sharp peaks instead of rounded ones. Excellent for spotting reversals at extremes.

  • Reads overbought / oversold above +1.6 / below -1.6.
  • Crosses of the trigger line are momentum signals.

Source code

//@version=5
indicator("Ehlers Fisher Transform", overlay=false)
len = input.int(10, "Length", minval=2, maxval=50)
var float val = 0.0
var float fish = 0.0
hlc3 = (high + low + close) / 3
val := 0.33 * 2 * ((hlc3 - ta.lowest(hlc3, len)) / (ta.highest(hlc3, len) - ta.lowest(hlc3, len)) - 0.5) + 0.67 * nz(val[1], 0)
fish := 0.5 * math.log((1 + val) / (1 - val)) + 0.5 * nz(fish[1], 0)
trigger = fish[1]
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 up", "Fisher crossed above trigger")
alertcondition(ta.crossunder(fish, trigger), "Fisher down", "Fisher crossed below trigger")

Comments

No comments yet.

Sign in to comment.