Diese Strategie kombiniert Multi-Timeframe-Donchians mit kurzfristigen Ausbrüchen während einer benutzerdefinierten Sitzung.
Berechnen Sie Tages- und kurzfristige Mittelpunkte zur Bildung von Ausbruchszonen über Zeitrahmen hinweg.
Handel nur während einer anpassbaren Handelssitzung.
Verwenden Sie Echtzeit-EMA des Preises als Einstiegspreis.
Stellen Sie Haltestellen außerhalb der Ausbruchszonen ein und stoppen Sie, wenn der Ausbruch fehlschlägt.
Schließen Sie Positionen, wenn der Preis in der Nähe der Mitte zurückfällt, was den gescheiterten Ausbruch bestätigt.
Multi-Zeitrahmen kombiniert, um falsche Ausbrüche effektiv zu filtern.
Definitive Sitzungen vermeiden Risiken bei wichtigen Nachrichtenereignissen.
EMA-Tracking ermöglicht zeitnahe Einträge im Einklang mit der Dynamik.
Stopps helfen, Risiken zu kontrollieren.
Ein erzwungener Ausstieg aus der Sitzung vermeidet Risiken über Nacht.
Kurzfristige Ausbrüche können mit Schläge und Stopps konfrontiert sein.
Einige Ausbrüche können nicht vollständig profitieren, bevor die Sitzung zu Ende ist.
Eine schlechte Definition der Sitzung könnte Gelegenheiten verpassen.
Es gibt keine Garantie, dass jeder Ausbruch den erwarteten Gewinn erzielt.
Die Optimierung birgt die Gefahr, dass die Parameter zu hoch angepasst werden.
Testen Sie die Ausbruchparameter, um optimale Kombinationen zu finden.
Bewertung zusätzlicher Indikatoren zur Verbesserung der Eingangsgenauigkeit.
Optimieren Sie die Handelssitzung für die Gewinn- und Risikobilanz.
Die Integration der Forschung erfordert Gewinnstrategien, um Gewinne zu erzielen.
Versuchsparameterunterschiede bei verschiedenen Symbolen.
Einsatz von maschinellem Lernen für dynamische Parameteroptimierung.
Mit Optimierungen rund um falsche Ausbrüche und Risikokontrollen kann es zu einem pragmatischen und effizienten kurzfristigen System verfeinert 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) // -------------------------------------------------------------------------------------------------