
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.
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.
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.
In Bezug auf Risiken können Optimierungen in folgenden Bereichen vorgenommen werden:
Dynamische Durchbruchstrategien können in folgenden Dimensionen optimiert werden:
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.
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.
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.
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.
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.
/*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)