Durchbruch-Handelsstrategie für dynamische Eröffnungsbereiche mit hoher Frequenz

ORB RANGE BREAKOUT HFT EST OHLC SL TP
Erstellungsdatum: 2025-02-21 14:02:59 zuletzt geändert: 2025-02-21 14:02:59
Kopie: 2 Klicks: 519
2
konzentrieren Sie sich auf
319
Anhänger

Durchbruch-Handelsstrategie für dynamische Eröffnungsbereiche mit hoher Frequenz Durchbruch-Handelsstrategie für dynamische Eröffnungsbereiche mit hoher Frequenz

Überblick

Die Strategie ist ein hochfrequentes Handelssystem, das auf einem Breakout in der Öffnungszeit basiert und sich auf die Preisspanne konzentriert, die sich zwischen 9:30-9:45 Uhr am Handelstag bildet. Die Strategie trifft Handelsentscheidungen, indem sie beobachtet, ob der Preis diese 15-Minuten-Spanne überschreitet, und kombiniert dabei dynamische Stop-Loss- und Profit-Einstellungen, um eine optimale Gewinne-Risiko-Balance zu erzielen.

Strategieprinzip

Die Kernlogik der Strategie besteht darin, innerhalb von 15 Minuten nach der Eröffnung eines jeden Handelstages (09:30-9:45 EST) eine Preisspanne zu erstellen, in der die Höchst- und Tiefstpreise in dieser Zeit aufgezeichnet werden. Sobald eine Spanne gebildet wird, überwacht die Strategie die Preisdurchbrüche vor 12 Uhr des Tages:

  • Wenn der Preis durch die Bandbreite auf die Strecke geht, eröffnen Sie eine Position mit einem Stop-Loss von 0,5 mal der Bandgröße und einem Stop-Loss von 3 mal der Stop-Loss-Größe
  • Die Einstellungsprinzipien für eine Off-Position, einen Stop-Loss und einen Stop-Stop sind identisch, wenn der Preis eine Abweichung unterhalb der Bandbreite erreicht. Die Strategie beinhaltet auch Mechanismen zur Verhinderung von Doppelgeschäften, um sicherzustellen, dass nur ein Handel pro Tag ausgeführt wird, und um alle Positionen zum Ende der Veräußerung zu liquidieren.

Strategische Vorteile

  1. Zeit-Effizienz: Die Strategie konzentriert sich auf die aktivsten Handelszeiten nach der Eröffnung und nutzt die großen Chancen für Schwankungen im Frühstück
  2. Risikokontrolle: Dynamische Stop-Loss-Einstellungen, die die Risikomanagementparameter anhand der tatsächlichen Schwankungsbreite bestimmen
  3. Flexibilität beim Handel: Funktion zur Auswahl von Handelstagen pro Woche, um ungünstige Handelstage in bestimmten Marktumgebungen zu vermeiden
  4. Klarheit der Ausführung: Handelssignale sind klar, die Ein- und Ausstiegsbedingungen sind klar und unabhängig von subjektiven Urteilen
  5. Hohe Automatisierungsstufe: Vollständige Automatisierung der Ausführung, reduziert die emotionalen Auswirkungen menschlicher Eingriffe

Strategisches Risiko

  1. Gefahr eines falschen Durchbruchs: Der erste Durchbruch nach der Bildung des Spielraumes kann ein falscher Durchbruch sein, der zu einem Stop-Loss führt
  2. Zeitverlust: Strategie, nur morgens zu handeln und gute Gelegenheiten in anderen Zeiten zu verpassen
  3. Schwankungs-Abhängigkeit: Es kann schwierig sein, genügend Gewinnspielraum für die Strategie zu finden, wenn die Marktschwankungen geringer sind
  4. Slippage-Effekte: Als Hochfrequenz-Handelsstrategie kann es zu einem größeren Slippage-Verlust bei der Ausführung kommen
  5. Abhängigkeit vom Marktumfeld: Die Strategie-Performance kann erheblich vom Gesamtmarktumfeld beeinflusst werden

Richtung der Strategieoptimierung

  1. Einführung von Durchschnittsindikatoren: Falsche Durchschnittssignale können durch die Beobachtung des Durchschnitts beim Durchbruch gefiltert werden
  2. Dynamische Anpassung der Handelszeiten: Optimierung der Handelszeitenfenster entsprechend der Besonderheiten der aktiven Zeiträume der verschiedenen Sorten
  3. Erhöhung der Trendfilterung: Trendbeurteilung in Verbindung mit größeren Zeiträumen, um die Genauigkeit der Handelsrichtung zu verbessern
  4. Optimierung der Stop-Loss-Einstellungen: Die Einstellung der Stop-Loss-Distanz kann mit einem dynamischen ATR-Wert erfolgen
  5. Hinzufügen von Volatilitätsfiltern: Beurteilung der Volatilitätsniveaus vor dem Börsengang, um zu entscheiden, ob der Handel am selben Tag ausgeführt wird

Zusammenfassen

Es handelt sich um eine Strategie, die durch den Fokus auf die aktivsten Zeiten des Marktes die Handelschancen erfasst. Die Strategie hat den Vorteil, dass sie eine klare Handelslogik und eine ausgefeilte Risikokontrolle bietet, aber sie muss auch auf potenzielle Risiken wie Falschbrüche und Marktumgebungsabhängigkeit achten. Durch kontinuierliche Optimierung und Perfektionierung wird die Strategie zu stabilen Erträgen im tatsächlichen Handel führen.

Strategiequellcode
/*backtest
start: 2025-01-21 00:00:00
end: 2025-01-24 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Binance","currency":"DOGE_USDT"}]
args: [["MaxCacheLen",580,358374]]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © UKFLIPS69

//@version=6
strategy("ORB", overlay=true, fill_orders_on_standard_ohlc = true)

trade_on_monday = input(false, "Trade on Monday") 
trade_on_tuesday = input(true, "Trade on Tuesday") 
trade_on_wednesday = input(true, "Trade on Wednesday")
trade_on_thursday = input(false, "Trade on Thursday")
trade_on_friday = input(true, "Trade on Friday")
// Get the current day of the week (1=Monday, ..., 6=Saturday, 0=Sunday)
current_day = dayofweek(time) 
current_price = request.security(syminfo.tickerid, "1", close)
// Define trading condition based on the day of the week
is_trading_day = (trade_on_monday and current_day == dayofweek.monday) or
                 (trade_on_tuesday and current_day == dayofweek.tuesday) or
                 (trade_on_wednesday and current_day == dayofweek.wednesday) or
                 (trade_on_thursday and current_day == dayofweek.thursday) or
                 (trade_on_friday and current_day == dayofweek.friday)
// ─── Persistent variables ─────────────────────────
var line  orHighLine       = na   // reference to the drawn line for the OR high
var line  orLowLine        = na   // reference to the drawn line for the OR low
var float orHigh           = na   // stores the open-range high
var float orLow            = na   // stores the open-range low
var int   barIndex930      = na   // remember the bar_index at 9:30
var bool  rangeEstablished = false
var bool  tradeTakenToday  = false  // track if we've opened a trade for the day

// ─── Detect times ────────────────────────────────
is930  = (hour(time, "America/New_York") == 9 and minute(time, "America/New_York") == 30)
is945  = (hour(time, "America/New_York") == 9 and minute(time, "America/New_York") == 45)

// Between 9:30 and 9:44 (inclusive of 9:30 bar, exclusive of 9:45)?
inSession = (hour(time, "America/New_York") == 9 and minute(time, "America/New_York") >= 30 and minute(time, "America/New_York") < 45)

// ─── Reset each day at 9:30 ─────────────────────
if is930
    // Reset orHigh / orLow
    orHigh := na
    orLow  := na
    rangeEstablished := false
    tradeTakenToday  := false
    // Record the bar_index for 9:30
    barIndex930 := bar_index
// ─── ONLY FORM OR / TRADE IF TODAY IS ALLOWED ─────────────────────
if is_trading_day
// ─── Accumulate the OR high/low from 9:30 to 9:44 ─
    if inSession
        orHigh := na(orHigh) ? high : math.max(orHigh, high)
        orLow  := na(orLow)  ? low  : math.min(orLow, low)

// ─── Exactly at 9:45, draw the lines & lock range ─
    if is945 and not na(orHigh) and not na(orLow)

    // Mark that the OR is established
        rangeEstablished := true

// ─── TRADING LOGIC AFTER 9:45, but BEFORE NOON, and if NO trade taken ─
    if rangeEstablished and not na(orHigh) and not na(orLow) 
    // Only trade if it's still BEFORE 12:00 (noon) EST and we haven't taken a trade today
        if hour(time, "America/New_York") < 12 and (not tradeTakenToday)
        // 1) Compute distances for stops & targets
            float stopSize   = 0.5 * (orHigh - orLow)      // half the OR size
            float targetSize = 3 * stopSize      // 3x the stop => 1.5x the entire OR
    
        // 2) Check if price breaks above OR => go long
            if close > orHigh 
            // Only enter a new long if not already in a long position (optional)
                if strategy.position_size <= 0
                    strategy.entry("ORB Long", strategy.long)
                    strategy.exit("Long Exit", from_entry = "ORB Long", stop = orHigh - stopSize, limit  = strategy.position_avg_price + targetSize)
                // Flag that we've taken a trade today
                    tradeTakenToday := true
    
        // 3) Check if price breaks below OR => go short
            if close < orLow 
            // Only enter a new short if not already in a short position (optional)
                if strategy.position_size >= 0
                    strategy.entry("ORB Short", strategy.short)
                    strategy.exit("Short Exit", from_entry = "ORB Short", stop = orLow + stopSize, limit  = strategy.position_avg_price - targetSize)
                // Flag that we've taken a trade today
                    tradeTakenToday := true
if hour(time, "America/New_York") == 16 and minute(time, "America/New_York") == 0
    strategy.close_all()