
Die Strategie ist eine verbesserte Handelsstrategie, die auf dem MACD-Indikator basiert. Sie kombiniert die Trend-Tracking-Eigenschaften des MACD-Indikators mit dem Gedanken des dynamischen Handels, um Handelssignale zu erzeugen, indem die Unterschiede zwischen schnellen und langsamen Moving Averages analysiert werden. Die Strategie führt auch Optimierungsmaßnahmen wie Trendbestätigung, Signalverzögerung, Festsetzung von Stop-Loss- und Stop-Stop-Prozentsätzen ein, um die Stabilität und Profitabilität der Strategie zu verbessern.
Der Kern der Strategie ist der MACD-Indikator, der aus der Differenz zwischen einem schnellen beweglichen Durchschnitt (schnellen EMA) und einem langsamen beweglichen Durchschnitt (schnellen EMA) besteht. Ein Kauf- oder Verkaufssignal wird erzeugt, wenn ein schneller EMA eine Kreuzung mit einem langsamen EMA aufweist.
Zusätzlich zu den grundlegenden MACD-Kreuzsignalen führt die Strategie eine Trendbestätigungsmechanik ein. Sie beurteilt, ob ein Markt im Aufwärtstrend oder im Abwärtstrend ist, indem sie ihn mit einem einfachen Moving Average (SMA) vergleicht. Nur wenn ein Kaufsignal im Aufwärtstrend oder ein Verkaufssignal im Abwärtstrend auftritt, werden die Transaktionen wirklich ausgeführt.
Die Strategie verlängert außerdem die Zeitfenster für die Signalbestätigung. Die entsprechende Transaktion wird ausgeführt, wenn die aktuelle K-Linie die Kauf- oder Verkaufskonditionen erfüllt und die vorherige K-Linie die gleichen Bedingungen erfüllt. Dies erhöht die Zuverlässigkeit des Signals weiter.
Schließlich gibt es eine Strategie, bei der die Stop-Loss- und Stop-Stop-Preise zu einem festen Prozentsatz festgelegt werden. Sobald ein Handel stattfindet, werden die Stop-Loss- und Stop-Stop-Preise anhand des Eröffnungspreises berechnet, und wenn diese Preise erreicht werden, wird der Handel automatisch ausgeglichen. Dies hilft bei der Kontrolle der Risiken und Gewinne eines einzelnen Handels.
Die Strategie ist eine verbesserte Handelsstrategie, die auf MACD-Indikatoren basiert und die Stabilität und Gewinnpotenzial der Strategie durch Methoden wie Trendbestätigung, Signalverzögerung und feste Stop-Loss-Stopps erhöht. Es bestehen jedoch auch Risiken in Bezug auf Parameteroptimierung, Trenderkennung, einzelne Indikatoren und Rückmeldedaten. In Zukunft kann man die Optimierung der Strategie in Kombination mit anderen Indikatoren, dynamischen Stop-Loss-Stopps, Positionsmanagement und Machine Learning in Betracht ziehen, um ihre Wirksamkeit in der Praxis 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)