
La stratégie de rupture de la première demi-heure est un système de négociation basé sur l’analyse du temps et de la rupture de la fourchette de prix, spécialement conçu pour les transactions sur des graphiques de 15 minutes. La stratégie utilise la fourchette de prix formée 30 minutes avant la date de la transaction comme référence clé pour déterminer la position de rupture. L’idée centrale de la stratégie est de capturer le mouvement des prix du début de la vente, après l’établissement de la direction du marché pour la tendance, tout en évitant les transactions excessives et en augmentant le taux de victoire global grâce à des restrictions strictes de transactions une fois par jour.
La stratégie est basée sur l’idée que les intervalles de prix établis au début du marché reflètent souvent les niveaux de support et de résistance importants de l’activité de négociation du jour. Le processus d’exécution est le suivant:
Formation de la zone de référenceLe système surveille et regroupe les données des deux lignes K de 15 minutes précédant le jour de la transaction (09:15:00-09:44:59) pour enregistrer les prix les plus élevés et les prix les plus bas de cette période, formant des “hauts de référence” et des “bas de référence”.
Paramètres de négociation: après la ligne 09:45K, la zone de référence est verrouillée. Au cours des périodes de négociation suivantes (incluant 09:15-12:00 et 13:00-16:00), la stratégie recherche des signaux de rupture de la zone de référence.
Règles d’entrée:
Règles de jeu:
Contrôle de la direction:
Le code stratégique assure la capture précise des signaux de rupture et la mise en œuvre rigoureuse des règles de gestion des risques grâce à un contrôle logique rigoureux du temps et de la détection des conditions de prix.
Après une analyse approfondie du code, la stratégie présente les avantages suivants:
La discipline est importante.Le système d’exploitation des transactions est basé sur le principe de l’exécution d’une seule transaction par jour, ce qui permet d’éviter les transactions excessives et les décisions émotionnelles, ainsi que de réduire les coûts et le stress psychologique liés à la fréquence des transactions.
Les règles sont claires.Les conditions d’entrée et de sortie sont claires et transparentes, il n’y a pas besoin de jugement subjectif, cela réduit les hésitations et les erreurs dans le processus de transaction.
Une grande souplesse: Avec le paramètre “trade_direction”, l’utilisateur peut choisir de négocier à plusieurs, à vide ou à deux, en fonction des tendances macroéconomiques ou de l’analyse personnelle, augmentant ainsi l’adaptabilité de la stratégie.
Une parfaite maîtrise des risques: Chaque transaction a un objectif de stop-loss et de stop-loss prédéfini, le rapport risque/rendement est clairement défini, ce qui contribue à une gestion de fonds stable à long terme.
Efficacité du tempsEn se concentrant sur les 30 premières minutes après l’ouverture du marché, la stratégie exploite les caractéristiques de la volatilité et de la direction du marché, ce qui améliore l’efficacité des transactions.
La structure du code est claire: la stratégie est réalisée en utilisant des réinitialisations de variables et des vérifications conditionnelles de manière logiquement cohérente, facile à comprendre et à maintenir.
Malgré la bonne conception de la stratégie, les risques potentiels sont les suivants:
Risque de fausse percée: le marché peut se retourner rapidement après la rupture de la zone de référence, ce qui entraîne le déclenchement d’un stop loss. La solution peut être d’ajouter un mécanisme de confirmation, comme demander au prix de rester un certain temps après la rupture ou de franchir une certaine amplitude avant d’exécuter la transaction.
Risque de surélargissement de la fourchette: Si le marché est trop volatile pendant les 30 premières minutes, cela peut entraîner un stop-loss trop éloigné, ce qui n’est pas conforme aux principes de gestion des risques raisonnables. Vous pouvez envisager de définir une limite de plage maximale ou de l’ajuster en fonction de la dynamique de la volatilité historique.
Risque de voir les distances trop étroitesEn revanche, si les mouvements du début sont trop faibles, cela peut entraîner un blocage trop proche de la cible d’entrée, ce qui rend difficile la couverture des coûts de transaction. La solution consiste à définir des exigences de minimum intervalle ou à choisir de ne pas négocier les jours de faible volatilité.
La dépendance au marché unique: les stratégies sont conçues pour un marché spécifique et peuvent ne pas fonctionner correctement dans d’autres marchés ou dans des conditions de marché différentes. Il est recommandé de procéder à un retour d’expérience adéquat et à une analyse d’adaptabilité du marché avant leur application.
Limitation du ratio de retour sur risque fixe: le code utilise un ratio de risque/récompense fixe ((risk_reward = 1.0), qui peut ne pas s’adapter aux différentes conditions du marché. Des ajustements dynamiques peuvent être envisagés en fonction de la volatilité du marché ou de l’intensité de la tendance.
L’analyse du code permet d’optimiser cette stratégie dans les directions suivantes:
Adaptation à la dynamiqueLa stratégie actuelle utilise une fenêtre de temps fixe (les 30 premières minutes) pour déterminer la zone de négociation. On peut envisager d’ajuster dynamiquement la zone de référence en fonction des fluctuations du marché (comme l’indicateur ATR) pour s’adapter à différentes conditions de marché.
Mécanisme de confirmation multiple: Ajout d’indicateurs techniques supplémentaires ou confirmation de modèles de prix, permettant de réduire le risque de fausse rupture si les transactions ne sont exécutées que lorsque la direction de la rupture est conforme à la tendance des moyennes mobiles à court terme.
Gestion partielle des positionsModification du code pour mettre en place des stratégies de stop partiel et de stop partiel, par exemple, après avoir atteint un certain objectif de profit, effacer une partie de la position et définir le stop suivi pour le reste afin de maximiser la capture des tendances.
Facteur de déclin temporelL’introduction d’un facteur de déclin temporel augmente les exigences de la stratégie pour les signaux de rupture au fur et à mesure que la journée de négociation avance, car, en général, la rupture de la position initiale est plus significative que la rupture de la position terminale.
Résultats de l’adaptation au risque: Adapte le ratio de risque/rendement de manière dynamique en fonction de la situation du marché (par exemple, la volatilité, l’intensité de la tendance), plutôt que d’utiliser des valeurs fixes, afin de mieux s’adapter aux différents environnements du marché.
Filtrage du nombre de transactions: augmenter le mécanisme de confirmation des transactions, confirmant que les percées ne sont valides que si le volume de transactions augmente de manière significative, réduisant ainsi davantage le risque de fausses percées.
La stratégie de rupture de la première demi-heure est un système de négociation simple et efficace qui permet d’exécuter des transactions en capturant les intervalles de prix clés établis par le marché tôt et en suivant leur rupture. La stratégie met l’accent sur la discipline, les règles claires et le contrôle strict des risques, particulièrement adaptée aux traders qui recherchent une méthode de négociation systématique.
Les principaux avantages de la stratégie résident dans ses règles claires d’entrée et de sortie, ses limites de transaction au jour le jour et ses préférences de direction de transaction ajustables, ce qui lui permet de maintenir la discipline d’une transaction systématisée tout en offrant une certaine flexibilité pour s’adapter à différents environnements de marché.
Bien qu’il existe des défis liés aux risques de fausses percées et aux paramètres de la fourchette, ces risques peuvent être efficacement atténués par des orientations d’optimisation recommandées, telles que l’ajustement de la fourchette dynamique, les mécanismes de confirmation multiple et la gestion des risques adaptatifs.
Dans l’ensemble, il s’agit d’un cadre stratégique conçu de manière rationnelle et logique, adapté aux transactions réelles des traders après une bonne compréhension et une adaptation appropriée, en particulier pour capturer la dynamique et la direction des actions du marché au début des heures.
/*backtest
start: 2025-06-24 00:00:00
end: 2025-07-12 00:00:00
period: 5m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/
//@version=6
strategy("HSI1! First 30m Candle Strategy (15m Chart)", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1, calc_on_every_tick=true)
// === CONFIGURATION ===
risk_reward = 1.0
trade_size = 1
// User input to choose direction
trade_direction = input.string("Both", title="Trade Direction", options=["Buy Only", "Sell Only", "Both"])
// === SESSION TIME ===
time_in_session = (time >= timestamp("Asia/Hong_Kong", year, month, dayofmonth, 9, 15) and time <= timestamp("Asia/Hong_Kong", year, month, dayofmonth, 12, 0)) or (time >= timestamp("Asia/Hong_Kong", year, month, dayofmonth, 13, 0) and time <= timestamp("Asia/Hong_Kong", year, month, dayofmonth, 16, 0))
// === FIRST 30-MIN CANDLE AGGREGATION ===
// The first 30m period: 09:15:00 to 09:44:59
start_30m = timestamp("Asia/Hong_Kong", year, month, dayofmonth, 9, 15)
end_30m = timestamp("Asia/Hong_Kong", year, month, dayofmonth, 9, 45)
// Identify the first bar of a new day for reset
curr_ymd = year * 10000 + month * 100 + dayofmonth
var int first_30m_ymd = na
var float first_30m_high = na
var float first_30m_low = na
var bool range_locked = false
// Reset all at the start of a new day
if na(first_30m_ymd) or first_30m_ymd != curr_ymd
first_30m_ymd := curr_ymd
first_30m_high := na
first_30m_low := na
range_locked := false
// If within first 30m window, keep updating highs/lows
if time >= start_30m and time < end_30m
first_30m_high := na(first_30m_high) ? high : math.max(first_30m_high, high)
first_30m_low := na(first_30m_low) ? low : math.min(first_30m_low, low)
// Lock the range after the 09:45 bar starts
if not range_locked and time >= end_30m and not na(first_30m_high) and not na(first_30m_low)
range_locked := true
carry_high = range_locked ? first_30m_high : na
carry_low = range_locked ? first_30m_low : na
// === SINGLE TRADE PER DAY LOGIC ===
var int last_trade_ymd = na
var bool traded_today = false
if na(last_trade_ymd) or last_trade_ymd != curr_ymd
traded_today := false // New day, reset flag
can_trade = time_in_session and not na(carry_high) and not traded_today
// === TRADE ENTRY/EXIT CONDITIONS ===
long_condition = can_trade and strategy.position_size == 0 and high >= carry_high and (trade_direction == "Buy Only" or trade_direction == "Both")
short_condition = can_trade and strategy.position_size == 0 and low <= carry_low and (trade_direction == "Sell Only" or trade_direction == "Both")
stop_long = carry_low
take_long = carry_high + (carry_high - carry_low) * risk_reward
stop_short = carry_high
take_short = carry_low - (carry_high - carry_low) * risk_reward
if long_condition
strategy.entry("Long", strategy.long, qty=trade_size, stop=carry_high)
strategy.exit("TP/SL Long", "Long", stop=stop_long, limit=take_long)
last_trade_ymd := curr_ymd
traded_today := true
if short_condition
strategy.entry("Short", strategy.short, qty=trade_size, stop=carry_low)
strategy.exit("TP/SL Short", "Short", stop=stop_short, limit=take_short)
last_trade_ymd := curr_ymd
traded_today := true
// === PLOTS ===
plot(carry_high, title="First 30m High", color=color.green, linewidth=2, display=display.none)
plot(carry_low, title="First 30m Low", color=color.red, linewidth=2, display=display.none)