Stratégie de trading révolutionnaire à ouverture dynamique à haute fréquence

ORB RANGE BREAKOUT HFT EST OHLC SL TP
Date de création: 2025-02-21 14:02:59 Dernière modification: 2025-02-21 14:02:59
Copier: 2 Nombre de clics: 519
2
Suivre
319
Abonnés

Stratégie de trading révolutionnaire à ouverture dynamique à haute fréquence Stratégie de trading révolutionnaire à ouverture dynamique à haute fréquence

Aperçu

La stratégie est un système de négociation à haute fréquence basé sur les ruptures de la zone d’ouverture, axé sur la zone de prix formée entre 9h30 et 9h45 le matin du jour de négociation. La stratégie prend des décisions de négociation en observant si les prix franchissent cette zone de 15 minutes, tout en combinant des paramètres de stop-loss et de profit dynamiques pour obtenir le meilleur rapport risque-bénéfice. Le système comprend également une fonction de filtrage de la journée de négociation, qui peut être négociée de manière sélective en fonction des caractéristiques du marché pour différentes périodes de temps.

Principe de stratégie

La logique centrale de la stratégie consiste à établir une fourchette de prix dans les 15 minutes suivant l’ouverture de chaque jour de négociation (9h30-9h45 EST) et à enregistrer les prix les plus élevés et les plus bas de cette période. Une fois que la fourchette est formée, la stratégie surveille la rupture des prix avant 12h00 du jour:

  • Lorsque le prix franchit la fourchette, ouvrez une position en plus, avec un stop loss de 0,5 fois la taille de la fourchette et un stop loss de 3 fois le stop loss
  • Le principe de mise en position est le même que pour le stop loss et le stop-loss lorsque le prix est en baisse de la zone de rupture La stratégie comprend également des mécanismes pour empêcher la répétition des transactions, s’assurer qu’une seule transaction est exécutée par jour et liquider tous les dépôts à la clôture.

Avantages stratégiques

  1. Efficacité temporelle: la stratégie se concentre sur les heures de négociation les plus actives après l’ouverture des marchés, captant ainsi les occasions de fortes fluctuations dans les premiers marchés
  2. Contrôle des risques: paramètres de gestion des risques déterminés en fonction de l’amplitude des fluctuations réelles en utilisant des paramètres de stop-loss dynamiques
  3. Flexibilité de négociation: offre la possibilité de choisir des jours de négociation par semaine afin d’éviter des jours de négociation défavorables dans certaines conditions de marché
  4. Exécution claire: les signaux de transaction sont clairs, les conditions d’entrée et de sortie sont claires et ne sont pas influencées par des jugements subjectifs
  5. Automatisation élevée: l’exécution entièrement automatisée, réduisant l’impact émotionnel des interventions humaines

Risque stratégique

  1. Risque de fausse rupture: la première rupture après la formation de la zone de tir peut être une fausse rupture, entraînant une sortie de stop loss
  2. Défaillance temporelle: stratégie consistant à négocier uniquement le matin et à manquer de bonnes opportunités dans d’autres périodes
  3. La dépendance à la volatilité: les stratégies peuvent avoir du mal à obtenir suffisamment d’espace de profit les jours où les marchés sont moins volatiles
  4. Effets des points de glissement: en tant que stratégie de trading à haute fréquence, il est possible de subir de grandes pertes de points de glissement au cours de l’exécution
  5. Dépendance du marché: les performances des stratégies peuvent être fortement influencées par l’ensemble du marché

Orientation de l’optimisation de la stratégie

  1. Introduction d’un indicateur de trafic: les faux signaux de rupture peuvent être filtrés en observant le trafic au moment de la rupture
  2. Adaptation dynamique des heures de négociation: optimisation des fenêtres de négociation en fonction des caractéristiques des périodes d’activité des différentes variétés
  3. Augmentation du filtrage des tendances: une meilleure précision de la direction des transactions, combinée à une meilleure compréhension des tendances sur de plus longues périodes
  4. Optimisation des paramètres de stop loss: vous pouvez envisager d’utiliser l’indicateur ATR dynamique pour régler la distance de stop loss
  5. Ajout d’un filtre de volatilité: évaluation du niveau de volatilité avant l’ouverture pour décider d’exécuter la transaction du jour

Résumer

Il s’agit d’une stratégie de rupture d’ouvertures rationnelle et logiquement rigoureuse, conçue pour capturer les opportunités de négociation en se concentrant sur les moments les plus actifs du marché. L’avantage de la stratégie réside dans sa logique de négociation claire et son mécanisme de contrôle des risques parfait, mais il faut également être attentif aux risques potentiels tels que les fausses ruptures et la dépendance à l’environnement du marché.

Code source de la stratégie
/*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()