
Esta estrategia se basa en el índice de conversión de Fisher diseñado por el maestro del análisis técnico John Ehlers, que permite identificar automáticamente los puntos de reversión de la tendencia de los precios y realizar operaciones automáticas en posiciones largas y cortas. Su mayor ventaja reside en la precisión y la puntualidad de la identificación de las reversiones de precios.
Esta estrategia utiliza la fórmula de la conversión de Fisher para estandarizar los precios y generar una secuencia de precios con una distribución de Gauss aproximada. La fórmula de la conversión de Fisher es: y = 0.5 * ln (((1+x) / ((1-x))). Mediante esta conversión, se puede convertir el valor máximo del precio en un evento relativamente más raro.
En concreto, las etapas de la estrategia son las siguientes:
La mayor ventaja de esta estrategia reside en la precisión y la puntualidad de sus señales de negociación. Dado que la secuencia de precios generada por la conversión de Fisher es aproximadamente compatible con la distribución de Gauss, el indicador de la conversión de Fisher puede identificar rápidamente y reaccionar cuando se produce una reversión de precios. Esto garantiza la captura oportuna de oportunidades de reversión.
El mayor riesgo de esta estrategia es que la secuencia de precios después de la conversión de Fisher no siempre es exactamente la distribución de Gauss de la racionalidad. Cuando el mercado presenta una fluctuación anormal, como la ruptura, el salto, etc., puede causar que el indicador de la conversión de Fisher emita una señal errónea.
Para reducir este riesgo, se puede considerar la posibilidad de filtrar las señales de negociación en combinación con otros indicadores, para evitar seguir operando en momentos de anomalías en el mercado. O se pueden ajustar los parámetros adecuadamente, reduciendo la frecuencia de negociación y el tamaño de las pérdidas individuales.
Esta estrategia puede ser optimizada en los siguientes aspectos:
Esta estrategia se basa en el indicador de conversión de Fisher diseñado por Ehlers, que permite identificar rápidamente y con precisión los puntos de reversión de los precios para aprovechar las oportunidades comerciales a tiempo. Su mayor ventaja reside en la precisión y la puntualidad de las señales comerciales.
/*backtest
start: 2023-12-08 00:00:00
end: 2024-01-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version = 2
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 15/12/2016
// Market prices do not have a Gaussian probability density function
// as many traders think. Their probability curve is not bell-shaped.
// But trader can create a nearly Gaussian PDF for prices by normalizing
// them or creating a normalized indicator such as the relative strength
// index and applying the Fisher transform. Such a transformed output
// creates the peak swings as relatively rare events.
// Fisher transform formula is: y = 0.5 * ln ((1+x)/(1-x))
// The sharp turning points of these peak swings clearly and unambiguously
// identify price reversals in a timely manner.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="Fisher Transform Indicator by Ehlers Backtest", shorttitle="Fisher Transform Indicator by Ehlers")
Length = input(10, minval=1)
reverse = input(false, title="Trade reverse")
xHL2 = hl2
xMaxH = highest(xHL2, Length)
xMinL = lowest(xHL2,Length)
nValue1 = 0.33 * 2 * ((xHL2 - xMinL) / (xMaxH - xMinL) - 0.5) + 0.67 * nz(nValue1[1])
nValue2 = iff(nValue1 > .99, .999,
iff(nValue1 < -.99, -.999, nValue1))
nFish = 0.5 * log((1 + nValue2) / (1 - nValue2)) + 0.5 * nz(nFish[1])
pos = iff(nFish > nz(nFish[1]), 1,
iff(nFish < nz(nFish[1]), -1, nz(pos[1], 0)))
possig = iff(reverse and pos == 1, -1,
iff(reverse and pos == -1, 1, pos))
if (possig == 1)
strategy.entry("Long", strategy.long)
if (possig == -1)
strategy.entry("Short", strategy.short)
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(nFish, color=green, title="Fisher")
plot(nz(nFish[1]), color=red, title="Trigger")