Backteststrategie auf Basis des Fisher-Transformationsindikators

Schriftsteller:ChaoZhang, Datum: 2024-01-25 14:22:36
Tags:

img

Übersicht

Diese Strategie ist eine Backtesting-Strategie, die auf dem Fisher-Transformationsindikator basiert. Die Fisher-Transformationsformel kann Preisdaten in eine normale Verteilung umwandeln, um Preisextreme und Wendepunkte zu identifizieren. Diese Strategie kombiniert den Fisher-Transformationsindikator, um Preistrends zu bestimmen und automatisierten Handel zu erreichen.

Strategieprinzip

  1. Berechnung des HL2-Indikators
  2. Berechnen Sie die maximale xMaxH und die minimale xMinL von HL2 in den letzten Längeperioden
    • nValue1 ist 0,33 × (standardisierte HL2) + 0,67 × nValue1 des vorherigen Zeitraums
    • nValue2 begrenzt nValue1 zwischen -0,99 und 0,99
    • nFish ist die logarithmische Transformation von nValue2
  3. Bestimmen Sie, ob nFish positiv oder negativ ist, um die Positionsrichtung zu bestimmen
  4. Positionssignal Possig, wenn umgekehrter Handel eingestellt ist, nehmen Sie die entgegengesetzte Position
  5. Eintrittssignal: possig=1 für lang, possig=-1 für kurz

Analyse der Vorteile

  1. Der Fisher-Transformationsindikator kann Preisextreme und Wendepunkte identifizieren, um Trends genau zu bestimmen
  2. Filterung von Schwankungen durch Kombination von HL2-Indikatoren erhöht die Gewinnrate
  3. Umgekehrter Handel kann an unterschiedliche Marktumgebungen angepasst werden
  4. Automatisiertes Handeln ohne manuelles Urteilen senkt die Handelskosten

Risikoanalyse

  1. Der Fisher-Transformationsindikator hat Verzögerungen und kann kurzfristige Kursänderungen verpassen.
  2. Hohe Stop-Loss-Risiko bei volatilen Trends
  3. Unzulässige Umkehrhandels-Einstellungen können zu systemisch fehlerhaften Geschäften führen
  4. Fehlende Überprüfung des Kreuzzyklus, ein gewisses falsches positives Risiko

Risikolösungen:

  1. Anpassung der Parameter entsprechend zur Verkürzung der Verzögerungen
  2. Erhöhen Sie den Stop-Loss-Bereich, um Einzeltransaktionsverluste zu kontrollieren
  3. Optimierung von Reverse Trades in Kombination mit anderen Indikatoren zur Filterung
  4. Erhöhung der Anzahl der Kontrollmechanismen für Trends, Preisniveaus, Zyklen usw.

Strategieoptimierungsrichtlinien

  1. Kombination von Trendindikatoren zur Gewährleistung der Konsistenz der wichtigsten Trends
  2. Erhöhung der Konjunkturindikatoren zur Verbesserung der Präzisionsgenauigkeit bei Preisumkehrungen
  3. Überprüfung in mehreren Zeitrahmen zur Vermeidung von falsch positiven Ergebnissen
  4. Dynamische Einstellung des Stop-Loss-Bereichs
  5. Optimieren Sie die Parameter, um die Gewinnrate und den Gewinnfaktor zu maximieren

Die oben genannten Optimierungen können die Gewinnrate der Strategie weiter verbessern, Gewinne erzielen, Risiken kontrollieren und stabilere und effizientere Handelsergebnisse erzielen.

Zusammenfassung


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
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(1, color=white)
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")

Mehr