
La stratégie de suivi dynamique des hauts et des bas de la matinée est une stratégie de négociation à court terme pour l’ouverture du marché boursier. La stratégie est basée sur les hauts et les bas des prix de 8:30 AM pour définir les niveaux de support et de résistance critiques et pour négocier lorsque les prix franchissent ces niveaux.
Le principe central de la stratégie est d’utiliser la fourchette de prix formée avant l’ouverture du marché à 8h30 du matin comme point de référence clé. Le processus de travail de la stratégie est le suivant:
La stratégie utilise plusieurs variables clés pour suivre l’état des transactions: les points hauts ((high830) et les points bas ((low830) enregistrent respectivement le prix le plus élevé et le prix le plus bas du graphique de 8:30 AM; la variable tradeTakenToday assure qu’une seule transaction est exécutée par jour; firstBreakoutHappened confirme si une première rupture a eu lieu. Les conditions de la transaction doivent être remplies en même temps: le point haut ou bas du prix de la rupture de 8:30 AM est la première rupture de la journée, la transaction n’a pas encore été exécutée ce jour-là et se trouve dans la période de temps autorisée pour la transaction.
Les conditions de sortie de la stratégie sont les suivantes: le prix touche la ligne de stop-loss suivie dynamiquement, atteint le niveau de stop-loss prédéfini ou touche la ligne de stop-loss fixe. La ligne de stop-loss suivie dynamiquement s’ajuste en conséquence à mesure que le prix se déplace dans la direction favorable, ce qui bloque une partie des bénéfices.
En analysant le code en profondeur, la stratégie présente les avantages suivants:
Des règles de négociation claires: La stratégie est basée sur un niveau de prix clair ((8:30 AM High/Low) pour définir le signal d’entrée, les conditions de la transaction sont claires et faciles à comprendre et à exécuter.
Amélioration de la gestion des risquesLa stratégie combine plusieurs mécanismes de contrôle des risques, y compris le suivi dynamique des arrêts, les arrêts fixes et les paramètres de stop, pour contrôler efficacement le risque de chaque transaction.
Évitez les transactions excessivesLe problème de l’augmentation des coûts de transaction et de la volatilité des émotions résultant de la fréquence des transactions a été évité en limitant l’exécution des transactions à une seule fois par jour.
Filtreur de temps: En définissant une fenêtre de temps de négociation spécifique (de 8h40 à 15h00), on évite les heures d’ouverture et de clôture où les marchés sont plus volatiles.
Dynamique de protection des bénéfices: Le mécanisme de suivi des arrêts permet d’ajuster la position des arrêts de perte à mesure que le prix se déplace dans la direction favorable, ce qui protège les courbes déjà rentables et ne met pas fin prématurément à une tendance potentiellement importante.
Automatisation de l’exécution: La stratégie est entièrement automatisée, évitant les interférences émotionnelles humaines et permettant d’exécuter des transactions strictement selon les règles prédéfinies.
Très adaptableLa stratégie peut être adaptée en fonction de l’environnement du marché et des préférences de risque personnelles.
Malgré la bonne conception de la stratégie, les risques potentiels sont les suivants:
Risque de fausse percéeLa solution est d’ajouter des mécanismes de confirmation, comme demander au prix de rester un certain temps ou une certaine quantité après la rupture.
Mobilité réduiteSi la volatilité du marché est faible, le prix peut ne pas être en mesure de franchir efficacement la fourchette de 8:30 AM, ce qui réduit les opportunités de négociation. Il est possible d’envisager d’ajuster les paramètres de la stratégie ou de suspendre son utilisation dans un environnement à faible volatilité.
Une dépendance excessive à un seul point de temps: La stratégie est fortement tributaire de la performance des prix à 8h30 du matin, et si des fluctuations anormales se produisent à ce moment-là, il est possible de définir des zones de négociation déraisonnables. Vous pouvez envisager d’utiliser des moyennes pour plusieurs points de temps ou de combiner d’autres indicateurs techniques.
Paramètre Sensibilité: Les paramètres de suivi des stop-loss et des stop-loss ont une influence importante sur la performance de la stratégie, et différents paramètres peuvent être nécessaires dans différents environnements de marché. Il est recommandé de faire un retour complet pour trouver la combinaison optimale de paramètres.
Manque de gestion des fonds: La stratégie actuelle ne contient pas de règles spécifiques de gestion des positions, ce qui peut entraîner un manque de contrôle des risques. Il est recommandé d’ajouter un mécanisme d’ajustement des positions basé sur la volatilité.
Risque de pénurie de marché: Si le marché présente un déficit important, le stop-loss fixe peut ne pas être exécuté efficacement, entraînant des pertes supérieures à celles attendues. L’utilisation d’un stop-loss en pourcentage au lieu d’un stop-loss à points fixes peut être envisagée.
D’après l’analyse du code, la stratégie peut être optimisée de la manière suivante:
Ajouter une confirmation de transaction: La stratégie actuelle est basée uniquement sur le prix de la rupture et ne prend pas en compte le facteur de transaction. L’ajout d’une confirmation de transaction peut améliorer la fiabilité du signal de rupture et filtrer les fausses ruptures de faible transaction. La méthode d’optimisation consiste à augmenter le volume de transaction dans les conditions d’entrée au-delà d’un certain pourcentage de transaction moyenne des lignes K précédentes.
Les filtres environnementauxLa performance de la stratégie peut varier considérablement en fonction de l’environnement du marché. Les transactions peuvent être exécutées dans l’environnement du marché approprié en ajoutant des indicateurs de tendance (comme l’ADX, les moyennes mobiles, etc.) ou des indicateurs de volatilité (comme l’ATR).
Optimisation des paramètres de stop loss et de stop stopLes paramètres de stop loss et stop stop sont actuellement fixés à des points fixes, mais ils peuvent être modifiés en fonction de la volatilité du marché (comme le multiplicateur d’ATR) afin d’adapter la stratégie aux différents environnements du marché.
Ajout d’une analyse de plusieurs périodes: La direction du marché combinée à une période plus élevée peut améliorer le taux de réussite des transactions. Par exemple, les transactions ne sont exécutées que lorsque la direction de la tendance du soleil est en accord avec la direction de la rupture.
Ajout d’un filtre pour les signaux inversésConsidérez les signaux inverses d’autres indicateurs du marché (comme le RSI, le MACD, etc.) et évitez de négocier dans des conditions extrêmes.
Mise en place d’une suspension dynamique: Outre le suivi des arrêts, on peut envisager d’ajuster dynamiquement les objectifs de freinage, par exemple en définissant plusieurs objectifs de freinage en fonction de la résistance au support ou du multiplicateur de fluctuation.
Optimiser la fenêtre de temps de négociation: Par l’analyse des données historiques, identifiez les meilleures fenêtres de trading, qui peuvent varier selon les marchés ou les produits.
La stratégie de suivi dynamique de la rupture des hauts et des bas du cours du matin est une méthode de négociation intra-journée basée sur la rupture de la fourchette de prix, qui permet de capturer les occasions de rupture des cours du jour en identifiant les hauts et les bas qui se forment à 8h30 du matin, combinés à un mécanisme de suivi dynamique des arrêts-pertes. Les règles de la stratégie sont claires, la gestion des risques est améliorée et le risque de survente est effectivement contrôlé en limitant le nombre de transactions par jour et en définissant une fenêtre de temps de négociation.
/*backtest
start: 2025-02-28 00:00:00
end: 2025-03-30 00:00:00
period: 5m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Breakout of 8:30 AM High/Low", overlay=true)
// Identify 8:30 AM candle
is830 = (hour == 8 and minute == 30)
// Persistent variables for tracking
var float high830 = na
var float low830 = na
var int lastTradeDay = na
var bool tradeTakenToday = false
// Store 8:30 AM high and low
if is830
high830 := high
low830 := low
// Ensure high/low persist throughout the day
high830 := nz(high830, high830)
low830 := nz(low830, low830)
// Plot the high and low of the 8:30 AM candle
plot(high830, color=color.green, title="8:30 High", linewidth=2)
plot(low830, color=color.red, title="8:30 Low", linewidth=2)
// Reset tradeTakenToday at the start of each new trading day
if dayofweek != lastTradeDay or (hour == 0 and minute == 0)
tradeTakenToday := false
lastTradeDay := dayofweek // Update last trade day to the current day
// Track first breakout candle that closes outside the range
firstBreakoutHappened = ta.barssince(close > high830 or close < low830) == 0
// Time restriction: Only trade between 8:40 AM and 3:00 PM
isTradingTime = (hour == 8 and minute >= 40) or (hour > 8 and hour < 15)
// Entry conditions: first 15-min candle close outside the range & within trading time
longEntry = close > high830 and firstBreakoutHappened and not tradeTakenToday and isTradingTime
shortEntry = close < low830 and firstBreakoutHappened and not tradeTakenToday and isTradingTime
// Trailing stop and take profit logic inputs
ticks = input.int(15, title="Trailing Stop Loss Ticks", minval=1) // Trailing stop in ticks
takeProfit = input.int(30, title="Take Profit (in Ticks)", minval=1) // Take profit in ticks
// Variables to track trailing stop levels
var float longTrailingStop = na
var float shortTrailingStop = na
// Update trailing stop levels for long trades
if (longEntry)
longTrailingStop := close - ticks * syminfo.mintick // Initialize trailing stop for long
// Update trailing stop levels for short trades
if (shortEntry)
shortTrailingStop := close + ticks * syminfo.mintick // Initialize trailing stop for short
// Update trailing stop levels during the trade
if (not na(longTrailingStop))
longTrailingStop := math.max(longTrailingStop, close - ticks * syminfo.mintick) // Move trailing stop up for long
if (not na(shortTrailingStop))
shortTrailingStop := math.min(shortTrailingStop, close + ticks * syminfo.mintick) // Move trailing stop down for short
// Exit Conditions (Trailing Stop)
endLongTrade = not na(longTrailingStop) and close <= longTrailingStop
endShortTrade = not na(shortTrailingStop) and close >= shortTrailingStop
// Reset trailing stop levels after exit
if (endLongTrade)
longTrailingStop := na
if (endShortTrade)
shortTrailingStop := na
// Stop loss and take profit settings
stopLoss = 100
// Execute trades (only one per day)
if longEntry
strategy.entry("Long", strategy.long, comment="Breakout Long")
strategy.exit("Long TP/SL", from_entry="Long", stop=close - stopLoss, limit=close + takeProfit * syminfo.mintick)
tradeTakenToday := true
if shortEntry
strategy.entry("Short", strategy.short, comment="Breakout Short")
strategy.exit("Short TP/SL", from_entry="Short", stop=close + stopLoss, limit=close - takeProfit * syminfo.mintick)
tradeTakenToday := true
// Exit trades using trailing stops
if endLongTrade
strategy.close("Long", comment="Trailing Stop Hit for Long")
if endShortTrade
strategy.close("Short", comment="Trailing Stop Hit for Short")