Momentum-Breakout-Handelsstrategie basierend auf Candlestick-Mustern


Erstellungsdatum: 2023-11-28 10:33:31 zuletzt geändert: 2023-11-28 10:33:31
Kopie: 0 Klicks: 602
1
konzentrieren Sie sich auf
1617
Anhänger

Momentum-Breakout-Handelsstrategie basierend auf Candlestick-Mustern

In diesem Artikel wird eine dynamische Durchbruch-Handelsstrategie vorgestellt, die auf K-Linien-Formen basiert. Die Strategie beurteilt Markttrends und Einstiegsmomente durch die Identifizierung von Antennen-Formen.

Strategieübersicht

Die dynamische Durchbruchstrategie beurteilt hauptsächlich potenzielle Umkehrsignale und tritt durch die Identifizierung von Mehrkopf- oder Luftangriff-Formen in den Bereich ein. Nachdem das Signal erkannt wurde, wird der Trend schnell verfolgt und ein Überschuss erzielt.

Strategieprinzip

Die Kernentscheidungslogik der Dynamic Breakthrough Strategie basiert auf der Identifizierung von Schluckformaten, die in mehrköpfige Schluckformaten und leere Schluckformaten unterteilt sind.

Mehrköpfige Schluckung bedeutet, dass der Schlusskurs des Tages höher ist als der Eröffnungskurs, und der Schlusskurs der letzten K-Linie niedriger ist als der Eröffnungskurs der letzten K-Linie. Diese Form zeigt normalerweise eine Veränderung der Marktmotivation an, eine Umkehrung der Mehrraumpsychologie, und ist daher ein guter Zeitpunkt für eine angemessene Nachholung.

Das Gegenteil von Blank-Swallowing ist ein Blank-Swallowing, bei dem der Schlusskurs des Tages niedriger als der Eröffnungskurs ist und der Schlusskurs der letzten K-Linie höher ist als der Eröffnungskurs der letzten K-Linie. Dies ist auch ein Hinweis auf eine Veränderung der Marktstimmung und somit eine Gelegenheit zum Blank-Swallowing.

Nach der Identifizierung von Schluckmustern, wird die Dynamik-Breakout-Strategie schnell Positionen zu erstellen, übermäßige Hebelwirkung zu erreichen, um potenzielle Umkehrtrends zu verfolgen. Darüber hinaus wird die Strategie auch dynamische Anpassung der Stop-Loss-Preise und Stop-Stop-Preise, während die Gewinnsicherheit streng kontrolliert Risiken.

Strategische Vorteile

  1. Schnell entscheiden, wann sich der Markt umdreht, um potenzielle Chancen zu nutzen
  2. Risiko-Gewinn-Matching und eine vernünftige Stop-Loss-Einstellung
  3. Die Leverage-Rate ist anpassbar für verschiedene Risikopräferenzen
  4. Vollautomatische Transaktionen sind effizienter

Strategisches Risiko

  1. Die Umkehrung der Schluckform ist nur für die Referenz bestimmt.
  2. Die Wahrscheinlichkeit eines Rückschlages ist vorhanden, was zu einem schmalen Schwung führen könnte.
  3. Überhöhte Hebel sind gefährlich
  4. Es ist notwendig, ausreichend Kapital zur Unterstützung der richtigen Position zu haben.

In Bezug auf Risiken können Optimierungen in folgenden Bereichen vorgenommen werden:

  1. Filtersignale in Kombination mit anderen Indikatoren
  2. Anpassung der Risikobegrenzung an das Leverage
  3. Erhöhung der Aufbaustufen und der Kosten-Nennpreis-Behandlung
  4. Optimierung der Stop-Loss-Strategie und Gewinnsicherung

Strategieoptimierung

Dynamische Durchbruchstrategien können in folgenden Dimensionen optimiert werden:

  1. Mehrfache Verifizierung der Signalzuverlässigkeit Indikatoren wie die Durchschnittslinie, die Schwankungsrate und andere können hinzugefügt werden, um die Übernahme zu überprüfen und die Zuverlässigkeit des Signals zu gewährleisten.

  2. Das sind die wichtigsten Faktoren, die die Marktpsychologie beeinflussen. In Kombination mit emotionalen Indikatoren wie dem Panikindex und dem Gierindex kann man die Zeit, in der sich der Markt umdreht, genauer bestimmen.

  3. Optimierung der Stop-Loss-Strategie Die Gewinne können durch bewegliche Stopps, schrittweise Stopps und bewegliche Stopps gesperrt werden, um das Rücknahmerisiko zu verringern.

  4. Einführung von Algorithmen Algorithmische Modelle, wie z. B. Machine Learning, können zur Beurteilung von Handelssignalen verwendet werden, um die Automatisierung der Strategie zu verbessern.

Zusammenfassen

Die Dynamik-Breakthrough-Strategie ist insgesamt eine eher typische Umkehrstrategie. Sie umkehrt sich durch die Erfassung von wichtigen K-Linie-Signalen, schnelle Beurteilung und Verfolgung von Markttrends. Obwohl ein gewisses Risiko besteht, kann es auf verschiedene Arten effektiv optimiert werden, um das Ertrag-Risiko-Verhältnis in einem vernünftigen Bereich zu kontrollieren, das für aggressiv vorwärtsgewandte Anleger geeignet ist.

Strategiequellcode
/*backtest
start: 2022-11-27 00:00:00
end: 2023-11-09 05:20:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title = "MomGulfing", shorttitle = "MomGulfing", overlay = true, initial_capital=10000, pyramiding=3, calc_on_order_fills=false, calc_on_every_tick=false, currency="USD", default_qty_type=strategy.cash, default_qty_value=1000, commission_type=strategy.commission.percent, commission_value=0.04)

syear = input(2021)
smonth = input(1)
sday = input(1)
fyear = input(2022)
fmonth = input(12)
fday = input(31)
start = timestamp(syear, smonth, sday, 01, 00)
finish = timestamp(fyear, fmonth, fday, 23, 59)
date = time >= start and time <= finish ? true : false

longs = input(true)
shorts = input(true)
rr = input(2.5)
position_risk_percent = input(1)/100
signal_bar_check = input.string(defval="3", options=["1", "2", "3"])
margin_req = input(80)
sl_increase_factor = input(0.2)
tp_decrease_factor = input(0.0)
check_for_volume = input(true)
var long_sl = 0.0
var long_tp = 0.0
var short_sl = 0.0
var short_tp = 0.0
var long_lev = 0.0
var short_lev = 0.0

initial_capital = strategy.equity
position_risk = initial_capital * position_risk_percent

bullishEngulfing_st = close[1] < open[1] and close > open and high[1] < close and (check_for_volume ? volume[1]<volume : true)
bullishEngulfing_nd = close[2] < open[2] and close[1] > open[1] and close > open and high[2] > close[1] and high[2] < close and (check_for_volume ? volume[2]<volume : true)
bullishEngulfing_rd = close[3] < open[3] and close[2] > open[2] and close[1] > open[1] and close > open and high[3] > close[2] and high[3] > close[1] and high[3] < close and (check_for_volume ? volume[3]<volume : true)
bullishEngulfing = signal_bar_check == "1" ? bullishEngulfing_st : signal_bar_check == "2" ? bullishEngulfing_st or bullishEngulfing_nd : bullishEngulfing_st or bullishEngulfing_nd or bullishEngulfing_rd
long_stop_level = bullishEngulfing_st ? math.min(low[1], low) : bullishEngulfing_nd ? math.min(low[2], low[1], low) : bullishEngulfing_rd ? math.min(low[3], low[2], low[1], low) : na
rr_amount_long = close-long_stop_level
long_exit_level = close + rr*rr_amount_long
long_leverage = math.floor(margin_req/math.floor((rr_amount_long/close)*100))

bearishEngulfing_st = close[1] > open[1] and close < open and low[1] > close and (check_for_volume ? volume[1]<volume : true)
bearishEngulfing_nd = close[2] > open[2] and close[1] < open[1] and close < open and low[2] < close[1] and low[2] > close and (check_for_volume ? volume[2]<volume : true)
bearishEngulfing_rd = close[3] > open[3] and close[2] < open[2] and close[1] < open[1] and close < open and low[3] < close[2] and low[3] < close[1] and low[3] > close and (check_for_volume ? volume[3]<volume : true)
bearishEngulfing = signal_bar_check == "1" ? bearishEngulfing_st : signal_bar_check == "2" ? bearishEngulfing_st or bearishEngulfing_nd : bearishEngulfing_st or bearishEngulfing_nd or bearishEngulfing_rd
short_stop_level = bearishEngulfing_st ? math.max(high[1], high) : bearishEngulfing_nd ? math.max(high[2], high[1], high) : bearishEngulfing_rd ? math.max(high[3], high[2], high[1], high) : na
rr_amount_short = short_stop_level-close
short_exit_level = close - rr*rr_amount_short
short_leverage = math.floor(margin_req/math.floor((rr_amount_short/short_stop_level)*100))

long = longs and date and bullishEngulfing
short = shorts and date and bearishEngulfing
bgcolor(long[1] ? color.new(color.teal, 80) : (short[1] ? color.new(color.purple, 80) : na))

if long and strategy.position_size <= 0
    long_lev := long_leverage

if short and strategy.position_size >= 0
    short_lev := short_leverage

long_pos_size = long_lev * position_risk
long_pos_qty = long_pos_size/close
short_pos_size = short_lev * position_risk
short_pos_qty = short_pos_size/close

if long
    if strategy.position_size <= 0
        long_sl := long_stop_level
        long_tp := long_exit_level

    else if strategy.position_size > 0
        long_sl := long_stop_level + sl_increase_factor*rr_amount_long
        long_tp := long_exit_level - tp_decrease_factor*rr_amount_long

    strategy.entry("L"+str.tostring(long_lev)+"X", strategy.long, qty=long_pos_qty)
    label_text = str.tostring(long_lev)+"X\nSL:"+str.tostring(long_sl)+"\nTP:"+str.tostring(long_tp)
    label.new(bar_index+1, na, text=label_text, color=color.green, style=label.style_label_up, xloc=xloc.bar_index, yloc=yloc.belowbar)

else if short
    if strategy.position_size >= 0
        short_sl := short_stop_level
        short_tp := short_exit_level

    else if strategy.position_size < 0
        short_sl := short_stop_level - sl_increase_factor*rr_amount_short
        short_tp := short_exit_level + tp_decrease_factor*rr_amount_short

    strategy.entry("S"+str.tostring(short_lev)+"X", strategy.short, qty=short_pos_qty)
    label_text = str.tostring(short_lev)+"X\nSL:"+str.tostring(short_sl)+"\nTP:"+str.tostring(short_tp)
    label.new(bar_index+1, na, text=label_text, color=color.red, style=label.style_label_down, xloc=xloc.bar_index, yloc=yloc.abovebar)

if (strategy.position_size > 0)
    strategy.exit(id="L TP/SL", stop=long_sl, limit=long_tp)

if (strategy.position_size < 0)
    strategy.exit(id="S TP/SL", stop=short_sl, limit=short_tp)

sl_level = strategy.position_size > 0 ? long_sl : strategy.position_size < 0 ? short_sl : na
plot(sl_level, color=color.red, style=plot.style_linebr)

tp_level = strategy.position_size > 0 ? long_tp : strategy.position_size < 0 ? short_tp : na
plot(tp_level, color=color.green, style=plot.style_linebr)