Diese Strategie verwendet eine Kombination aus doppelten exponentiellen gleitenden Durchschnitten (EMA) und gleitenden durchschnittlichen Crossover (MACD) -Indikatoren, um kurzfristig überbewertete Aktien zu identifizieren und Short-Positionen einzunehmen, um von Kursrückgängen zu profitieren.
Berechnen Sie die 8-Tage-EMA und die 26-Tage-EMA. Wenn die 8-Tage-EMA über die 26-Tage-EMA geht, gilt dies als Kaufsignal.
Berechnen Sie den MACD mit 12-Tage-EMA, 26-Tage-EMA und 9-Tage-EMA der Differenz, die als DEA bezeichnet wird.
Eintrittsregel: 8-Tage-EMA > 26-Tage-EMA und MACD kreuzen über DEA, lang, wenn beide Bedingungen erfüllt sind.
Exit-Regel: Setzen Sie den Trailing Stop Loss auf 3% des Einstiegspreises, den Trailing Stop Loss auf 1% des Einstiegspreises, exit, wenn entweder berührt wird.
Die Strategie nutzt sowohl die schnelle Reaktion der EMA auf den Preis als auch MACD
Die Kombination von EMA und MACD verbessert die Genauigkeit der Erfassung von Handelssignalen.
Der nach dem Eintritt eingestellte 1% Trailing Stop verhindert eine Verlustvergrößerung.
Die Strategie wird durch den gesamten Bärenmarkt im Jahr 2022 getestet und simuliert reale Handelsumgebungen.
Flexible Parameter-Ausrichtung, Stop-Loss-Verhältnis, Positionsgrößenverhältnis sind an die persönlichen Risikopräferenzen angepasst.
Der 5-minütige Zeitrahmen bedeutet eine hohe Häufigkeit von Ein- und Ausstiegen, die ausreichend Zeit erfordert, um die Trades zu verfolgen.
Ein zu starker Trailing Stop Loss kann zu vorzeitigen Exits führen.
Schlechte Performance in den Trendmärkten EMA und MACD funktionieren besser für Trendmärkte.
Die Handelskosten müssen berücksichtigt werden. Jeder Handel entspricht Provisionen, häufiger Handel erhöht die Kosten.
Anpassung der EMA-Periodenparameter zur Optimierung von Ein- und Ausgängen. Kann die Verkürzung der schnellen EMA-Periode testen, die Ausbreitung zwischen EMAs vergrößern, um optimale Kombinationen zu finden.
Optimieren Sie die Stop-Loss-Ratio, um das Risiko eines vorzeitigen Stopps zu senken.
Versuche verschiedene Haltezeiten, um das Optimum zu finden.
Bewertung der Hinzufügung anderer technischer Filter, Prüfung der Hinzufügung von Volatilitätsindex usw. zur Verbesserung der Effektivität von Handelsentscheidungen.
Diese doppelte EMA- und MACD-Handelsstrategie zielt darauf ab, kurzfristige Pullback-Möglichkeiten für Shorting und Gewinn zu erfassen. Sie nutzt die schnelle Reaktion der EMA und die Dynamikänderungsurteilsstärke der MACD voll aus, um die Genauigkeit des Handelszeitplans mit doppelter Bestätigung zu verbessern. Optimierungsbereiche liegen in Parameter-Tuning, Rutschkontrolle, Haltezeit usw. Eine sorgfältige Parameteroptimierung kann zu guten Renditen führen.
/*backtest start: 2023-09-16 00:00:00 end: 2023-10-16 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Coinrule //@version=5 // strategy('Fast EMA above Slow EMA with MACD (by Coinrule)', // overlay=true, // initial_capital=1000, // process_orders_on_close=true, // default_qty_type=strategy.percent_of_equity, // default_qty_value=30, // commission_type=strategy.commission.percent, // commission_value=0.1) showDate = input(defval=true, title='Show Date Range') timePeriod = time >= timestamp(syminfo.timezone, 2022, 1, 1, 0, 0) notInTrade = strategy.position_size <= 0 // EMAs fastEMA = ta.ema(close, 8) slowEMA = ta.ema(close, 26) plot(fastEMA, color = color.blue) plot(slowEMA, color = color.green) //buyCondition1 = ta.crossover(fastEMA, slowEMA) buyCondition1 = fastEMA > slowEMA // DMI and MACD inputs and calculations [macd, macd_signal, macd_histogram] = ta.macd(close, 12, 26, 9) buyCondition2 = ta.crossover(macd, macd_signal) // Configure trail stop level with input options longTrailPerc = input.float(title='Trail Long Loss (%)', minval=0.0, step=0.1, defval=3) * 0.01 shortTrailPerc = input.float(title='Trail Short Loss (%)', minval=0.0, step=0.1, defval=1) * 0.01 // Determine trail stop loss prices longStopPrice = 0.0 shortStopPrice = 0.0 longStopPrice := if strategy.position_size > 0 stopValue = close * (1 - longTrailPerc) math.max(stopValue, longStopPrice[1]) else 0 shortStopPrice := if strategy.position_size < 0 stopValue = close * (1 + shortTrailPerc) math.min(stopValue, shortStopPrice[1]) else 999999 if (buyCondition1 and buyCondition2 and notInTrade and timePeriod) strategy.entry(id="Long", direction = strategy.long) strategy.exit(id="Exit", stop = longStopPrice, limit = shortStopPrice) //if (sellCondition1 and sellCondition2 and notInTrade and timePeriod) //strategy.close(id="Close", when = sellCondition1 or sellCondition2)