Zweifaktorige Handelsstrategie im Zyklus

Schriftsteller:ChaoZhang, Datum: 2023-12-05 17: 56:27
Tags:

img

Übersicht

Die Dual-Faktor-Cycle-Handelsstrategie ist eine quantitative Handelsstrategie, die zwei verschiedene Arten von technischen Indikatoren kombiniert, um Handelssignale zu generieren und Markttrends für überschüssige Renditen zu verfolgen.

Der Vorteil dieser Strategie besteht darin, dass sie Handelsmöglichkeiten durch Kombination verschiedener Faktoren finden kann und die Doppelbestätigung die Signalzuverlässigkeit verbessern und die Wahrscheinlichkeit fehlerhafter Trades verringern kann. Gleichzeitig nutzt die Strategie den vollen Vorteil des Zyklushandels, nämlich rechtzeitige Stop-Loss- und Reverse-Opening-Positionen, die Risiken effektiv kontrollieren können.

Strategieprinzipien

Die Strategie besteht aus zwei Teilen:

  1. 123 Umkehrstrategie Diese Strategie stammt aus dem Buch How I Tripled My Money in the Futures Market von Ulf Jensen. Ihre Handelslogik lautet: Wenn der Schlusskurs für zwei aufeinanderfolgende Tage höher als der vorherige Schlusskurs ist und die 9-tägige langsame K-Linie unter 50 liegt, gehen Sie lang; wenn der Schlusskurs für zwei aufeinanderfolgende Tage niedriger als der vorherige Schlusskurs ist und die 9-tägige schnelle K-Linie über 50 liegt, gehen Sie kurz.

  2. Unterstützung/Widerstandsstrategie
    Diese Strategie erzeugt Signale, indem sie beurteilt, ob die Preise die wichtigsten Unterstützungs- oder Widerstandsniveaus durchbrechen.

Durch die Kombination der Signale der beiden oben genannten Strategien, offene Positionen, wenn beide Signale konsistent sind, ansonsten klare Positionen. Ein umgekehrter Eröffnungsmodus ist auch so eingestellt, dass Verluste gestoppt und der Handel rechtzeitig umgekehrt wird, wenn sich der Markt ändert, um einen zyklischen Betrieb von Fonds zu erreichen.

Analyse der Vorteile

Diese Handelsstrategie mit zwei Faktoren hat folgende Vorteile:

  1. Das Multi-Faktor-Design gewährleistet eine hohe Signalzuverlässigkeit. Die 123 Umkehrstrategie und die Support/Resistance Strategie überprüfen sich gegenseitig und können fehlerhafte Signale reduzieren.

  2. Der Zyklusmechanismus ermöglicht es der Strategie, sich an Marktveränderungen anzupassen und einseitige Verluste wirksam zu kontrollieren.

  3. Die Verwendung des 9-Tage-Stochastik-Indikators kann Marktlärm filtern und deutliche Signale erzeugen.

  4. Es ist weniger riskant als eine Einzelfaktorstrategie und hat kleinere Abzüge.

Risikoanalyse

Diese Strategie birgt auch einige Risiken:

  1. Es ist schwierig, Trends in seitlichen Märkten gut zu erfassen, und häufige Stop-Loss und Reverse-Openings erhöhen die Transaktionskosten.

  2. Die Parameter-Einstellungen von Stochastics beeinflussen die Signalqualität. Falsche Parameter können zu Signalfehlstellungen und Qualitätszerstörungen führen. Parameter müssen wiederholt getestet und optimiert werden.

  3. Obwohl das Dual-Faktor-Design die Signalqualität verbessert, erhöht es auch die Auswirkungen von Marktlärm auf die Strategie.

Optimierungsrichtlinien

Wir können diese Strategie aus folgenden Gesichtspunkten weiter optimieren:

  1. Test-Stochastik unterschiedlicher Zykluslängen zur Suche nach der optimalen Parameterkombination zur Beseitigung von Marktlärm

  2. Hinzufügen eines Trendfilters, um seitliche Märkte auszufiltern und nur offenen Positionen in klaren Trends

  3. Optimieren Sie den Algorithmus zur Einstellung der Stop-Loss-Linie, um die Transaktionskosten zu senken und gleichzeitig einen effektiven Stop-Loss zu gewährleisten

  4. Verschiedene Kombinationen von Faktoren testen, um Faktorenkombinationen mit klareren Handelssignalen und stabileren Strategien zu finden

Zusammenfassung

Durch das Dual-Faktor-Design hat diese Strategie eine höhere Signalqualität und risikoadjustierte Renditen erzielt. Gleichzeitig kontrolliert die Verwendung des Zyklushandels effektiv die Verluste im einseitigen Markt. Die Strategie hat ein gutes Gleichgewicht zwischen Risiko und Rendite erreicht.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 13/11/2019
// 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
// Cueing Off Support And Resistance Levels, by Thom Hartle 
// modified by HPotter for trade signals.
// The related article is copyrighted material from Stocks & Commodities.
//
// 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

COSRL(SigVal) =>
    pos = 0.0
    xLow = low
    xHigh = high
    xHighD = security(syminfo.tickerid,"W", high[1])
    xLowD  = security(syminfo.tickerid,"W", low[1])
    sigpre1 = iff(xHigh <= xLowD, -1,
                 iff(xLow >= xHighD, 1, nz(pos[1], 0))) 
    sigpre2 = iff( xHigh <= xHighD, -1,
                 iff(xLow >= xLowD, 1, nz(pos[1], 0))) 
    pos := SigVal ? sigpre1 : sigpre2
    pos

strategy(title="Combo Backtest 123 Reversal & Cueing Off Support And Resistance Levels", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
SigVal = input(true, title="To Line \ From Line")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posCOSRL = COSRL(SigVal)
pos = iff(posReversal123 == 1 and posCOSRL == 1 , 1,
	   iff(posReversal123 == -1 and posCOSRL == -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