Duale gleitende Durchschnitts-Trendfolgestrategie


Erstellungsdatum: 2024-03-22 13:56:44 zuletzt geändert: 2024-03-22 13:56:44
Kopie: 1 Klicks: 501
1
konzentrieren Sie sich auf
1617
Anhänger

Duale gleitende Durchschnitts-Trendfolgestrategie

Übersicht

Die Strategie nutzt die Kreuzung zweier Moving Averages, um die Veränderung der Markttrends zu beurteilen und auf Trends hin zu kaufen und zu verkaufen. Händeln Sie, wenn Sie über den kurzfristigen Durchschnitt über den langfristigen Durchschnitt gehen, und machen Sie eine Lücke, wenn Sie den langfristigen Durchschnitt unter dem kurzfristigen Durchschnitt überschreiten, um die Richtung des Trends zu folgen.

Strategieprinzip

Im Zentrum der Strategie stehen zwei Moving Averages: ein schneller Mittelwert (der Standardzeitpunkt ist 32) und ein langsamer Mittelwert (der Standardzeitpunkt ist ebenfalls 32 und kann durch Parameter angepasst werden). Wenn der Kurs die beiden Mittelwerte überschreitet, wird ein Trendwechsel erzeugt, wodurch ein Kaufsignal erzeugt wird:

  • Wenn Sie eine langsame Durchschnittslinie auf einer schnellen Durchschnittslinie durchqueren, tun Sie mehr.
  • Wenn die schnelle Durchschnittslinie unter der langsamen Durchschnittslinie liegt, machen Sie Platz.
  • Wenn Sie mehrere Einheiten besitzen, durchqueren Sie die schnelle Durchschnittslinie unter der langsamen Durchschnittslinie, platzieren Sie mehrere und machen Sie frei
  • Wenn Sie die Karte besitzen, fahren Sie auf der schnellen Mittellinie über die langsame Mittellinie, legen Sie die Karte frei und machen Sie mehr.

Durch diese Art der Gleichgewichtskreuzung kann die Strategie dem Trend folgen, indem sie mehrere Aufträge in einem Aufwärtstrend hält und leere Aufträge in einem Abwärtstrend hält, bis ein Trendumkehrsignal auftritt.

Vorteilsanalyse

  1. Trend-Tracking: Diese Strategie erfasst und orientiert sich an den wichtigsten Trends des Marktes, indem sie die Trends durch eine lineare Kreuzung beurteilt.
  2. Einfach und leicht zu bedienen: Strategie ist klar, nur zwei Mittellinien verwendet, die Parameter sind einfach und leicht zu verstehen und zu beherrschen.
  3. Breite Anwendbarkeit: Die Strategie ist für verschiedene Sorten und Zyklen anwendbar und kann in verschiedenen Märkten verwendet werden.
  4. Die Strategie ist in der Lage, die Positionen rechtzeitig zu platzieren und die Verluste zu kontrollieren, wenn sich der Trend umkehrt.

Risikoanalyse

  1. Schlechte Performance in Schwankungsmärkten: Häufige Kreuzungen von Signalen in Schwankungsmärkten führen dazu, dass die Strategie häufiger handelt und mehr verliert.
  2. Unzureichende Reaktion auf Ausnahmesituationen: Bei Extremsituationen (z. B. schnelle Erhöhungen oder Abstürze) kann die Strategie nicht reagieren, was zu größeren Verlusten führt.
  3. Die Optimierung von Parametern ist schwierig: Die Optimierung von Mittellinienparametern erfordert eine große Menge an historischen Daten und Rückprüfungen und die Orientierung der Parameter an zukünftigen Effekten ist begrenzt.

Angesichts der oben genannten Risiken kann man erwägen, geeignete Filter wie ATR oder die mittlere reale Breite zu verwenden, um den Übertritt in einem schwankenden Markt zu reduzieren. Man kann einen vernünftigen Stop-Loss setzen, um Einmalverluste zu kontrollieren.

Optimierungsrichtung

  1. Trendbestätigung: Nach der Erzeugung von Handelssignalen können weitere Trendbestätigungsindikatoren, wie MACD, DMI usw., hinzugefügt werden, um die Signale weiter zu filtern.
  2. Dynamische Stop-Losses: Die Einrichtung von dynamischen Stop-Losses anhand von Indikatoren wie ATR, anstatt von festen Prozentsätzen oder Preisstop-Losses, kann das Risiko besser steuern.
  3. Positionsmanagement: Positionsgröße wird dynamisch angepasst, je nach Stärke und Schwankungen des Trends, erhöht, wenn der Trend stark ist, und reduziert, wenn der Trend schwach ist.
  4. Mehrzeit-Mehrstufigkeit: Berücksichtigung von mehreren Ebenen eines Gleichlinien-Systems, wie z. B. Tageslinie + 4-Stundenlinie, um gegenseitige Filterung und Bestätigung zu ermöglichen und die Genauigkeit der Trendwahrnehmung zu verbessern.
  5. Anpassung der Parameter: Einführung von Optimierungsmethoden für anpassungsfähige Parameter wie genetische Algorithmen, um die Strategieparameter an unterschiedliche Marktbedingungen anzupassen.

Diese Optimierungen können die Fähigkeit der Strategie zur Bewältigung komplexer Märkte verbessern, aber es ist zu beachten, dass eine übermäßige Optimierung zu einer Kurvenanpassung führen kann, die zu einer schlechten zukünftigen Leistung führt.

Zusammenfassung

Die Strategie kann durch die Einführung von mehr Filterindikatoren, dynamischen Stop-Losses, Positionsmanagement, mehrfache Kombinationszyklen, Parameteranpassung usw. Optimiert werden. Die Strategie selbst ist jedoch begrenzt Schwierigkeiten vollständig zu regeln, um die reale Börse zu vermeiden, aber Sie müssen vorsichtig sein und flexibel an die Merkmale des Marktes angepasst werden.

Strategiequellcode
/*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')