Die Ressourcen sind geladen. Beförderung...

Trend nach RSI und gleitendem Durchschnitt kombinierte quantitative Handelsstrategie

Schriftsteller:ChaoZhang, Datum: 2025-01-06
Tags:RSI- Nein.SMATPSL

img

Übersicht

Diese Strategie ist ein Trend folgendes Handelssystem, das den Relative Strength Index (RSI) und den einfachen gleitenden Durchschnitt (SMA) kombiniert. Es identifiziert die Markttrendrichtung mithilfe gleitender Durchschnitte und bestätigt gleichzeitig die Dynamik mit dem RSI und führt Trades aus, wenn sich Trend und Dynamik ausrichten. Die Strategie umfasst umfassende Stop-Loss- und Take-Profit-Mechanismen für eine effektive Risikokontrolle.

Strategieprinzip

Die Kernlogik beruht auf der Kombination von zwei technischen Indikatoren:

  1. Moving Average (MA): Wird verwendet, um den allgemeinen Trend zu bestimmen.
  2. Relative Strength Index (RSI): Wird verwendet, um die Kursdynamik zu bestätigen. Aufwärtsdynamik wird bestätigt, wenn der RSI eine Schwelle überschreitet (z. B. 55), Abwärtsdynamik, wenn er unterhalb der Schwelle liegt (z. B. 45).

Logik zur Erzeugung von Handelssignalen:

  • Long-Konditionen: Preis über der MA und RSI über der Kaufschwelle
  • Kurze Konditionen: Preis unter der MA und RSI unter der Verkaufsschwelle

Bei der Risikokontrolle werden prozentual basierte Stop-Loss- und Take-Profit-Level verwendet, die als feste Prozentsätze des Einstiegspreises festgelegt werden.

Strategische Vorteile

  1. Signalstabilität: Verringert falsche Signale durch doppelte Bestätigung von Trend und Momentum
  2. Umfassendes Risikomanagement: Festanteil von Stop-Loss und Take-Profit, um das Risiko pro Handel wirksam zu kontrollieren
  3. Parameterflexibilität: Schlüsselfaktoren wie MA-Periode und RSI-Schwellenwerte können für verschiedene Marktmerkmale optimiert werden
  4. Klare Strategie Logik: Handelsregeln sind einfach und intuitiv zu verstehen und umzusetzen
  5. Hohe Anpassungsfähigkeit: Anwendbar auf verschiedene Handelszeitrahmen

Strategische Risiken

  1. Trendumkehrrisiko: Es können an Trendwendepunkten aufeinanderfolgende Stopps auftreten.
  2. Risikopositionsrisiko: Frequente Handelsverluste auf seitlichen Märkten
  3. Abhängigkeit von Parametern: Die optimalen Parameter können in verschiedenen Marktumgebungen erheblich variieren.
  4. Risikopositionsrisiko: bei hoher Volatilität mögliches erhebliches Risikopositionsrisiko
  5. Verzögerung der technischen Indikatoren: MA und RSI haben eine inhärente Verzögerung, die möglicherweise den Zeitpunkt des Eintritts verzögert

Strategieoptimierungsrichtlinien

  1. Dynamische Parameteroptimierung: Einführung anpassungsfähiger Parametermechanismen zur Anpassung von MA-Perioden und RSI-Schwellenwerten anhand der Marktvolatilität
  2. Filterung des Marktumfelds: Hinzufügen eines Volatilitätsfiltermechanismus zur Anpassung der Positionsgröße oder Pause des Handels bei hoher Volatilität
  3. Mehrfache Zeitrahmenanalyse: Einbeziehung einer längeren Zeitrahmen-Trendbestätigung zur Verbesserung der Richtgenauigkeit
  4. Stop-Loss-Optimierung: Einführung von Trailing-Stops für einen besseren Gewinnschutz
  5. Signalfilterung: Zusatz von Lautstärke und anderen Hilfsindikatoren zur Verbesserung der Signalzuverlässigkeit

Zusammenfassung

Diese Strategie baut ein logisch klares und risikokontrolliertes Handelssystem auf, indem sie Trend- und Dynamikanzeiger kombiniert. Während inhärente Risiken bestehen, zeigt die Strategie durch geeignete Parameter-Einstellungen und Risikokontrolle eine gute Praktikabilität.


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © raiford87

//@version=6
strategy("RSI + MA Trend Strategy (v6)",
     shorttitle="RSI_MA_Trend_v6",
     overlay=true,
     initial_capital=50000,
     default_qty_type=strategy.fixed,
     default_qty_value=1)

// ─────────────────────────────────────────────────────────────────────────────────────
// 1. USER INPUTS
// ─────────────────────────────────────────────────────────────────────────────────────
maLength       = input.int(50,   "Moving Average Length")
rsiLength      = input.int(14,   "RSI Length")
rsiBuyLevel    = input.int(55,   "RSI > X for Buy",  minval=1, maxval=99)
rsiSellLevel   = input.int(45,   "RSI < X for Sell", minval=1, maxval=99)

stopLossPerc   = input.float(1.0,  "Stop Loss %",    minval=0.1)
takeProfitPerc = input.float(2.0,  "Take Profit %",  minval=0.1)

// ─────────────────────────────────────────────────────────────────────────────────────
// 2. INDICATOR CALCULATIONS
// ─────────────────────────────────────────────────────────────────────────────────────
maValue = ta.sma(close, maLength)
rsiVal  = ta.rsi(close, rsiLength)

// Trend conditions
bullTrend = close > maValue
bearTrend = close < maValue

// RSI conditions
rsiBull   = rsiVal > rsiBuyLevel
rsiBear   = rsiVal < rsiSellLevel

// ─────────────────────────────────────────────────────────────────────────────────────
// 3. ENTRY CONDITIONS
// ─────────────────────────────────────────────────────────────────────────────────────
longCondition  = bullTrend and rsiBull
shortCondition = bearTrend and rsiBear

if longCondition
    strategy.entry("RSI MA Long", strategy.long)
if shortCondition
    strategy.entry("RSI MA Short", strategy.short)

// ─────────────────────────────────────────────────────────────────────────────────────
// 4. STOP LOSS & TAKE PROFIT
// ─────────────────────────────────────────────────────────────────────────────────────
stopLossLevel   = stopLossPerc   * 0.01
takeProfitLevel = takeProfitPerc * 0.01

if strategy.position_size > 0
    stopPriceLong = strategy.position_avg_price * (1 - stopLossLevel)
    tpPriceLong   = strategy.position_avg_price * (1 + takeProfitLevel)
    strategy.exit("Exit Long", from_entry="RSI MA Long", stop=stopPriceLong, limit=tpPriceLong)

if strategy.position_size < 0
    stopPriceShort = strategy.position_avg_price * (1 + stopLossLevel)
    tpPriceShort   = strategy.position_avg_price * (1 - takeProfitLevel)
    strategy.exit("Exit Short", from_entry="RSI MA Short", stop=stopPriceShort, limit=tpPriceShort)

// ─────────────────────────────────────────────────────────────────────────────────────
// 5. PLOT SIGNALS & LEVELS
// ─────────────────────────────────────────────────────────────────────────────────────
plot(maValue, color=color.yellow, linewidth=2, title="Moving Average")

plotchar(longCondition,  title="Long Signal",  char='▲', location=location.belowbar, color=color.green, size=size.tiny)
plotchar(shortCondition, title="Short Signal", char='▼', location=location.abovebar, color=color.red,   size=size.tiny)

// Plot Stop & TP lines
posIsLong  = strategy.position_size > 0
posIsShort = strategy.position_size < 0

plotStopLong = posIsLong ? strategy.position_avg_price * (1 - stopLossLevel) : na
plotTpLong   = posIsLong ? strategy.position_avg_price * (1 + takeProfitLevel): na
plotStopShort= posIsShort? strategy.position_avg_price * (1 + stopLossLevel) : na
plotTpShort  = posIsShort? strategy.position_avg_price * (1 - takeProfitLevel): na

plot(plotStopLong,  color=color.red,   linewidth=2, style=plot.style_line, title="Stop Loss Long")
plot(plotTpLong,    color=color.green, linewidth=2, style=plot.style_line, title="Take Profit Long")
plot(plotStopShort, color=color.red,   linewidth=2, style=plot.style_line, title="Stop Loss Short")
plot(plotTpShort,   color=color.green, linewidth=2, style=plot.style_line, title="Take Profit Short")


Verwandt

Mehr