Diese Strategie nutzt die Preis-Breakout-Signale und den oszillierenden Stop-Loss-Mechanismus für das Risikomanagement. Es geht lang, wenn der Preis den Widerstand durchbricht und geht kurz, wenn der Preis die Unterstützung durchbricht. Zur gleichen Zeit werden oszillierende Stop-Loss- und Profit-Taking-Stops zur besseren Risikokontrolle angewendet.
Die Strategie beruht auf folgenden Schlüsselpunkten:
Mit MA wird die Trendrichtung bestimmt. Schnelle und langsame MA werden gezeichnet, schnelle MA über langsame MA signalisiert einen Bullentrend, während die unteren Signale einen Bärentrend signalisieren.
Wenn der Preis ansteigt und den jüngsten Schwingen hoch bricht, gilt es als Brechen des Widerstandsniveau, gehen lang.
Wenn der Preis fällt und das jüngste Schwingen-Tief bricht, wird es als Brechen des Supportniveaus betrachtet, kurz zu gehen.
Nach dem Eintritt wird die Stop-Loss-Linie eingestellt und passt sich anhand der Kursschwankungen an und bildet so einen schwingenden Stop-Loss-Mechanismus.
Stop-Loss-Exit kontrolliert das Risiko, Take-Profit-Exit sperrt den Gewinn ein.
Spezifisch verwendet es den Durchschnitt der hohen und niedrigen Preise als Quelle, zeichnet schnelle und langsame EMAs, um Trends zu bestimmen. Wenn die schnelle EMA über die langsame EMA geht und ein Widerstands-Breakout-Signal auftritt, geht es lang. Wenn die schnelle EMA unter die langsame EMA fällt und ein Support-Breakout auftritt, geht sie kurz. Nach dem Eintritt wird der niedrigste Preis in bestimmten Perioden als Stop-Loss-Linie festgelegt, passt sich mit dem Preisanstieg an. Die Take-Profit-Linie wird gezeichnet, um Gewinne zu erzielen.
Zu den Vorteilen dieser Strategie gehören:
Nachträgliche Trends können langfristige Trends zu stabilen Gewinnen führen.
Ausgezeichnete Risikokontrolle, Schwingungs- und Schutzzustellungen reduzieren schnell Verluste.
Genaue Signale: Langer Widerstandsbruch und Kurzer Unterstützungsbruch liefern zuverlässige Signale.
Einfache Regeln, Anzeigen und Signale sind einfach zu befolgen.
Marktanpassungsfähig, funktioniert gut für verschiedene Produkte und Marktbedingungen.
Einige Risiken für diese Strategie:
Das Risiko eines Ausbruchs, bei dem der Preis nach dem ersten Ausbruch rückläuft oder zurückfällt, wodurch ein Stop-Loss ausgelöst wird.
Das Risiko der Optimierung von Parametern. Eine schlechte Optimierung von Parametern führt zu zu vielen oder zu wenigen Signalen. Optimierung erfordert Vorsicht.
In extremen Bedingungen können die EMAs ihre Arbeit einstellen oder den Kurs zurücklassen.
Das Risiko einer Trendumkehr: Eine Position gegen den Trend hält man, wenn sich der Trend umkehrt.
Die richtige Einstellung der Parameter, der große Stoppverlust und die strikte Befolgung der Regeln können die Risiken weitgehend mindern.
Die Strategie kann in folgenden Aspekten weiter verbessert werden:
Optimierung der Zeitrahmen, Anpassung der Berechnungszeiträume von MAs und Preismustern, Suche nach den besten Kombinationen.
Anpassungsoptimierung, Abstimmung der Parameter für verschiedene Produkte.
Test fortschrittlichere Stop-Loss-Methoden wie Trailing Stop, Chandelier Stop.
Nehmen wir die Gewinnoptimierung, nehmen wir adaptive oder exponentielle Gewinnentnahmen, um eine bessere Belohnung zu erhalten.
Fügen Sie Filter hinzu, Volumen- und Volatilitätsfilter, um falsche Ausbrüche zu vermeiden.
Verbessern Sie die Eintrittssignale, kombinieren Sie mehr Indikatoren oder Muster, um Eintritte zu bestätigen.
Dies ist eine effektive Breakout-Strategie mit guter Risikokontrolle, einem stabilen Gewinnmodell und einem einfachen Logikfluss. Feinabstimmung und modulare Verbesserung können sie robuster und anpassungsfähiger für komplexe Märkte machen.
/*backtest start: 2023-12-03 00:00:00 end: 2023-12-10 00:00:00 period: 30m 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/ // © EduardoMattje //@version=4 strategy("Reversal closing price", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, initial_capital=10000) src = input(hl2, "Price source") order_direction = input("Both", "Order direction", options=["Both", "Long", "Short"]) // EMA calculation and plot ema_long_period = input(80, "EMA long period") ema_short_period = input(8, "EMA short period") ema_long = ema(src, ema_long_period) ema_short = ema(src, ema_short_period) ema_bull = ema_short > ema_long ema_bear = ema_short < ema_long plot(ema_long, "EMA long", ema_bull ? color.green : color.red, 3) plot(ema_short, "EMA short", ema_bull ? color.green : color.red, 3) // Settings risk_reward_ratio = input(2.0, "Risk to reward ratio", minval=1.0, step=0.1) stop_lookback = input(3, "Stoploss candle lookback", minval=1) ema_cross_stop = input(true, "Close if EMA crosses in oposite direction") allow_retracing = input(true, "Allow price retracing") // RCP calculation rcp_bull = low[0] < low[1] and low[0] < low[2] and close[0] > close[1] rcp_bear = high[0] > high[1] and high[0] > high[2] and close[0] < close[1] // Order placement in_market = strategy.position_size != 0 long_condition = rcp_bull and ema_bull and not in_market and order_direction != "Short" short_condition = rcp_bear and ema_bear and not in_market and order_direction != "Long" bought = strategy.position_size[0] > strategy.position_size[1] and strategy.position_size[1] == 0 sold = strategy.position_size[0] < strategy.position_size[1] and strategy.position_size[1] == 0 closed = not in_market and in_market[1] long_position = strategy.position_size > 0 short_position = strategy.position_size < 0 buy_price = high + syminfo.mintick sell_price = low - syminfo.mintick if long_condition strategy.entry("Long", true, stop=buy_price) if short_condition strategy.entry("Short", false, stop=sell_price) if allow_retracing better_price_long = barssince(closed) > barssince(long_condition) and barssince(long_condition) >= 1 and not in_market and ema_bull and buy_price < valuewhen(long_condition, buy_price, 0) and buy_price[0] < buy_price[1] if better_price_long strategy.cancel("Long") strategy.entry("Long", true, stop=buy_price) better_price_short = barssince(closed) > barssince(short_condition) and barssince(short_condition) >= 1 and not in_market and ema_bear and sell_price > valuewhen(short_condition, sell_price, 0) and sell_price[0] > sell_price[1] if better_price_short strategy.cancel("Short") strategy.entry("Short", false, stop=sell_price) // Stoploss orders stop_price = long_position ? valuewhen(bought, lowest(stop_lookback)[1] - syminfo.mintick, 0) : short_position ? valuewhen(sold, highest(3)[1] + syminfo.mintick, 0) : na stop_comment = "Stoploss triggered" strategy.close("Long", low <= stop_price, stop_comment) strategy.close("Short", high >= stop_price, stop_comment) plot(stop_price, "Stop price", color.red, 2, plot.style_linebr) // EMA cross close orders if ema_cross_stop if long_position and ema_bear strategy.close("Long", comment=stop_comment) if short_position and ema_bull strategy.close("Short", comment=stop_comment) // Take profit orders stop_ticks = abs(strategy.position_avg_price - stop_price) take_profit_price = long_position ? valuewhen(bought, strategy.position_avg_price + stop_ticks * risk_reward_ratio, 0) : short_position ? valuewhen(sold, strategy.position_avg_price - (stop_ticks * risk_reward_ratio), 0) : na target_comment = "Take profit" strategy.close("Long", high >= take_profit_price, target_comment) strategy.close("Short", low <= take_profit_price, target_comment) plot(take_profit_price, "Target price", color.green, 2, plot.style_linebr)