Umkehrung des Schlusskurs-Break-out-Strategies mit oscillierendem Stop Loss

Schriftsteller:ChaoZhang, Datum: 23.11.2023
Tags:

img

Übersicht

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.

Strategie Logik

Die Strategie beruht auf folgenden Schlüsselpunkten:

  1. 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.

  2. Wenn der Preis ansteigt und den jüngsten Schwingen hoch bricht, gilt es als Brechen des Widerstandsniveau, gehen lang.

  3. Wenn der Preis fällt und das jüngste Schwingen-Tief bricht, wird es als Brechen des Supportniveaus betrachtet, kurz zu gehen.

  4. Nach dem Eintritt wird die Stop-Loss-Linie eingestellt und passt sich anhand der Kursschwankungen an und bildet so einen schwingenden Stop-Loss-Mechanismus.

  5. 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.

Analyse der Vorteile

Zu den Vorteilen dieser Strategie gehören:

  1. Nachträgliche Trends können langfristige Trends zu stabilen Gewinnen führen.

  2. Ausgezeichnete Risikokontrolle, Schwingungs- und Schutzzustellungen reduzieren schnell Verluste.

  3. Genaue Signale: Langer Widerstandsbruch und Kurzer Unterstützungsbruch liefern zuverlässige Signale.

  4. Einfache Regeln, Anzeigen und Signale sind einfach zu befolgen.

  5. Marktanpassungsfähig, funktioniert gut für verschiedene Produkte und Marktbedingungen.

Risikoanalyse

Einige Risiken für diese Strategie:

  1. 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.

  2. Das Risiko der Optimierung von Parametern. Eine schlechte Optimierung von Parametern führt zu zu vielen oder zu wenigen Signalen. Optimierung erfordert Vorsicht.

  3. In extremen Bedingungen können die EMAs ihre Arbeit einstellen oder den Kurs zurücklassen.

  4. 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.

Optimierungsrichtlinien

Die Strategie kann in folgenden Aspekten weiter verbessert werden:

  1. Optimierung der Zeitrahmen, Anpassung der Berechnungszeiträume von MAs und Preismustern, Suche nach den besten Kombinationen.

  2. Anpassungsoptimierung, Abstimmung der Parameter für verschiedene Produkte.

  3. Test fortschrittlichere Stop-Loss-Methoden wie Trailing Stop, Chandelier Stop.

  4. Nehmen wir die Gewinnoptimierung, nehmen wir adaptive oder exponentielle Gewinnentnahmen, um eine bessere Belohnung zu erhalten.

  5. Fügen Sie Filter hinzu, Volumen- und Volatilitätsfilter, um falsche Ausbrüche zu vermeiden.

  6. Verbessern Sie die Eintrittssignale, kombinieren Sie mehr Indikatoren oder Muster, um Eintritte zu bestätigen.

Schlussfolgerung

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)


Mehr