Strategie zur Nachverfolgung der Umkehrung der Doppelfaktor-Mittelwerte

Schriftsteller:ChaoZhang, Datum: 2023-12-19 11:09:20
Tags:

img

Übersicht

Diese Strategie gehört zur Dual-Faktor-Mean-Reversion-Tracking-Strategie im Bereich des quantitativen Handels. Sie integriert die 123 Reversal-Strategie und die Keltner-Channel-Strategie mit zwei Faktoren, mit dem Ziel, Umkehrsignale zu entdecken und die Handelsidee des Kaufs niedrig und des Verkaufs hoch zu verwirklichen.

Grundsätze

Die Strategie besteht aus zwei Teilstrategien. Die erste Teilstrategie ist die 123 Umkehrstrategie. Sie beurteilt, ob sich der Markt an einem Umkehrpunkt befindet, indem sie die Veränderung der Schlusskursentwicklung in den letzten zwei Handelstagen berechnet und den Stochastischen Indikator kombiniert. Insbesondere wird ein Kaufsignal ausgegeben, wenn der Schlusskurs zwei aufeinanderfolgende Tage steigt und der Stochastische Indikator unter 50 liegt; wenn der Schlusskurs zwei aufeinanderfolgende Tage fällt und der Stochastische Indikator über 50 liegt, wird ein Verkaufssignal ausgegeben.

Die zweite Unterstrategie ist die Keltner-Kanalstrategie. Diese Strategie berechnet den typischen gleitenden Preisdurchschnitt und die Volatilitätsspanne über die letzten n Handelstage. Wenn der Preis sich den oberen oder unteren Schienen nähert, werden umgekehrte Handelssignale ausgegeben. Wenn der Preis unterhalb der unteren Schiene ist, gehen Sie kurz; wenn er über der oberen Schiene ist, gehen Sie lang.

Wenn die Signale der beiden Teilstrategien konsistent sind, werden reale Handelsorders ausgegeben, andernfalls werden keine Transaktionen durchgeführt, um den Zweck der Doppelfaktorüberprüfung zu erreichen.

Analyse der Vorteile

Der größte Vorteil dieser Dual-Faktor-Mean-Reversion-Tracking-Strategie besteht darin, dass sie Chancen rechtzeitig ergreifen kann, wenn der Markt umkehrt und die Handelsidee des Kaufs niedrig und des Verkaufs hoch verwirklichen kann.

Insbesondere ist die Parameter-Einstellung des Stochastischen Indikators in der 123 Umkehrstrategie relativ konservativ, was falsche Umkehrungen in oszillierenden Märkten effektiv filtern kann. Und die Idee des Keltner-Kanals, das Bollinger-Bänder verfolgt, kann auch Umkehrmöglichkeiten nutzen, wenn der Preis durch obere und untere Schienen bricht. Die beiden ergänzen sich, um unnötige Transaktionen zu reduzieren und somit höhere Gewinnraten zu erzielen.

Risikoanalyse

Das Hauptrisiko dieser Strategie besteht darin, dass der Zeitpunkt der Umkehrsignale entscheidend ist. Wenn kontinuierliche falsche Umkehrungen auftreten oder der Zeitpunkt der Umkehrsignale falsch gewählt wird, führt dies zu einem Versagen, einen vollständigen Trend zu halten, wodurch sich die endgültige Rendite beeinflusst.

Darüber hinaus haben Dual-Faktor-Strategien größere Schwierigkeiten bei der Parameterwahl und -Optimierung als Single-Faktor-Strategien.

Schließlich hat der Reverse-Trading selbst ein unverhältnismäßig hohes Risiko-Rendite-Verhältnis. Unnormale Marktbedingungen können leicht zu einer Liquidation führen. Dies muss durch strengen Stop-Loss vermieden werden.

Optimierungsrichtlinien

Nach der vorstehenden Risikoanalyse kann die Strategie in folgenden Aspekten optimiert werden:

  1. Versuche verschiedene Einstellungen der Umkehrindikatorparameter, um Kombinationen mit höherer Fehlerverträglichkeit und weniger falschen Signalen zu finden
  2. Versuchen Sie Parameterwerte von verschiedenen Zykluslängen zu finden Werte, die Umkehrungen präziser erfassen
  3. Hinzufügen eines Stop-Loss-Moduls zur strikten Kontrolle des maximalen Verlusts pro Handel
  4. Testen Sie die Auswirkungen verschiedener Halteperioden, um Ausstiegspunkte zu finden, die besser der Strategie-Logik entsprechen
  5. Erhöhung der Anzahl der offenen Positionen oder Hinzufügung von Positionskontrollmodulen, um das Risiko-Rendite-Verhältnis vernünftiger zu machen

Zusammenfassung

Als typische Dual-Faktor-Mean-Reverssion-Tracking-Strategie zielt diese Strategie darauf ab, durch die Integration der 123 Reversal- und Keltner-Channel-Unterstrategien den Zeitpunkt des Kaufs niedrig und des Verkaufs hoch an den Umkehrpunkten des Marktes genauer zu erfassen. Mit angemessener Parameteroptimierung und Risikokontrolle kann eine solche Strategie ein relativ beträchtliches Alpha erzielen.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 09/12/2020
// 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
// The Keltner Channel, a classic indicator 
// of technical analysis developed by Chester Keltner in 1960. 
// The indicator is a bit like Bollinger Bands and Envelopes.
//
// 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

KeltnerChn(nPeriod) =>
    pos = 0.0
    xPrice = sma(hlc3, nPeriod)
    xMove = sma(high - low, nPeriod)
    reverse = input(false, title="Trade reverse")
    xUpper = xPrice + xMove
    xLower = xPrice - xMove
    pos := iff(close < xLower, -1,
             iff(close > xUpper, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Keltner Channel", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
nPeriod = input(title="Period", defval=10, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posKeltnerChn = KeltnerChn(nPeriod)
pos = iff(posReversal123 == 1 and posKeltnerChn == 1 , 1,
	   iff(posReversal123 == -1 and posKeltnerChn == -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