Strategie zur Umkehrung des doppelten gleitenden Durchschnitts

Schriftsteller:ChaoZhang, Datum: 2023-11-24 17:03:47
Tags:

img

Übersicht

Die Strategie zur Umkehrung des doppelten gleitenden Durchschnitts ist eine Trendfolgestrategie, die die 123 Reversal-Strategie und den DiNapoli Detrended Oscillator-Strategie kombiniert, um Handelssignale durch ein doppeltes Crossover des gleitenden Durchschnitts zur Verfolgung von Markttrends zu erzeugen.

Strategie Logik

Die Strategie besteht aus zwei Teilen:

  1. 123 Umkehrstrategie: Diese Strategie verwendet den Stochastischen Indikator, um Signale zu erzeugen. Es sendet ein Kaufsignal, wenn der Schlusskurs nach zwei aufeinanderfolgenden Tagen des Rückgangs steigt, während die stochastische Schnelllinie unterhalb der langsamen Linie und unter 50 liegt; es sendet ein Verkaufssignal, wenn der Schlusskurs nach zwei aufeinanderfolgenden Tagen des Anstiegs sinkt, während die stochastische Schnelllinie über der langsamen Linie und über 50 liegt.

  2. DiNapoli Detrended Oscillator Strategie: Diese Strategie verwendet die gleitende Durchschnittslinie des Preises, um Handelssignale zu generieren, wenn der Preis die gleitende Durchschnittslinie um einen bestimmten Wert übersteigt oder untersteigt.

Nachdem jede der beiden oben genannten Strategien separate Handelssignale erzeugt hat, integriert diese Strategie sie und sendet nur dann tatsächliche Handelsorders aus, wenn die beiden Signale konsistent sind, d. h. wenn die beiden gleitenden Durchschnitte Signale in die gleiche Richtung bilden; andernfalls wird keine Aktion durchgeführt.

Analyse der Vorteile

Durch die Kombination zweier gleitender Durchschnittshandelssignale kann diese Strategie Markttrends effektiv verfolgen und hat folgende Vorteile:

  1. Nutzen Sie die Stärken des Stochastischen Indikators zur Beurteilung von Dynamik und Trends und vermeiden Sie Verluste durch irreführende Signale eines einzelnen Indikators.

  2. Der DiNapoli-Indikator kann Trends effektiv identifizieren und unnötige Positionseröffnungen aufgrund zufälliger Schwankungen vermeiden.

  3. Durch die doppelte Übertragung gleitender Durchschnitte können falsche Signale wirksam reduziert und die Signalqualität verbessert werden, um starke Beweise für die Beurteilung der Marktrichtung zu liefern.

  4. Die verstellbaren Parameter der Strategie ermöglichen es den Nutzern, auf der Grundlage persönlicher Vorlieben Parameterkombinationen auszuwählen, um sich flexibel an verschiedene Marktumgebungen anzupassen.

Risikoanalyse

Die Strategie birgt außerdem folgende Risiken:

  1. In einem Bullenmarkt kann die Strategie aufgrund übermäßig vorsichtiger Indikatorparameter-Einstellungen Kaufmöglichkeiten verpassen.

  2. In einem Bärenmarkt können sich die Crossover-Signale für zwei gleitende Durchschnitte verzögern, was zu Überkauf- und Überverkaufsbedingungen führt.

  3. Im Falle einer großen einseitigen Marktbewegung können die Signalübertragung von Doppel gleitenden Durchschnitten schwach sein.

Optimierung

Die Strategie kann wie folgt optimiert werden:

  1. Testen und optimieren Sie die Parameter der Stochastic- und DiNapoli-Indikatoren, um die optimalen Parameterkombinationen zu finden.

  2. Hinzufügen anderer Hilfsbewertungsindikatoren wie dem Volumenindikator, um die interne Logik der Strategie zu bereichern und die Genauigkeit der Signale zu verbessern.

  3. Verwenden von Methoden des maschinellen Lernens zur Schulung und Optimierung von Strategieparametern und Signalgenerierungsregeln, um sie vollständig an Marktveränderungen anzupassen.

  4. Beurteilung lokaler Strukturen mit fortgeschrittenen technischen Indikatoren, um mittelfristige und langfristige Signale zu unterscheiden, so dass die Strategie in mehreren Zeitrahmen funktionieren kann.

Schlussfolgerung

Die Dual Moving Average Crossover Reversal Strategie integriert zwei Indikatoren, um zwei bewegliche Durchschnitts-Crossover-Handelssignale zu bilden, die Markttrends effektiv verfolgen und relativ gute Renditen erzielen können, während Risiken kontrolliert werden.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/02/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
// DiNapoli Detrended Oscillator Strategy
//
// 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

DiNapoli(Length, Trigger) =>
    pos = 0.0
    xSMA = sma(close, Length)
    nRes = close - xSMA
    pos := iff(nRes > Trigger, 1,
    	     iff(nRes <= Trigger, -1, nz(pos[1], 0)))    
    pos

strategy(title="Combo Backtest 123 Reversal & DiNapoli Detrended Oscillator", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthDiN = input(14, minval=1)
TriggerDiN = input(0)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDiN = DiNapoli(LengthDiN, TriggerDiN)
pos = iff(posReversal123 == 1 and posDiN == 1 , 1,
	   iff(posReversal123 == -1 and posDiN == -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