Fischer-Yurik: Strategie zur Verfolgung.

Schriftsteller:ChaoZhang, Datum: 2024-02-02 14:57:33
Tags:

img

Übersicht

Die Fisher-Yurik-Trailing-Stop-Strategie ist eine quantitative Handelsstrategie, die den Fisher-Yurik-Indikator und Trailing-Stop-Mechanismen integriert.

Strategie Logik

  1. Eingabedatenbereiche zur Definition des Zeitrahmens für Backtest/Live-Handel
  2. Eingabeparameter für den Fisher-Yurik-Indikator, standardmäßig auf 2 Perioden
  3. Input-Gewinn- und Stop-Loss-Verhältnisse, Ausfall auf 5% Gewinn und 2% Verlust
  4. Berechnung der Haupt- und Signalleitungen des Fisher-Yurik-Indikators
  5. Erzeugen Sie ein Kaufsignal, wenn die Hauptleitung über die Signallinie kreuzt
  6. Set Trailing Stop, Long-Exit-Position, wenn der Preis nach dem Eintritt um 2% fällt
  7. Gewinn machen, wenn der Preis über 5% steigt

Analyse der Vorteile

  1. Fisher Yurik Indikator identifiziert leicht Trends, genaue Kaufsignale
  2. Trailing-Stop-Locks bei den meisten Gewinnen und Vermeidung von Stops über die Schwelle hinaus
  3. Anpassbare Parameter für verschiedene Marktumgebungen
  4. Einfache und leicht verständliche Umsetzung

Risikoanalyse

  1. Eine falsche Einstellung der Parameter kann zu einem übermäßig aggressiven Handel führen, erfordert vorsichtige Tests
  2. Ein zu breiter Stop-Loss kann zu Verlusten führen, die über die Erwartungen hinausgehen.
  3. Ein zu hoher Gewinn kann die Gewinne verkürzen und die Rentabilität einschränken.
  4. Für verschiedene Produkte sollten geeignete Parameter festgelegt werden.

Die Risiken können durch Anpassung der Stop-/Profit-Verhältnisse, Testparameter, Verwendung von Signalfiltern, Positionsgrößenregelungen abgebaut werden.

Möglichkeiten zur Verbesserung

  1. Optimierung der Fisher-Yurik-Parameter für die Auswirkungen auf die Strategie
  2. Hinzufügen von Signalfiltern wie MACD, KD zur Verbesserung der Signalkwalität
  3. Hinzufügen von Einstiegsbedingungen wie Ausbrüchen aus Bollinger Bands
  4. Einbeziehung von Positionsgrößenregelungen zur Kontrolle des Handelsrisikos
  5. Verbessern Sie die Methoden des Rückhaltes, z. B. glättete, Chandelier Exits

Schlussfolgerung

Die Fisher Yurik Trailing Stop Strategie kombiniert Trendidentifikation und Risikomanagement. Mit Parameter-Tuning, Indikatorenkombinationen und Stop-Loss-Verbesserungen kann sie für die meisten Instrumente geeignet sein, um gute Gewinne innerhalb akzeptabler Risikotoleranzen zu erzielen.


/*backtest
start: 2023-01-26 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Fisher_Yurik Strategy with Trailing Stop", shorttitle="FY Strategy", overlay=true)

// Date Ranges 
from_month = input(defval = 1, title = "From Month")
from_day   = input(defval = 1, title = "From Day")
from_year  = input(defval = 2021, title = "From Year")
to_month   = input(defval = 1, title = "To Month")
to_day     = input(defval = 1, title = "To Day")
to_year    = input(defval = 9999, title = "To Year")
start  = timestamp(from_year, from_month, from_day, 00, 00)  // backtest start window
finish = timestamp(to_year, to_month, to_day, 23, 59)        // backtest finish window
window = true
period = input(2, title='Period')
cost = input.float(1.05, title='profit level ', step=0.01)
dusus = input.float(1.02, title='after the signal', step=0.01)

var float Value = na
var float Fish = na
var float ExtBuffer1 = na
var float ExtBuffer2 = na

price = (high + low) / 2
MaxH = ta.highest(high, period)
MinL = ta.lowest(low, period)

Value := 0.33 * 2 * ((price - MinL) / (MaxH - MinL) - 0.5) + 0.67 * nz(Value[1])
Value := math.max(math.min(Value, 0.999), -0.999)
Fish := 0.5 * math.log((1 + Value) / (1 - Value)) + 0.5 * nz(Fish[1])

up = Fish >= 0

ExtBuffer1 := up ? Fish : na
ExtBuffer2 := up ? na : Fish

var float entryPrice = na
var float stopPrice = na
 
if (ExtBuffer1 > ExtBuffer1[1])
    entryPrice := close*dusus
    stopPrice := close * cost 
 
if (ExtBuffer2 < ExtBuffer2[1])
    entryPrice := close
    stopPrice := close * cost

// Sadece seçilen test döneminde işlem yapma koşulu eklenmiştir
strategy.entry("Buy", strategy.long, when=ExtBuffer1 > ExtBuffer1[1] and window)
strategy.exit("Take Profit/Trailing Stop", from_entry="Buy", when=(close >= entryPrice * cost) or (close < stopPrice), trail_offset=0.08, trail_price=entryPrice * cost)


Mehr