Handelsstrategie mit doppeltem gleitendem Durchschnitt

Schriftsteller:ChaoZhang, Datum: 15.01.2024
Tags:

img

Übersicht

Die Dual Moving Average Reversal Trading Strategie kombiniert die Bollinger Bands Reversal Trading Strategie und die Dual Exponential Moving Average Trading Strategie, um eine umfassende Signal Judgment Trading Strategie zu entwerfen.

Strategieprinzipien

Die Strategie besteht aus zwei Teilen:

  1. Bollinger-Band-Umkehrhandelsstrategie

    Verwenden Sie zwei Linien des Bollinger Bands-Indikators - %K-Linie und %D-Linie. Gehen Sie lang, wenn der Schlusskurs zwei aufeinanderfolgende Tage unter dem Schlusskurs des vorherigen Tages liegt und die %K-Linie über der %D-Linie liegt; gehen Sie kurz, wenn der Schlusskurs zwei aufeinanderfolgende Tage unter dem Schlusskurs des vorherigen Tages liegt und die %K-Linie unter der %D-Linie liegt.

  2. Strategie für einen doppelten exponentiellen gleitenden Durchschnitt

    Berechnen Sie die doppelten exponentiellen gleitenden Durchschnitte für 20 Tage und 20 Tage*2. Ein Handelssignal wird erzeugt, wenn der Preis über oder unter die doppelten gleitenden Durchschnitte geht.

Die Kombination von Signalurteilen: Ein tatsächliches Handelssignal wird nur erzeugt, wenn die Handelssignale beider Strategien übereinstimmen.

Analyse der Vorteile

Der größte Vorteil dieser kombinierten Strategie ist ihre hohe Zuverlässigkeit und wenige falsche Signale. Weil es die Signale von zwei verschiedenen Arten von Strategien erfordert, gleichzeitig ausgelöst zu werden, was einige der falschen Signale, die in einer einzigen Strategie erscheinen können, herausfiltert.

Darüber hinaus kann es durch die Kombination von Umkehr- und Trendstrategien sowohl kurzfristige Umkehrungen als auch mittelfristige Trends der zugrunde liegenden Wertpapiere erfassen.

Risikoanalyse

Das Hauptrisiko dieser Strategie besteht darin, dass, wenn der Markt langfristig schwankt, die beiden Strategien möglicherweise keine konsistenten Signale erzeugen, was zu ungültigen Marktbedingungen führt.

Darüber hinaus kann der doppelte gleitende Durchschnitt als mittelfristiger und langfristiger Indikator scheitern, wenn kurzfristige Umkehrungen rasch eintreten.

Optimierungsrichtlinien

Die Strategie kann wie folgt optimiert werden:

  1. Fügen Sie mehr Parameter wie Stop-Loss-Preis, Trailing Stop-Loss-Preisbereich usw. hinzu, um die Strategie kontrollierbarer zu machen.

  2. Fügen Sie mehr Indikatoren hinzu, um mehrere Filterkriterien zu bilden und laute Trades zu eliminieren.

  3. Optimieren Sie Indikatorparameter wie Bollinger-Periode, gleitender Durchschnittszeitraum usw., um die beste Parameterkombination zu finden.

  4. Testen Sie die Wirksamkeit dieser Strategie in verschiedenen Produkten (Aktien, Devisen, Kryptowährungen usw.) und wählen Sie die am besten geeigneten aus.

Schlussfolgerung

Die doppelte gleitende Durchschnittsumkehrstrategie erzeugt relativ zuverlässige kombinierte Handelssignale, indem sie Umkehr- und Trendstrategien kombiniert. Sie eignet sich für Händler, die sowohl an kurzfristigen Umkehrungen als auch an mittelfristigen Trends der Wertpapierpreise interessiert sind. Beachten Sie jedoch, dass die Strategie in langfristigen Bereichsmärkten scheitern kann. Durch die Optimierung von Parametern und das Hinzufügen von mehr Indikatoren kann die Praktikabilität dieser Strategie weiter verbessert werden.


/*backtest
start: 2023-01-08 00:00:00
end: 2024-01-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 12/04/2019
// This is combo strategies for get 
// a cumulative signal. Result signal will return 1 if two strategies 
// is long, -1 if all strategies is short and 0 if signals of strategies is not equal.
//
// 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.
//
// Secon strategy
// This indicator plots 2/20 exponential moving average. For the Mov 
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
// Please, use it only for learning or paper trading. Do not for real trading.
//
// 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

EMA2_20(MA_Length, MA_xPrice) =>
    xXA = ema(MA_xPrice, MA_Length)
    nHH = max(high, high[1])
    nLL = min(low, low[1])
    nXS = iff((nLL > xXA)or(nHH < xXA), nLL, nHH)
    pos = 0.0
    pos := iff(nXS > close[1] , -1, iff(nXS < close[1] , 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal and 2/20 EMA", shorttitle="Combo Backtest", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
MA_Length = input(20, minval=1)
reverse = input(false, title="Trade reverse")
MA_xPrice = close
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posEMA2_20 = EMA2_20(MA_Length, MA_xPrice)
pos = iff(posReversal123 == 1 and posEMA2_20 == 1 , 1,
	   iff(posReversal123 == -1 and posEMA2_20 == -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 ? red: possig == 1 ? green : blue ) 

Mehr