Dynamische Strategie für einen doppelten gleitenden Durchschnitt

Schriftsteller:ChaoZhang, Datum: 2024-02-26 11:13:17
Tags:

img

Übersicht

Dies ist eine dynamische Trailing Stop-Strategie, die auf doppelten EMA-Linien basiert. Sie verwendet 9-Tage- und 20-Tage-EMAs, um die Markttrendrichtung zu bestimmen, kombiniert mit dem RSI-Indikator, um falsche Breaks zu filtern. Sie verwendet auch den ATR-Indikator, um dynamische Stop-Loss- und Gewinnniveaus zu berechnen. Diese Strategie eignet sich für mittelfristige bis langfristige Bestände.

Strategie Logik

Die Strategie verwendet die 9-Tage-EMA als kurzfristige Linie und die 20-Tage-EMA als mittelfristige Linie, um den Preistrend zu bestimmen. Sie geht lang, wenn der Preis über die kurzfristige Linie überschreitet und der Schlusskurs höher ist als das Vortagshöhe, wobei der RSI unter 70 liegt und der Schlusskurs höher ist als der 20-Tage-EMA minus 1 ATR. Sie geht kurz, wenn der Preis unter die kurzfristige Linie überschreitet und der Schlusskurs niedriger ist als das Vortagshöhe, wobei der RSI höher als 30 und der Schlusskurs höher als der 20-Tage-EMA minus 1 ATR ist.

Der Stop-Loss wird zum Schlusskurs minus 1,5 mal ATR gesetzt. Der Take-Profit wird zum Schlusskurs plus ATR multipliziert mit einem Take-Profit-Koeffizienten gesetzt.

Analyse der Vorteile

  1. Die Verwendung von doppelten EMAs zur Ermittlung der wichtigsten Markttrends verhindert, dass sie durch Lärm unter Druck gesetzt werden
  2. Kombination des RSI-Indikators, um falsche Bremsen zu filtern, verbessert die Eingabegenauigkeit
  3. Dynamische Stop-Loss- und Take-Profit-Anpassung an die Marktvolatilität
  4. Der Trend nach dem Stop-Loss maximiert den Gewinn.

Risikoanalyse

  1. EMA-Linien haben Verzögerungseffekt, können kurzfristige Chancen verpassen
  2. Eine falsche Einstellung der RSI-Parameter kann die Eingaben verpassen.
  3. Eine unzulässige Stop-Loss/Take-Profit-Ratio kann zu locker oder zu streng sein
  4. Der Stop-Loss kann bei starken Marktschwankungen durchdrungen werden.

Optimierungsrichtlinien

  1. Verschiedene EMA-Kombinationen testen, um optimale Parameter zu finden
  2. Optimierung der RSI-Parameter, um die Eingangsgenauigkeit und die Fangmöglichkeiten auszugleichen
  3. Verschiedene Stop-Loss-/Take-Profit-Verhältnisse testen, um eine optimale Konfiguration zu finden
  4. Hinzufügen von mehr Filterbedingungen zur Verringerung der Wahrscheinlichkeit einer Durchdringung von Stop-Loss

Zusammenfassung

Insgesamt handelt es sich um eine relativ stabile mittelfristige bis langfristige Holding-Strategie. Sie verwendet doppelte EMAs, um den großen Markttrend zu bestimmen und zu vermeiden, dass sie von kurzfristigen Geräuschen beeinflusst wird. Die Hinzufügung von RSI filtert auch falsche Breaks in gewissem Maße. Darüber hinaus ermöglicht der dynamische Stop-Loss/Take-Profit-Mechanismus der Strategie, sich anhand der Marktvolatilität anzupassen. Es gibt jedoch immer noch Risiken wie Verzögerungen bei gleitenden Durchschnitten und das Potenzial für ein Stop-Loss-Durchdringen. Wir müssen die optimale Konfiguration durch Parameter-Tuning und Optimierung während der praktischen Anwendung finden.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("CJTrade", overlay=true)

short = ema(close, 9)
medium = ema(close, 20)
long = ema(close, 50)
very_long = ema(close, 200)

plot(short, color=color.gray, linewidth=1)
plot(medium, color=color.red, linewidth=1)
plot(long, color=color.black, linewidth=1)
plot(very_long, color=color.blue, linewidth=1)

rsiValue = rsi(close, 14)

near20EMA = close > medium - atr(14)

longCond = crossover(close[1], short) and close >= high[1] and rsiValue < 70 and near20EMA
shortCond = crossunder(close[1], short) and close <= low[1] and rsiValue > 30 and near20EMA

strategy.entry("Long", strategy.long, when=longCond)
strategy.entry("Short", strategy.short, when=shortCond)

atrValue = atr(14)
stopLossLevel = close - atrValue * 1.5

// Dynamic take profit level based on ATR
takeProfitMultiplier = input(2, title="Take Profit Multiplier", minval=0.1, maxval=10, step=0.1)
takeProfitLevel = close + atrValue * takeProfitMultiplier

// Trailing stop loss for long positions
longTrailingStop = close - atrValue * 2
strategy.exit("LongTrailingStop", from_entry="Long", loss=longTrailingStop)

// Trailing stop loss for short positions
shortTrailingStop = close + atrValue * 2
strategy.exit("ShortTrailingStop", from_entry="Short", loss=shortTrailingStop)

strategy.exit("Take Profit/Stop Loss", from_entry="Long", loss=stopLossLevel, profit=takeProfitLevel)
strategy.exit("Take Profit/Stop Loss", from_entry="Short", loss=stopLossLevel, profit=takeProfitLevel)


Mehr