Strategie für den Ausbruch von doppelten gleitenden Durchschnittsumkehrungen

Schriftsteller:ChaoZhang, Datum: 2023-12-18 10:24:08
Tags:

img

Übersicht

Die Dual Moving Average Reversal Breakout Strategie ist eine Kombinationsstrategie, die sowohl die 123 Reversal Strategie als auch die Price & Moving Average Divergence Strategie umfasst.

Strategie Logik

Die Strategie für den Ausbruch von Doppel gleitenden Durchschnitten besteht aus zwei Komponenten:

  1. 123 Umkehrstrategie

    Die 123 Reversal Strategy erzeugt Handelssignale basierend auf zwei aufeinanderfolgenden Tagen der Preisumkehrung (d. h. höherer Schließung gefolgt von niedrigerem Schließen; oder niedrigerer Schließung gefolgt von höherem Schließen), kombiniert mit der 9-tägigen Stochastic Oscillator K-Linie, die unter/über einem bestimmten Niveau liegt (Standard 50).

  2. Preis- und gleitende Durchschnittsdivergenzstrategie

    Die Price & MA Divergence Strategy berechnet die prozentuale Differenz zwischen Preis und einem gleitenden Durchschnitt eines bestimmten Zeitraums (Standard 14). Sie erzeugt Kaufsignale, wenn die Divergenz unter einer Schwelle liegt (Standard 3%) und Verkaufssignale, wenn die Divergenz über einer Schwelle liegt (Standard 0,54%).

Die Strategie des Breakouts mit einer Umkehrung des doppelten gleitenden Durchschnitts erzeugt nur dann tatsächliche Handelssignale, wenn die Signale beider oben genannten Strategien in die gleiche Richtung ausgerichtet sind, d. h. beide sind Kaufsignale oder beide sind Verkaufssignale.

Analyse der Vorteile

Die Strategie für den Ausbruch einer Umkehrung des doppelten gleitenden Durchschnitts kombiniert die Stärken von Umkehrungs- und Trendstrategie für Synergien.

Die 123 Reversal wählt Umkehrsignale aus, um auf Umkehrungen zu profitieren. Die Price & MA Divergence verfolgt den längerfristigen Trend. Zusammen erfassen sie kurzfristige Umkehrungen, während sie den größeren Trend fahren, um nicht gefangen zu werden.

Darüber hinaus kann durch die Anforderung ausgerichteter Signale aus beiden Strategien die Zahl der ungültigen Trades erheblich reduziert und das Signal-Rausch-Verhältnis verbessert werden.

Risikoanalyse

Während die Strategie der doppelten gleitenden Durchschnittsumrechnung die Stärken beider Strategien nutzt, erbt sie auch die Risiken, die mit jeder Strategie verbunden sind.

Für die 123 Reversal Komponente garantieren zwei aufeinanderfolgende tägliche Umkehrungen keine echte Trendumkehrung. Sie könnten durchaus falsche Signale sein, die durch kurzfristige Pullbacks verursacht werden. Außerdem kann eine schlechte Parameter-Abstimmung des Stochastic Oscillators die Signalqualität verschlechtern.

Für den Teil der Preis- und MA-Divergenz können unangemessene gleitende Durchschnittsparameter zu Verzögerungssignalen führen.

Zusammenfassend lässt sich sagen, dass die größten Risiken dieser Strategie durch eine schlechte Parameter-Tuning und eine fehlerhafte Signalgenerierung verursacht werden.

Möglichkeiten zur Verbesserung

Die Strategie der doppelten Umkehrung des gleitenden Durchschnitts kann in folgenden Aspekten verbessert werden:

  1. Optimierung von MA- und Oszillatorparametern für bessere Signale
  2. Hinzufügen weiterer Indikatoren für die Signalfilterung
  3. Einbeziehung von Stop Loss und Take Profit
  4. Hinzufügen von Trendbestimmung, um zeitlose Trades zu vermeiden
  5. Manuelles Eingreifen und adaptive Parameter-Tuning

Mit einer Kombination verschiedener Verbesserungssysteme können die Strategie-Stabilität und Rentabilität weiter verbessert werden.

Schlussfolgerung

Die Dual Moving Average Reversal Breakout Strategie kombiniert die Stärken von Umkehr- und Trendfolgestrategien und generiert Trades nur, wenn sich beide Signaltypen ausrichten. Sie erfasst kurzfristige Umkehrmöglichkeiten, während sie größere Trends reitet, um Fallen zu vermeiden. Der Dual-Signal-Mechanismus verbessert auch die Zuverlässigkeit. Mit zahlreichen Verbesserungsmöglichkeiten ist es eine vielseitige und leistungsstarke quantifizierte Handelsstrategie.


/*backtest
start: 2023-12-10 00:00:00
end: 2023-12-17 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 13/04/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
// Percent difference between price and MA
//
// 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


DBP_MA(Length,SellZone,BuyZone) =>
    pos = 0.0
    xSMA = sma(close, Length)
    nRes = abs(close - xSMA) * 100 / close
    pos:= iff(nRes < BuyZone, 1,
           iff(nRes > SellZone, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Difference between price and MA", 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, "---- Difference between price and MA ----")
LengthDBP = input(14, minval=1)
SellZone = input(0.54, minval=0.01, step = 0.01)
BuyZone = input(0.03, minval=0.01, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDBP_MA = DBP_MA(LengthDBP,SellZone,BuyZone)
pos = iff(posReversal123 == 1 and posDBP_MA == 1 , 1,
	   iff(posReversal123 == -1 and posDBP_MA == -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