Diese Strategie ist eine verbesserte Version der auf dem MACD-Indikator basierenden Handelsstrategie. Sie kombiniert die trendfolgende Eigenschaften des MACD-Indikators mit den Ideen des Momentum-Handels und erzeugt Handelssignale durch Analyse der Unterschiede zwischen den schnellen und langsamen gleitenden Durchschnitten. In der Zwischenzeit führt die Strategie auch Optimierungsmethoden wie Trendbestätigung, Signalverzögerungsbestätigung, festes Prozentsatz Stop-Loss und Take-Profit ein, um die Robustheit und Rentabilität der Strategie zu verbessern.
Der Kern dieser Strategie ist der MACD-Indikator, der aus der Differenz zwischen dem schnellen gleitenden Durchschnitt (EMA) und dem langsamen gleitenden Durchschnitt (EMA) besteht. Wenn die schnelle EMA die langsame EMA überschreitet, erzeugt sie ein Kauf- oder Verkaufssignal. Insbesondere, wenn die MACD-Linie durch die Signallinie von unten nach oben bricht, erzeugt sie ein Kaufsignal; wenn die MACD-Linie von oben nach unten unter die Signallinie fällt, erzeugt sie ein Verkaufssignal.
Neben den grundlegenden MACD-Crossover-Signalen führt die Strategie auch einen Trendbestätigungsmechanismus ein. Sie vergleicht mit dem einfachen gleitenden Durchschnitt (SMA), um festzustellen, ob sich der aktuelle Markt in einem Aufwärtstrend oder einem Abwärtstrend befindet. Nur wenn ein Kaufsignal in einem Aufwärtstrend oder ein Verkaufssignal in einem Abwärtstrend erscheint, wird die Handelsoperation ausgeführt. Dies vermeidet effektiv falsche Signale, die in einem oszillierenden Markt erzeugt werden.
Darüber hinaus verlängert die Strategie das Signalbestätigungszeitfenster. Das heißt, nur wenn die aktuelle Kerze die Kauf- oder Verkaufsbedingungen erfüllt und die vorherige Kerze auch die gleichen Bedingungen erfüllt, wird die entsprechende Transaktion ausgeführt. Dies verbessert die Zuverlässigkeit der Signale weiter.
Schließlich setzt die Strategie festgelegte Prozentsatz-Stop-Loss- und Take-Profit-Levels fest. Sobald ein Handel durchgeführt wurde, werden die Stop-Loss- und Take-Profit-Preise auf der Grundlage des Einstiegspreises berechnet und die Position wird automatisch geschlossen, sobald diese Preise erreicht sind. Dies hilft, das Risiko und die Rendite einer einzigen Transaktion zu kontrollieren.
Diese Strategie ist eine verbesserte Handelsstrategie, die auf dem MACD-Indikator basiert. Durch Trendbestätigung, Signalverzögerungsbestätigung, festen Stop-Loss und Take-Profit und andere Methoden verbessert sie die Robustheit und das Gewinnpotenzial der Strategie. Allerdings ist sie auch mit Risiken bei Parameteroptimierung, Trenderkennung, einzelnen Indikatoren, Backtesting-Daten und anderen Aspekten konfrontiert. In Zukunft können wir die Optimierung der Strategie aus Aspekten wie Kombination anderer Indikatoren, dynamischer Stop-Loss und Take-Profit, Positionsmanagement und maschinellem Lernen in Betracht ziehen, um ihre praktische Anwendungseffekt weiter zu verbessern.
/*backtest start: 2023-05-08 00:00:00 end: 2024-05-13 00:00:00 period: 1d basePeriod: 1h 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/ // © sligetit //@version=5 strategy("Improved MACD_VXI Strategy", overlay=true) // Calculate MACD and Signal Line fastLength = input.int(13, title="Fast Length") slowLength = input.int(21, title="Slow Length") signalLength = input.int(8, title="Signal Length") fastMA = ta.ema(close, fastLength) slowMA = ta.ema(close, slowLength) macd = fastMA - slowMA signal = ta.sma(macd, signalLength) // Plot MACD and Signal Line plot(macd, color=color.red, linewidth=1) plot(signal, color=color.blue, linewidth=2) // Calculate Cross Signals with Trend Confirmation smaPeriod = input.int(50, title="SMA Period") sma = ta.sma(close, smaPeriod) trendUp = close > sma trendDown = close < sma crossOver = ta.crossover(signal, macd) crossUnder = ta.crossunder(signal, macd) buySignal = crossOver and trendUp sellSignal = crossUnder and trendDown // Execute Buy/Sell Operations if buySignal strategy.entry("Buy", strategy.long) if sellSignal strategy.entry("Sell", strategy.short) // Extend Signal Confirmation Time Window longSignal = crossOver[1] and trendUp[1] shortSignal = crossUnder[1] and trendDown[1] if longSignal strategy.entry("Buy", strategy.long) if shortSignal strategy.entry("Sell", strategy.short) // Set Fixed Percentage Stop Loss and Take Profit stopLossPercent = input.float(1, title="Stop Loss (%)") / 100 takeProfitPercent = input.float(2, title="Take Profit (%)") / 100 stopLossPrice = strategy.position_avg_price * (1 - stopLossPercent) takeProfitPrice = strategy.position_avg_price * (1 + takeProfitPercent) strategy.exit("Stop Loss/Profit", "Buy", stop=stopLossPrice, limit=takeProfitPrice) strategy.exit("Stop Loss/Profit", "Sell", stop=stopLossPrice, limit=takeProfitPrice)