Die Strategie kombiniert die Multi-Halloween-Platte mit einem Multi-Time-Framework, um einen Short-Line-Breakout zu erfassen und innerhalb der Sitzungszeit zu handeln. Sie gehört zu den Strategien der Short-Line-Spread-Klasse.
Berechnen Sie die Tages- und Kurzzeit-Multiflugbahn, um einen Durchbruch in zwei Zeiträumen zu erzeugen.
Handel nur in den benutzerdefinierten Handelszeiten. Die Periode beginnt mit dem Durchbruch und endet mit der Flachstellung.
Die EMA wird als Einstiegspreis berechnet. Bei Überschreitung der mittleren Bahn wird ein Durchbruchsignal erzeugt.
Setzen Sie eine Stop-Line außerhalb des Durchbruchs.
Wenn der Preis in die Nähe des mittleren Spektrums zurückfällt, bestätigen Sie, dass der Durchbruch gescheitert ist, und platzieren Sie.
In Kombination mit mehreren Zeitrahmen kann man die falschen Durchbrüche effektiv filtern.
Die begrenzten Handelszeiten können wichtige Nachrichten verhindern.
Die EMA verfolgt die Preise im Laufe des Tages und kann sie rechtzeitig einführen.
Ein Stop-Line hilft bei der Risikokontrolle.
Die Zwangs-Platz-Position kann das Risiko über Nacht vermeiden.
Kurzschlussbruch kann durch einen ausgelösten Stoppschaden ausgelöst werden.
Einige Durchbrüche könnten bis zum Ende des Zeitraums nicht vollständig rentabel sein.
Die falsche Zeiteinstellung kann auch zu verpassten Handelschancen führen.
Es gibt keine Garantie, dass jeder Durchbruch den erwarteten Gewinn bringt.
Bei der Optimierung der Parameter kann es zu Problemen bei der Anpassung kommen.
Verschiedene Durchbruchparameter werden getestet, um die optimale Kombination zu finden.
Bewerten Sie andere Indikatoren, um die Genauigkeit der Zulassung zu verbessern.
Optimierung der Handelszeiten und Suche nach einem ausgewogenen Verhältnis zwischen Gewinn und Risiko.
Die Studie untersucht, wie diese Strategie mit einer Stop-Loss-Strategie kombiniert werden kann, um Gewinne zu sichern.
Verschiedene Varianten mit unterschiedlichen Parameter-Einstellungen werden getestet.
Dynamische Optimierung der Parameter mit einem Machine-Learning-Algorithmus.
Die Strategie versucht, Short-Line-Spread-Trading durch Sitzungsbeschränkte Durchbrüche durchzuführen. Optimierungen für False-Breaks und Risikokontrollen können zu einer praktisch effizienten Short-Line-Trading-Strategie verbessert werden.
/*backtest
start: 2023-08-20 00:00:00
end: 2023-09-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Breakout Scalper", overlay=true)
// -------------------------------------------------------------------------------------------------
// INPUTS
// -------------------------------------------------------------------------------------------------
// Period of the "fast" donchian channel
fast_window = input(title="Fast Window", defval=13, minval=1)
// Used for the volatility (atr) period
slow_window = input(title="Slow Window", defval=52, minval=1)
// Period of EMA used as the current price
instant_period = input(title="Instant Period", defval=3, minval=1)
// Minimum ratio of cloud width to ATR in order for trade to be active
cloud_min_percent = input(title="Minimum Cloud ATR Multiplier", type=float, defval=1.0, minval=0)
// Session where we allow trades to be active
trading_sesh = input(title="Trading Session", defval='1000-1500')
// -------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------
// SESSION TIMING
// -------------------------------------------------------------------------------------------------
is_newbar(t) =>
na(t[1]) and not na(t) or t[1] < t
day_time = time("D")
sess_time = time(timeframe.period, trading_sesh)
day_open_bar = is_newbar(day_time)
sess_open_bar = is_newbar(sess_time)
sess_close_bar = na(sess_time) and not na(sess_time[1])
sess_is_open = false
sess_is_open := sess_open_bar ? true : (sess_close_bar ? false : sess_is_open[1])
// -------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------
// DONCHIANS
// -------------------------------------------------------------------------------------------------
slow_high = na
slow_high := day_open_bar ? high : (high > slow_high[1] ? high : slow_high[1])
slow_low = na
slow_low := day_open_bar ? low : (low < slow_low[1] ? low : slow_low[1])
slow_mid = (slow_high + slow_low) / 2
fast_low = max(slow_low, lowest(fast_window))
fast_high = min(slow_high, highest(fast_window))
fast_mid = (fast_low + fast_high) / 2
// -------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------
// TREND CLOUD
// -------------------------------------------------------------------------------------------------
cloud_width = fast_mid - slow_mid
slow_atr = atr(slow_window)
cloud_percent = cloud_width / slow_atr
cloud_color = cloud_percent > cloud_min_percent ? green : (cloud_percent < -cloud_min_percent ? red : gray)
fp = plot(fast_mid, title="Fast MidR", color=green)
sp = plot(slow_mid, title="Slow MidR", color=red)
fill(fp, sp, color=cloud_color)
// -------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------
// INSTANT PRICE
// -------------------------------------------------------------------------------------------------
instant_price = ema(close, instant_period)
plot(instant_price, title="Instant Price", color=black, transp=50)
// -------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------
// ENTRY SIGNALS & STOPS
// -------------------------------------------------------------------------------------------------
buy_entry_signal = sess_is_open and (instant_price > fast_mid) and (cloud_percent > cloud_min_percent)
sell_entry_signal = sess_is_open and (instant_price < fast_mid) and (cloud_percent < -cloud_min_percent)
buy_close_signal = sess_close_bar or (cloud_percent < 0)
sell_close_signal = sess_close_bar or (cloud_percent > 0)
entry_buy_stop = slow_high
entry_sell_stop = slow_low
exit_buy_stop = max(slow_low, fast_low)
exit_sell_stop = min(slow_high, fast_high)
entry_buy_stop_color = (strategy.position_size == 0) ? (buy_entry_signal ? green : na) : na
plotshape(entry_buy_stop, location=location.absolute, color=entry_buy_stop_color, style=shape.circle)
entry_sell_stop_color = (strategy.position_size == 0) ? (sell_entry_signal ? red : na) : na
plotshape(entry_sell_stop, location=location.absolute, color=entry_sell_stop_color, style=shape.circle)
exit_buy_stop_color = (strategy.position_size > 0) ? red : na
plotshape(exit_buy_stop, location=location.absolute, color=exit_buy_stop_color, style=shape.xcross)
exit_sell_stop_color = (strategy.position_size < 0) ? green : na
plotshape(exit_sell_stop, location=location.absolute, color=exit_sell_stop_color, style=shape.xcross)
// -------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------
// STRATEGY EXECUTION
// -------------------------------------------------------------------------------------------------
strategy.entry("long", strategy.long, stop=entry_buy_stop, when=buy_entry_signal)
strategy.cancel("long", when=not buy_entry_signal)
strategy.exit("stop", "long", stop=exit_buy_stop)
strategy.entry("short", strategy.short, stop=entry_sell_stop, when=sell_entry_signal)
strategy.cancel("short", when=not sell_entry_signal)
strategy.exit("stop", "short", stop=exit_sell_stop)
strategy.close("long", when=buy_close_signal)
strategy.close("short", when=sell_close_signal)
// -------------------------------------------------------------------------------------------------