Zweigliedrige gleitende Durchschnitts-Gegen-Trendstrategie

Schriftsteller:ChaoZhang, Datum: 2024-01-08 11:01:11
Tags:

img

Übersicht

Die Dual Moving Average Counter Trend Strategie ist hauptsächlich für den Swing-Trading auf dem FOREX-Markt konzipiert. Diese Strategie erzeugt Handelssignale mit zwei gleitenden Durchschnitten unterschiedlicher Zeitrahmen. Wenn der schnelle gleitende Durchschnitt über den langsamen gleitenden Durchschnitt überschreitet, wird eine Short-Position eingenommen, um eine Umkehr zu suchen; wenn der schnelle gleitende Durchschnitt unter dem langsamen gleitenden Durchschnitt überschreitet, wird eine Long-Position eingenommen, um eine Umkehr zu suchen.

Strategieprinzip

Diese Strategie verwendet gleitende Durchschnitte von 1-Stunden- und 1-Tage-Zeitrahmen. Der 1-Stunden-gleitende Durchschnitt spiegelt die Preisänderungen sensibler wider und kann als schneller gleitender Durchschnitt dienen; der 1-Tage-gleitende Durchschnitt reagiert langsamer auf Preisänderungen und kann als langsamer gleitender Durchschnitt dienen. Wenn der schnelle gleitende Durchschnitt über den langsamen gleitenden Durchschnitt kreuzt, wird davon ausgegangen, dass der aktuelle Markt bullisch ist und ein kurzes Signal erzeugt wird; wenn der schnelle gleitende Durchschnitt unter dem langsamen gleitenden Durchschnitt kreuzt, wird davon ausgegangen, dass der aktuelle Markt bärisch ist und ein langes Signal erzeugt wird.

Das Prinzip, Long oder Short zu gehen, um eine Umkehr zu suchen, wenn die schnellen und langsamen gleitenden Durchschnitte goldene Kreuzungen oder tote Kreuzungen haben, ist, dass, wenn sich die schnellen und langsamen gleitenden Durchschnitte kreuzen, es darauf hindeutet, dass der Markt umgekehrt sein könnte, und die Kreuzungen der schnellen Linie und der langsamen Linie sind der Zeitpunkt, um Umkehrsignale zu erzeugen. Gemäß der Umkehrhandelstheorie steigen oder fallen die Preise normalerweise nicht in eine Richtung, und es ist wahrscheinlich die Zeit der Preisumkehr, wenn es einen Durchbruch von wichtigen Unterstützungs- und Widerstandsniveaus gibt. Daher verwendet diese Strategie doppelte gleitende Durchschnittsumkehrsignale, um Umkehrchancen zu erfassen.

Diese Strategie legt auch Handelszeit- und Datumsscreening-Bedingungen fest.

Analyse der Vorteile

Die Strategie des doppelten gleitenden Durchschnitts hat folgende Vorteile:

  1. Der Umkehrhandel kann durch die Durchführung von Gegenoperationen an wichtigen Punkten in volatilen Marktbedingungen höhere Gewinne erzielen.

  2. Die Verwendung von doppelten gleitenden Durchschnittskombinationen filtert Signale und vermeidet falsche Signale. Ein einzelner Indikator ist anfällig für falsche Signale, während doppelte Indikatorkombinationen die Zuverlässigkeit der Signale verbessern können, indem sie einige falsche Signale herausfiltern und die Handelsmöglichkeiten zuverlässiger machen.

  3. Durch die Festlegung von Handelszeiten und Handelsdatumsbedingungen werden inaktive Marktzeiten vermieden und nicht in die Falle geraten.

  4. Im Vergleich zum Hochfrequenzhandel sind mittelfristige Handelsstrategien stabiler und vermeiden übermäßig häufigen Kauf und Verkauf.

  5. Die Festlegung der maximalen Anziehungsquote kann das Overnight-Risiko wirksam kontrollieren und riesige Verluste von Geldern vermeiden.

Risikoanalyse

Die Strategie zur Abweichung von einem doppelten gleitenden Durchschnitt hat außerdem folgende Risiken:

  1. Preisumkehrsignale sind nicht immer zuverlässig. Es besteht ein Verlustrisiko, wenn die Preise den Trend ohne Umkehrung fortsetzen. Verluste können durch Einstellen von Stop Loss kontrolliert werden.

  2. Wenn sich die beiden gleitenden Durchschnitte vor der Umkehr erheblich getrennt haben, kann es ein Verlustrisiko geben.

  3. Bei falscher Einstellung der Handelszeiten können Chancen verpasst werden. Wenn die Handelszeiten zu streng festgelegt werden, können einige Handelsmöglichkeiten verpasst werden.

  4. Wenn nach der Umkehrung der Verluste nicht unverzüglich gestoppt werden, entstehen weitere Verluste.

Optimierungsrichtlinien

Die Dual Moving Average Counter Trend Strategie kann auch in folgenden Aspekten optimiert werden:

  1. Indikatoren wie MACD, KDJ können in Kombination mit doppelten gleitenden Durchschnitten getestet werden, um die Signalgenauigkeit zu verbessern.

  2. Optimieren Sie gleitende Durchschnittszyklusparameter, um optimale Parameter zu finden.

  3. Erweitern oder verkleinern Sie die Handelszeiten, um die optimalen Handelszeiten zu finden.

  4. Hinzufügen von Trendfilterbedingungen, um Abweichungen zu vermeiden. Indikatoren wie ADX können hinzugefügt werden, um die Stärke des Trends zu beurteilen und eine Umkehr zu vermeiden, wenn kein offensichtlicher Trend besteht.

  5. Fügen Sie maschinelle Lernmodelle zur Signalprüfung hinzu. Modelle können trainiert werden, um die Zuverlässigkeit von Umkehrsignalen zu beurteilen und einige Signalen niedriger Qualität auszufiltern.

Zusammenfassung

Die Dual Moving Average Counter Trend Strategie eignet sich für den mittelfristigen Handel auf dem Forex-Markt. Sie verwendet goldene Kreuzungen und tote Kreuzungen zwischen schnellen und langsamen gleitenden Durchschnitten, um Umkehrsignale zu generieren, indem sie Gegenoperationen an wichtigen Marktpunkten durchführt, was den Vorteil eines großen Gewinnraums bietet. Gleichzeitig verwendet sie auch Einstellungen wie Handelszeiten und maximale Ziehung, um Risiken zu kontrollieren. Dies ist ein relativ stabiles Umkehrsystem, das hohe Renditen generieren kann, während Risiken kontrolliert werden. In Zukunft kann diese Strategie durch Methoden wie Indikator- und Parameteroptimierung und die Anwendung von maschinellen Lernmodellen verbessert und optimiert werden.


/*backtest
start: 2023-12-08 00:00:00
end: 2024-01-07 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © SoftKill21

//@version=4
strategy("gbpnzd 1h", overlay=true)

src = close
useCurrentRes = input(true, title="Use Current Chart Resolution?")
resCustom = input(title="Use Different Timeframe? Uncheck Box Above", type=input.resolution, defval="60")
len = input(28, title="Moving Average Length - LookBack Period")
//periodT3 = input(defval=7, title="Tilson T3 Period", minval=1) 
factorT3 = input(defval=7, title="Tilson T3 Factor - *.10 - so 7 = .7 etc.", minval=0) 
atype = input(2,minval=1,maxval=8,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA, 8=Tilson T3")

fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

res = useCurrentRes ? timeframe.period : resCustom
resCustom2 = input(title="plm", type=input.resolution, defval="D")
res2 = resCustom2
//hull ma definition
hullma = wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len)))
//TEMA definition
ema1 = ema(src, len)
ema2 = ema(ema1, len)
ema3 = ema(ema2, len)
tema = 3 * (ema1 - ema2) + ema3

//Tilson T3
factor = factorT3 *.10
gd(src, len, factor) => ema(src, len) * (1 + factor) - ema(ema(src, len), len) * factor 
t3(src, len, factor) => gd(gd(gd(src, len, factor), len, factor), len, factor) 
tilT3 = t3(src, len, factor) 
 

avg = atype == 1 ? sma(src,len) : atype == 2 ? ema(src,len) : atype == 3 ? wma(src,len) : atype == 4 ? hullma : atype == 5 ? vwma(src, len) : atype == 6 ? rma(src,len) : atype == 7 ? 3 * (ema1 - ema2) + ema3 : tilT3

out = avg 

ema20 = security(syminfo.tickerid, res, out)



plot3 = security(syminfo.tickerid, res2, ema20)

plot33 = security(syminfo.tickerid, res, ema20)

plot(plot3,linewidth=2,color=color.red) 
plot(plot33,linewidth=2,color=color.white) 

// longC = crossover(close[2], plot3) and close[1] > close[2] and close > close[1]
// shortc = crossunder(close[2],plot3)  and close[1] < close[2] and close < close[1]

volumeMA=input(24)
ema_1 = ema(volume, volumeMA)

timeinrange(res, sess) => time(res, sess) != 0
//entrytime = timeinrange(timeframe.period, "0900-0915")

myspecifictradingtimes = input('0900-2300', type=input.session, title="My Defined Hours")


entrytime = time(timeframe.period, myspecifictradingtimes) != 0

longC = crossover(plot33,plot3)  and time_cond and entrytime
shortc = crossunder(plot33,plot3) and time_cond and entrytime

// exitlong = crossunder(plot33,plot3)
// exitshort = crossover(plot33,plot3)

distanta=input(1.0025)
exitshort = plot33/plot3 > distanta
exitlong  = plot3/plot33 > distanta

inverse = input(true)
exit = input(false)
if(inverse==false)

    strategy.entry("long",1,when=longC)
    strategy.entry("short",0,when=shortc)
if(inverse)
    strategy.entry("long",1,when=shortc)
    strategy.entry("short",0,when=longC)

if(exit)
    strategy.close("long",when=exitlong)
    strategy.close("short",when=exitshort)

// if(dayofweek==dayofweek.friday)
//     strategy.close_all()

// risk = input(25)
// strategy.risk.max_intraday_loss(risk, strategy.percent_of_equity)

Mehr