ADX、RSI-Momentumsindikatoren Strategie

Schriftsteller:ChaoZhang, Datum: 23.11.2023
Tags:

img

Übersicht

Diese Strategie verwendet die Dynamikindikatoren ADX, RSI und Bollinger Bands, um Markttrends und Überkauf/Überverkaufssituationen zu bestimmen, um automatisierten Handel für niedrigen Kauf und hohen Verkauf umzusetzen.

Strategieprinzipien

  1. Der ADX-Indikator bestimmt den Trend. Wenn der ADX größer als 32 ist, zeigt er einen Trendmarkt an.

  2. Der RSI-Indikator bestimmt Überkauf-/Überverkaufsniveaus. Wenn der RSI über 30 geht, signalisiert er einen Überverkauf. Wenn der RSI unter 70 geht, signalisiert er einen Überkauf.

  3. Bollinger Bands bestimmen Konsolidierung und Ausbruch. Wenn der Schlusskurs über das obere Band bricht, signalisiert er das Ende der Konsolidierung und des Aufbruchs. Wenn der Schlusskurs unter das untere Band bricht, signalisiert er das Ende der Konsolidierung und des Abbruchs.

Auf der Grundlage der oben genannten Indikatoren wird die Handelsstrategie wie folgt definiert:

Kaufbedingung:

  1. ADX>32, in Trend
  2. RSI überschreitet 30, überverkauft
  3. Schlusskurs unterhalb des unteren Bollinger Bands, Ende der Abwärtstrendkonsolidierung

Verkaufsbedingung:

  1. ADX>32, in Trend
  2. RSI unter 70, überkauft
  3. Schließpreis über dem oberen Bollinger-Band, Ende der Aufwärtstrendkonsolidierung

Analyse der Vorteile

Diese Strategie nutzt mehrere Indikatoren, um die Marktbedingungen zu bestimmen und vermeidet die Wahrscheinlichkeit eines Fehlers, wenn man sich auf einen einzigen Indikator stützt.

Im Vergleich zur Verwendung von Trendindikatoren allein kann diese Strategie kurzfristige Chancen zeitnah erfassen. Im Vergleich zur Verwendung von ausschließlich Oszillatoren kann diese Strategie die Trendrichtung besser erfassen. Daher behält sie den Vorteil der Verfolgung von Trends bei und verfügt gleichzeitig über die Flexibilität des Mittelumkehrhandels. Es ist eine potenziell effiziente quantitative Strategie.

Risikoanalyse

Zu den wichtigsten Risiken dieser Strategie gehören:

  1. Risiko falscher Signale von Indikatoren Indikatoren können ausfallen, wenn die Märkte extreme Ereignisse erleben.

  2. Das Risiko, dass die Stopps zu dicht sind, kann durch kurzfristige Marktschwankungen ausgeschaltet werden, wenn die Stopps zu dicht sind.

  3. Risiko einer Überanpassung: Wenn die Indikatorparameter nur auf historische Daten angepasst werden, wäre die Stabilität fraglich und kann sich nicht an die sich verändernde Marktdynamik anpassen.

Risikomanagementmaßnahmen:

  1. Manal unter abnormalen Marktbedingungen eingreifen, um die Strategie zu pausieren und Verluste durch falsche Signale zu vermeiden.

  2. Stellen Sie einen angemessenen Stoppabstand fest, kombinieren Sie ihn mit gleitenden Durchschnitten, um Stoppniveaus zu bestimmen, um zu vermeiden, dass Sie vorzeitig gestoppt werden.

  3. Einführung des Parameter-Tuning-Moduls, dynamische Optimierung der Parameter mit Walk Forward-Analyse, um die Robustheit zu gewährleisten.

Optimierungsrichtlinien

Zu den wichtigsten Aspekten zur Verbesserung dieser Strategie gehören:

  1. Optimierung der Indikatorparameter unter Verwendung von für jeden Markt maßgeschneiderten Algorithmen für maschinelles Lernen.

  2. Feature Engineering, die Einführung technischer Indikatoren und Trainingsmodelle wie SVM zur Verbesserung der Signalgenauigkeit.

  3. Einbeziehung von Breakout-Strategien, die auf den Merkmalen jedes Marktes basieren und Preiskanäle, Unterstützungs-/Widerstandsraten usw. zur Steigerung der Stabilität verwenden.

  4. Optimierung der Profit- und Stop-Loss-Mechanismen durch Einführung von Trailing-Stops, Moving-Stops usw., um den Gewinn zu maximieren und Risiken wirksam zu kontrollieren.

Schlussfolgerung

Diese mittelfristige quantitative Handelsstrategie nutzt mehrere technische Indikatoren wie ADX, RSI und Bollinger Bands, um Marktbedingungen zu bestimmen und Trades zu platzieren, wenn signifikante strukturelle Veränderungen erkannt werden. Die Logik ist klar und interpretierbar und reduziert die Abhängigkeit von einem einzigen Indikator drastisch. In der Zwischenzeit müssen Risiken wie falsche Signale, zu enge Stopps und Parameterüberfitting durch Risikomanagement und Modelloptimierung angegangen werden, um Stabilität und Effizienz zu verbessern.


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

//@version=4
strategy("DAX Shooter 5M Strategy", overlay=true)

//Creo ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
th = input(title="threshold", type=input.integer, defval=20)
dirmov(len) =>
    up = change(high)
    down = -change(low)
    plusDM = na(up) ? na : up > down and up > 0 ? up : 0
    minusDM = na(down) ? na : down > up and down > 0 ? down : 0
    truerange = rma(tr, len)

    plus = fixnan(100 * rma(plusDM, len) / truerange)
    minus = fixnan(100 * rma(minusDM, len) / truerange)

    [plus, minus]

adx(dilen, adxlen) =>
    [plus, minus] = dirmov(dilen)
    sum = plus + minus
    adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
    adx


[plus, minus] = dirmov(dilen)
sig = adx(dilen, adxlen)

//Creo RSI

src = close
len = input(7, minval=1, title="Periodo RSI")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
bandainf = input(30, title="Livello Ipervenduto")
bandasup = input(70, title="Livello Ipercomprato")


//Creo Bande di Bollinger

source = close
length = input(50, minval=1, title="Periodo BB")
mult = input(2.0, minval=0.001, maxval=50, title="Dev BB")

basis = sma(source, length)
dev = mult * stdev(source, length)

upper = basis + dev
lower = basis - dev

plot(basis, color=color.white)
p1 = plot(upper, color=color.aqua)
p2 = plot(lower, color=color.aqua)
fill(p1, p2)

//Stabilisco regole di ingresso

if crossover(rsi, bandainf) and adx(dilen, adxlen) > 32 and low < lower
    strategy.entry("COMPRA", strategy.long, limit=upper, oca_name="DaxShooter", comment="COMPRA")
else
    //strategy.exit("exit", "COMPRA", loss = 90) 
    strategy.cancel(id="COMPRA")

if crossunder(rsi, bandasup) and adx(dilen, adxlen) > 32 and high > upper
    strategy.entry("VENDI", strategy.short, limit=lower, oca_name="DaxShooter",comment="VENDI")
else
    //strategy.exit("exit", "VENDI", loss = 90)
    strategy.cancel(id="VENDI")

//Imposto gli alert
buy= crossover(rsi, bandainf) and adx(dilen, adxlen) > 32 and low < lower
sell= crossunder(rsi, bandasup) and adx(dilen, adxlen) > 32 and high > upper
alertcondition(buy, title='Segnale Acquisto', message='Compra DAX')
alertcondition(sell, title='Segnale Vendita', message='Vendi DAX')

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)


Mehr