Handelsstrategie zur Umkehrung des Handels mit doppelter Bestätigung

Schriftsteller:ChaoZhang, Datum: 2023-11-14 13:42:47
Tags:

img

Übersicht

Die Dual-Confirmation-Reversal-Handelsstrategie kombiniert das 123 Reversal-Muster mit dem stochastischen RSI-Indikator, um ein robustes Mittel-Reversion-System zu schaffen.

Strategie Logik

Die Strategie besteht aus zwei Bestandteilen:

  1. 123 Umkehrung

Es verwendet das Muster 123 um mögliche Umkehrungen zu identifizieren.

  • Lang, wenn der Abschluss < vorheriger Abschluss und aktueller Abschluss > vorheriger Abschluss und 9-Tage-Slow Stochastic < 50 ist

  • Kurz, wenn geschlossen > vorherige Schließung und aktuelle Schließung < vorherige Schließung und 9-Tage-Fast Stochastic > 50

Dies ist ein frühes Signal für Preisumkehrungen.

  1. Stochastischer RSI

Es wird der Stochastische Indikator auf den RSI zur weiteren Bestätigung angewendet:

  • Berechnung des RSI mit Länge 14

  • Berechnen Sie den Stochastischen RSI mit Längen 14, um K zu erhalten

  • Nehmen Sie 3 Tage SMA von K, um D zu bekommen

  • Wenn K über 80 ist, bedeutet es lang, wenn K unter 20 ist, bedeutet es kurz.

Ein Tausch wird nur ausgelöst, wenn beide Parteien einverstanden sind.

Analyse der Vorteile

Der Hauptvorteil dieser Strategie ist die doppelte Bestätigung, die die Genauigkeit verbessert und die Whipsaws reduziert.

  1. 123 Umkehrung ermöglicht eine frühzeitige Erkennung einer Trendwende

  2. Stochastischer RSI bestätigt das Umkehrsignal

  3. Die Kombination verbessert die Gewinnrate und verringert die falschen Signale

  4. Die Parameter können für verschiedene Märkte optimiert werden

  5. Einfache und saubere Implementierung für den Live-Handel

Risikoanalyse

Einige Risiken, die bei dieser Strategie zu berücksichtigen sind:

  1. Das Risiko einer fehlgeschlagenen Umkehr kann zu Verlusten führen.

  2. Parameteroptimierung ist ein Risiko, schlechte Parameter führen zu schlechter Leistung.

  3. Übermäßiges Risiko, übermäßige Optimierung historischer Daten.

  4. Hohe Handelsfrequenzrisiken. Mehr Signale können die Kosten erhöhen.

  5. Fehlerrisiko bei der Codierung, Fehler in der Implementierungslogik.

Mögliche Lösungen:

  1. Verwenden Sie eine umsichtige Positionsgröße, um Verluste zu begrenzen.

  2. Verwenden Sie Methoden zur Optimierung der Vorwärtsbewegung.

  3. Konzentrieren Sie sich auf die Parameterstabilität, nicht auf hohe Renditen.

  4. Um die Handelsfrequenz zu reduzieren, müssen die Bedingungen angepasst werden.

  5. Testen Sie die Code-Logik gründlich.

Möglichkeiten zur Verbesserung

Die Strategie kann in folgenden Bereichen verbessert werden:

  1. Ausrichtung der Parameter auf bestimmte Märkte.

  2. Filter hinzugefügt, um zu vermeiden, dass es zu schnell geht.

  3. Einbeziehung von Stop-Loss-Mechanismen.

  4. Verringerung der Handelsfrequenz durch zusätzliche Filter.

  5. Implementierung dynamischer Positionsgrößen.

  6. Anpassung an Transaktionskosten.

Schlussfolgerung

Die Dual-Confirmation-Reversal-Strategie ist ein stabiles und praktisches System für die kurzfristige Mittel-Reversion. Sie balanciert die Empfindlichkeit bei Umkehrungen und die Genauigkeit der Dual-Confirmation. Mit der richtigen Optimierung und Modifikation kann sie ein quantitatives Strategieportfolio effektiv ergänzen.


/*backtest
start: 2023-10-14 00:00:00
end: 2023-11-13 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 03/08/2021
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// This strategy used to calculate the Stochastic RSI
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos


SRSI(lengthRSI,lengthStoch,smoothK,smoothD, TopBand,LowBand) =>
    pos = 0.0
    Source = close
    rsi1 = rsi(Source, lengthRSI)
    k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
    d = sma(k, smoothD)
    d_cross_80 = cross(d,TopBand) 
    pos := iff(k > TopBand, 1,
              iff(k < LowBand, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Stochastic RSI", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- Stochastic RSI ----")
TopBand = input(80, step=0.01)
LowBand = input(20, step=0.01)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posSRSI = SRSI(lengthRSI,lengthStoch,smoothK,smoothD, TopBand,LowBand)
pos = iff(posReversal123 == 1 and posSRSI == 1 , 1,
	   iff(posReversal123 == -1 and posSRSI == -1, -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)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Mehr