EMA-Kreuzung für die Long Line Quant-Strategie

Schriftsteller:ChaoZhang, Datum: 2024-02-20 15:22:12
Tags:

img

Übersicht

Diese Strategie nutzt die Crossover-Muster zwischen gleitenden Durchschnitten (MA) verschiedener Zeitrahmen und dem RSI-Indikator, um den Zeitpunkt der Ein- und Ausstiege in den Markt zu bestimmen, mit dem Ziel einer langfristigen Halte.

Strategie Logik

Der Kernmechanismus dieser Strategie besteht darin, Ein- und Ausstiegspunkte durch das goldene Kreuz und das Todeskreuz der EMA-Linien zu identifizieren.

Im Vergleich zu einem einzigen EMA-System können zusätzliche Kriterien für einen niedrigeren Schlusskurs als den offenen und einen niedrigeren Vortagswert verwendet werden, um falsche Ausbrüche zu filtern.

Die oben genannten Kaufkriterien werden mit verschiedenen Parametern so konfiguriert, dass 4 Kaufregeln entstehen, die verschiedenen EMA-Perioden und -Mengen entsprechen.

Für Ausgänge wird die Strategie auf ein Todeskreuz über EMA10 mit überkauftem RSI-Signal oder ein Todeskreuz unter EMA10 mit überverkauftem RSI-Signal überprüft.

Analyse der Vorteile

Die größte Stärke dieser Strategie liegt in der Effektivität der Identifizierung von Trendumkehrpunkten mit EMA-Kreuzungen, die es ermöglichen, dem Trend zu folgen. Im Vergleich zu einem einzigen EMA-System helfen doppelte EMA-Kreuzungen, falsche Signale zu eliminieren. Darüber hinaus ergänzt die Verwendung des RSI die Bestätigung vor dem Betreten von Überkauf/Überverkaufszonen und senkt somit das Handelsrisiko weiter.

Ein weiterer Vorteil ist die Implementierung von Pyramiden und durchschnittlichen Kostenrückgängen. Derartige Tranchenkäufe verteilen Mengen auf verschiedenen Preisniveaus und gewährleisten einen maximalen Gewinn, wenn der Trend wieder auftritt.

Risikoanalyse

Zu den wichtigsten Risiken dieser Strategie gehören:

  1. Die Verzögerung des EMA-Systems macht es langsam, auf plötzliche Kursänderungen zu reagieren und es nicht in der Lage, Positionen rechtzeitig zu verlassen.

  2. Das Fehlen von Beschränkungen für die Kaufzeiträume kann zu vorzeitigen Eintritten führen und zu einer Konsolidierung des Marktes führen.

  3. Pyramide-Kaufauftragungen können zu übergroßen Positionen führen, was eine Verwundbarkeit gegenüber einem einseitigen Ausbruchrisiko verursacht.

Möglichkeiten zur Verbesserung

Die Strategie kann in folgenden Bereichen weiter optimiert werden:

  1. Einbeziehung von Stop-Loss-Regeln zur Verminderung von Verlusten, wenn die wichtigsten Unterstützungsniveaus im Abwärtstrend überschritten werden, um Abwärtstrisiken zu kontrollieren.

  2. Hinzufügen eines Handelsvalidierungsmoduls zur Überprüfung der primären Trendrichtung, wobei nur dann Geschäfte getätigt werden, wenn der Gesamttrend nach oben zeigt, um Gegentrendrisiken zu vermeiden.

  3. Stärkere Kaufzonenbeschränkungen, um zu verhindern, dass vorzeitige Pyramiden-Eingänge vor der Bestätigung stattfinden.

  4. Einsatz von Algorithmen für maschinelles Lernen mit Multifaktoranalyse zur Verbesserung der Einstiegsgenauigkeit und der Gewinnraten.

Schlussfolgerung

Zusammenfassend illustriert dieser Artikel detailliert eine langfristige quantitative Strategie mit doppelten EMA-Crossover und RSI-Indikatoren für Einstiegs- und Ausstiegssignale, unterstützt durch Tranche-Positions-Building, um die Effizienz zu maximieren. Die Logik und Parameter können für Indizes und Aktien auf den Märkten angepasst werden, was sie zu einer vielseitigen Strategie für die langfristige Trendverfolgung macht. Die Risikoanalyse und Verbesserungsmöglichkeiten liefern auch Referenzen für die weitere Optimierung. Da die Strategie anspruchsvoller wird, glaube ich, dass sie als solides System für die langfristige Haltung in Live-Trading-Umgebungen dienen wird.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA_zorba1", shorttitle="3 NIFTY RSI EMA", overlay=true)

// Input parameters
qt1 = input.int(1, title="Quantity 1", minval=1)
qt2 = input.int(2, title="Quantity 2", minval=1)
qt3 = input.int(3, title="Quantity 3", minval=1)
qt4 = input.int(4, title="Quantity 4", minval=1)
ema10 = ta.ema(close, 10)
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)

// RSI(14) condition
rsi_threshold = 65
rsi_crossed_above_70 = ta.rsi(close, 14) > rsi_threshold
rsi_crossed_above_70_two_days_ago = ta.rsi(close[5], 14) > rsi_threshold or ta.rsi(close[4], 14) > rsi_threshold or ta.rsi(close[3], 14) > rsi_threshold
rsi_crossed_above_70_yesterday = ta.rsi(close[1], 14) > rsi_threshold

// Date range filter
start_date = timestamp(year=2021, month=1, day=1)
end_date = timestamp(year=2024, month=1, day=1)
in_date_range = true

// Profit condition
profit_percentage = input(1, title="Profit Percentage")  // Adjust this value as needed

// Pyramiding setting
pyramiding = input.int(1, title="Pyramiding", minval=1, maxval=10)

// Buy conditions
buy_condition_1 = in_date_range and close < ema20 and close > ema50 and close < open and close < low[1]
buy_condition_2 = in_date_range and close < ema50 and close > ema100 and close < open and close < low[1]
buy_condition_3 = in_date_range and close < ema100 and close > ema200 and close < open and close < low[1]
buy_condition_4 = in_date_range and close < ema200 and close < open and close < low[1]

// Exit conditions
profit_condition = strategy.position_avg_price * (1 + profit_percentage / 100) <= close
exit_condition_1 = in_date_range and ((close > ema10 and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and rsi_crossed_above_70_two_days_ago) and profit_condition and close < low[1] and close < low[2]
exit_condition_2 = in_date_range and ((close < ema10 and close[1] > ema10 and close < close[1] and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and rsi_crossed_above_70_yesterday) and profit_condition and close < low[1] and close < low[2]

// Strategy logic
strategy.entry("Buy1", strategy.long, qty=qt1 * pyramiding, when=buy_condition_1)
strategy.entry("Buy2", strategy.long, qty=qt2 * pyramiding, when=buy_condition_2)
strategy.entry("Buy3", strategy.long, qty=qt3 * pyramiding, when=buy_condition_3)
strategy.entry("Buy4", strategy.long, qty=qt4 * pyramiding, when=buy_condition_4)

strategy.close("Buy1", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy2", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy3", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy4", when=exit_condition_1 or exit_condition_2)


Mehr