Dies ist eine Kombinationsstrategie, bei der RSI, MACD und gleitende Durchschnitte verwendet werden.
Die Strategie beurteilt hauptsächlich die folgenden vier Voraussetzungen für die Entscheidung über die langfristige Einreise:
Wenn die folgenden beiden Ausstiegsbedingungen erfüllt sind, wird die Strategie Positionen zum Stop-Loss schließen:
Die Strategie stoppt somit den Verlust rechtzeitig und vermeidet bei Gewinngewinnung oder Rückgriff große Verluste.
Der größte Vorteil dieser Strategie liegt in der Kombination von Indikatoren, die die Vorteile jedes Indikators voll ausschöpfen:
Die Anwendung des RSI vermeidet den Transaktionsgebührenschäden, die durch die wiederholte Eröffnung von Positionen in Bereichsgrenzmärkten verursacht werden.
Die Empfindlichkeit des MACD-Histogrammindikators sorgt für eine zeitnahe Erfassung der Wendepunkte.
Die gleitenden Durchschnitte filtern kurzfristige Marktgeräusche aus und geben dem Indikator-Effekt vollen Einfluss.
Zu den wichtigsten Risiken dieser Strategie gehören:
Das größte Risiko eines gleitenden Durchschnitts wie einer Trendstrategie ist ein großer Pullback, der durch eine Trendumkehr verursacht wird. Dies kann durch Positionsgrößen, Stop Loss usw. aktiv kontrolliert werden.
Schwierigkeiten bei der Parameteroptimierung. Multi-Indikator-kombinierte Strategien haben höhere Schwierigkeiten bei Parameter-Einstellung und Optimierung. Methoden wie Walk Forward, genetischer Algorithmus können für optimierte Parameter angewendet werden.
Die Strategie kann in folgenden Bereichen weiter optimiert werden:
Zusätzliche Filter erhöhen, um weitere falsche Signale zu vermeiden, z. B. mit Volumen-, Volatilitätsindikatoren usw. kombinieren.
Versuchsparameterunterschiede für mehr Produkte Anpassung von Parametern für mehr Sorten
Optimieren Sie die Einstellungen für gleitende Durchschnittsparameter. Testen Sie die Unterschiede zwischen verschiedenen Längenparametern.
Untersuchen Sie adaptive gleitende Durchschnitte, wechseln Sie verschiedene Parameter auf Basis von Marktregimes.
Zusammenfassend ist diese Strategie eine typisch optimierte Version der gleitenden Durchschnitts- und Trendfolgestrategie. Sie absorbiert die Stärken von Mainstream-Indikatoren wie MACD und RSI in Aspekten des Timing-Eintritts und Stop Loss. Die nächsten Schritte könnten aus Perspektiven wie Parameteroptimierung und Risikokontrolle verbessert werden, um die Strategie robuster und anpassungsfähiger für mehr Produkte zu machen, was zu einer höheren Stabilität führt.
/*backtest start: 2022-12-29 00:00:00 end: 2024-01-04 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Improved RSI MACD Strategy with Moving Averages", overlay=true) // Inputs src = input(close, title="RSI Source") // RSI Settings lengthRSI = input.int(14, minval=1) // Stop Loss Settings stopLossPct = input.float(0.09, title="Stop Loss Percentage") takeProfitPct = input.float(0.15, title="Take Profit Percentage") // MACD Settings fastlen = input(12) slowlen = input(26) siglen = input(9) // Strategy Settings longEntry = input(0, title="Long Entry Level") exitLevel = input(0, title="Exit Level") // EMA Settings emaShortLength = input(8, title="Short EMA Length") emaLongLength = input(21, title="Long EMA Length") atrMultiplier = input.float(2, title="atrMultiplier") atrLength = input.int(20, title="atrLength") // Indicators rsi1 = ta.rsi(src, lengthRSI) [macd, signal, hist] = ta.macd(src, fastlen, slowlen, siglen) // Calculate EMAs emaShort = ta.ema(src, emaShortLength) emaLong = ta.ema(src, emaLongLength) // Calculate ATR atr = ta.atr(atrLength) // Variables var bool canEnterLong = na // Strategy conditions longCondition = hist > longEntry and rsi1 > 50 and emaShort > emaLong and close > emaLong + atrMultiplier * atr // Entries and Exits if hist < exitLevel and emaShort < emaLong canEnterLong := true strategy.close("Long") // Store last entry price var lastEntryPrice = float(na) var lastEntryPrice2 = float(na) if longCondition strategy.entry("Long", strategy.long) canEnterLong := false lastEntryPrice := close if lastEntryPrice < close lastEntryPrice := close // Calculate Stop Loss and Take Profit Levels based on last entry price stopLossLevel = lastEntryPrice * (1 - stopLossPct) // Check for stop loss and take profit levels and close position if triggered if (strategy.position_size > 0) last_buy = strategy.opentrades[0] if (close < stopLossLevel) strategy.close("Long", comment="Stop Loss Triggered") if (close * (1 - takeProfitPct) > strategy.opentrades.entry_price(strategy.opentrades - 1) ) strategy.close("Long", comment="Take Profit Triggered")