Doppel gleitender Durchschnittstrend nach Strategie

Schriftsteller:ChaoZhang, Datum: 2024-03-22 13:56:44
Tags:

img

Übersicht

Diese Strategie verwendet die Überschneidung von zwei gleitenden Durchschnitten, um Veränderungen der Markttrends zu bestimmen und Kauf-/Verkaufsentscheidungen auf der Grundlage der Trendrichtung zu treffen.

Strategieprinzip

Der Kern dieser Strategie besteht aus zwei gleitenden Durchschnitten: einem schnellen MA (Standardperiode 32) und einem langsamen MA (auch Standardperiode 32), der über Parameter angepasst werden kann.

  • Wenn der schnelle MA über den langsamen MA geht, gehen Sie lang
  • Wenn der schnelle MA unter dem langsamen MA überschreitet, gehen Sie kurz
  • Bei bereits gehaltener Longposition, wenn der schnelle MA unter den langsamen MA überschreitet, schließen Sie Long und gehen Sie Short
  • Bei bereits gehaltener Shortposition, wenn der schnelle MA über den langsamen MA überschreitet, kurz schließen und lang gehen

Durch diese MA-Crossover-Methode kann die Strategie dem Trend folgen und bei Aufwärtstrends Long-Positionen und bei Abwärtstrends Short-Positionen halten, bis ein Umkehrsignal erscheint.

Analyse der Vorteile

  1. Trendverfolgung: Durch die Verwendung von MA-Kreuzungen zur Identifizierung von Trends kann die Strategie die wichtigsten Markttrends effektiv erfassen und verfolgen.
  2. Einfach und einfach zu bedienen: Die Strategie-Logik ist klar und verwendet nur zwei MAs. Die Parameter-Einstellungen sind einfach und leicht zu verstehen und zu beherrschen.
  3. Breite Anwendbarkeit: Die Strategie ist für verschiedene Instrumente und Zeitrahmen anwendbar und kann auf verschiedenen Märkten angewendet werden.
  4. Zeitnahe Stop-Loss: Wenn sich der Trend umkehrt, kann die Strategie Positionen umgehend schließen, um Verluste zu kontrollieren.

Risikoanalyse

  1. Schlechte Performance in den unterschiedlichen Märkten: Wenn sich der Markt in einem seitlichen Muster befindet, führen häufige Crossover-Signale zu einem übermäßigen Handel und zu Verlusten.
  2. Unzureichende Reaktion auf extreme Bewegungen: Die Strategie kann zu langsam auf extreme Situationen reagieren (z. B. schnelle Anstiege oder Stürze), was zu großen Verlusten führt.
  3. Schwierigkeiten bei der Optimierung von Parametern: Die Optimierung der MA-Parameter erfordert eine große Menge an historischen Daten und Backtesting.

Um diesen Risiken entgegenzuwirken, können geeignete Filter wie ATR- oder Durchschnittswahrheitsbereichsfilter hinzugefügt werden, um den Überhandel auf den unterschiedlichen Märkten zu reduzieren; angemessene Stop-Losses festgelegt werden, um Einzelhandelsverluste zu kontrollieren; und die Parameter kontinuierlich optimiert werden, um sich an den Markt anzupassen.

Optimierungsrichtung

  1. Trendbestätigung: Nach Erstellung eines Handelssignals können zusätzliche Trendbestätigungsindikatoren wie MACD oder DMI eingesetzt werden, um die Signale weiter zu filtern.
  2. Dynamischer Stop-Loss: Verwenden Sie Indikatoren wie ATR, um für eine bessere Risikokontrolle dynamische Stop-Loss-Level anstelle von festen Prozentsätzen oder Preisstops festzulegen.
  3. Positionsgröße: Dynamische Anpassung der Positionsgrößen anhand von Trendstärke, Volatilität und anderen Indikatoren.
  4. Multi-Zeitrahmen-Analyse: Ein Multi-Zeitrahmen-MA-System, beispielsweise die Kombination von täglichen und 4-stündigen MA, ist zu berücksichtigen, um sich gegenseitig zu filtern und zu bestätigen und die Genauigkeit der Trendenkennung zu verbessern.
  5. Adaptive Parameter: Adaptive Parameteroptimierungsmethoden wie genetische Algorithmen sollen eingeführt werden, damit sich die Strategieparameter an unterschiedliche Marktbedingungen anpassen können.

Die oben genannten Optimierungen können die Fähigkeit der Strategie zur Bewältigung komplexer Märkte verbessern, aber es muss darauf geachtet werden, eine Überoptimierung zu vermeiden, die zu Kurvenanpassung und schlechter zukünftiger Leistung führen kann.

Zusammenfassung

Die doppelte MA-Trend-Folge-Strategie erfasst Trends durch MA-Crossovers. Sie ist einfach, einfach zu bedienen und weit verbreitet.

Die Strategie kann optimiert werden, indem mehr Filterindikatoren, dynamische Stop-Losses, Positionsgrößen, Multi-Timeframe-Analyse und adaptive Parameter eingeführt werden.

Insgesamt kann diese Strategie als grundlegende Trendstrategie dienen, ist aber schwierig, allein zu stehen und ist besser als Teil eines Portfolios von Strategien geeignet.


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

//@version=5

//study(title="Demo - SSL Basic", shorttitle="Demo - SSL Basic", overlay=true)
strategy(title='Demo - SSL Basic', shorttitle='Demo - SSL Basic', overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, commission_value=0.15)

// Backtest Date Range
start_date_long = input(title='Backtest Long Start Date', defval=timestamp('01 Jan 2018 00:00 +0530'))
end_date_long = input(title='Backtest Long End Date', defval=timestamp('25 Jan 2030 00:00 +0530'))
backtest_range = true

// Inputs
maType = input.string(title='SSL MA Type', options=['SMA', 'EMA', 'WMA'], defval='SMA')
sslLen = input(title='SSL Length', defval=32)
showCross = input(title='Show Crossover?', defval=true)
showEntry = input(title='Show Entry?', defval=true)
showTrend = input(title='Show Trend Colors?', defval=true)

// Calc MA for SSL Channel
calc_ma(close, len, type) =>
    float result = 0
    if type == 'SMA'  // Simple
        result := ta.sma(close, len)
        result
    if type == 'EMA'  // Exponential
        result := ta.ema(close, len)
        result
    if type == 'WMA'  // Weighted
        result := ta.wma(close, len)
        result    
    result

// Add SSL Channel
maHigh = calc_ma(high, sslLen, maType)
maLow = calc_ma(low, sslLen, maType)
Hlv = int(na)
Hlv := close > maHigh ? 1 : close < maLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? maHigh : maLow
sslUp = Hlv < 0 ? maLow : maHigh
ss1 = plot(sslDown, title='Down SSL', linewidth=2, color=showTrend ? na : color.red)
ss2 = plot(sslUp, title='Up SSL', linewidth=2, color=showTrend ? na : color.lime)

// Conditions
longCondition = ta.crossover(sslUp, sslDown)
shortCondition = ta.crossover(sslDown, sslUp)

// Strategy
if shortCondition
    strategy.close('Long', comment='Long Exit', alert_message='JSON')

if longCondition
    strategy.close('Short', comment='Short Exit', alert_message='JSON')

if backtest_range and longCondition
    strategy.entry('Long', strategy.long, comment='Long Entry', alert_message='JSON')

if backtest_range and shortCondition
    strategy.entry('Short', strategy.short, comment= 'Short Entry', alert_message='JSON')


// Plots
fill(ss1, ss2, color=showTrend ? sslDown < sslUp ? color.new(color.lime, transp=75) : color.new(color.red, transp=75) : na, title='Trend Colors')


Mehr