
Cette stratégie est basée sur l’indicateur de conversion de Fisher conçu par John Ehlers, un grand spécialiste de l’analyse technique, et permet de reconnaître automatiquement les points de retournement de tendance des prix et de faire des transactions automatiques à long et à court. Son plus grand avantage réside dans l’exactitude et la rapidité avec lesquelles il reconnaît les retournements de prix.
Cette stratégie utilise la formule de la conversion de Fisher pour normaliser les prix et générer une séquence de prix avec une distribution de Gauss approximative. La formule de la conversion de Fisher est: y = 0,5 * ln (((1+x) / ((1-x))). Grâce à cette conversion, il est possible de convertir les extrêmes de prix en événements relativement plus rares.
Les étapes de la stratégie sont les suivantes:
Le plus grand avantage de cette stratégie réside dans l’exactitude et la rapidité de ses signaux de négociation. Comme la séquence de prix générée par la conversion de Fisher correspond approximativement à la distribution de Gauss, l’indicateur de conversion de Fisher est capable de reconnaître rapidement et de réagir en conséquence en cas de revers des prix.
Le plus grand risque de cette stratégie réside dans le fait que la séquence de prix après la conversion de Fisher ne correspond pas nécessairement parfaitement à la distribution de Gauss de la théorie rationnelle. Lorsque le marché connaît des fluctuations anormales, telles que des ruptures, des sauts, etc., cela peut entraîner un signal erroné de l’indicateur de conversion de Fisher.
Pour réduire ce risque, il est possible d’envisager de filtrer les signaux de négociation en combinaison avec d’autres indicateurs, afin d’éviter de continuer à négocier en cas d’anomalie du marché. Ou il est possible d’ajuster les paramètres de manière appropriée, de réduire la fréquence des transactions et la taille des pertes individuelles.
Cette stratégie peut être optimisée dans les domaines suivants:
Cette stratégie est basée sur l’indicateur de conversion de Fisher conçu par Ehlers et permet d’identifier rapidement et avec précision les points de retournement des prix, afin de saisir les opportunités de négociation à temps. Son plus grand avantage réside dans l’exactitude et la rapidité des signaux de négociation.
/*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")