La stratégie de backtest de la transformation de Fisher calcule la transformation de Fisher des prix pour identifier les points d'inversion des prix et générer des signaux de trading en conséquence.
Le noyau de cette stratégie est de traiter les prix en utilisant la formule de transformation de Fisher pour éliminer les caractéristiques non gaussiennes des distributions de prix naturelles.
y = 0,5 * ln (< 1 + x) / < 1 x)
Ici, x est le prix traité, obtenu en trouvant d'abord les prix les plus élevés et les plus bas au cours des périodes de longueur les plus récentes en utilisant les fonctions les plus élevées et les plus basses, puis en normalisant comme suit:
x = (prix - minimum) / (maximum - minimum) - 0,5
Les prix traités de cette façon approchent une distribution gaussienne. x est ensuite substitué dans la formule de transformation de Fisher pour obtenir la courbe de transformation de Fisher.
Lorsque la courbe de transformation de Fisher passe de positive à négative, un signal de vente est généré.
La transformée de Fisher élimine les caractéristiques non gaussiennes des prix, ce qui se traduit par des prix plus bien comportés et standardisés et moins de faux signaux.
Capture les points d'inversion des prix, en évitant de courir après les hauts et les bas
Réglage flexible des paramètres pour la sensibilité d'inversion de réglage
Directionnalité personnalisable, s'adapte aux différents environnements du marché
La logique est simple, facile à comprendre et à mettre en œuvre
Des paramètres incorrects peuvent manquer des virages ou générer de faux signaux.
Des glissades dans le trading en direct peuvent empêcher une exécution parfaite du signal
Difficile d'identifier les virages lorsque les prix sont volatils
Difficile à mettre en œuvre dans le commerce en direct avec besoin de confirmer les renversements
Les solutions:
Optimiser les paramètres en ajustant la longueur
Réduisez les critères d'entrée de manière appropriée pour assurer le remplissage
Filtrer les faux signaux combinant d'autres indicateurs
Suivre strictement les règles et gérer les risques
Optimiser le paramètre Longueur pour trouver la meilleure combinaison
Ajouter des filtres pour éviter les faux signaux, par exemple les moyennes mobiles, les indicateurs de volatilité, etc.
Incorporer le stop loss dans la perte de contrôle par transaction
Ajouter un mécanisme de réintégration pour suivre les tendances continues
La stratégie de backtest de la transformation de Fisher identifie les points d'inversion des prix en supprimant les caractéristiques non gaussiennes des prix. C'est une stratégie de réversion moyenne facilement implémentée. Ses avantages résident dans les paramètres flexibles pour attraper les tours tandis que sa principale faiblesse est la difficulté de la mise en œuvre en direct avec la nécessité de règles d'entrée strictes. Diverses méthodes peuvent être utilisées pour optimiser cette stratégie pour une applicabilité pratique.
/*backtest start: 2023-11-26 00:00:00 end: 2023-12-03 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version = 2 //////////////////////////////////////////////////////////// // Copyright by HPotter v2.0 22/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. // // For signal used zero. // 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") hline(0, color=blue) 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 > 0, 1, iff(nFish < 0, -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")