
La stratégie est un système de trading quantitatif conçu pour le trading intraday, dont l’idée centrale est centrée sur l’action des prix au cours de la première heure du marché. La stratégie construit un système de trading complet en identifiant les hauts et les bas de la première heure d’ouverture du marché comme les niveaux de rupture critiques, combinant les mécanismes de stop-loss EMA (mobile moyenne), VWAP (mobile moyenne pondérée) et ATR dynamique (mobile moyenne réelle). La stratégie met particulièrement l’accent sur la sélection des opportunités de reprise, ne permettant le déclenchement du signal de trading qu’après la fin de la première heure du marché.
La logique centrale de la stratégie peut être divisée en plusieurs parties clés:
Les hauts et les bas de la première heure sont définisLa stratégie consiste à surveiller et à enregistrer les prix les plus élevés et les plus bas de la première heure suivant l’ouverture du marché (les 60 minutes commençant à 9:15), qui constitueront des points de rupture potentiels.
Calcul des indicateurs techniques:
Conditions d’entrée:
Stratégie de sortie:
Gestion des fonds:
Cette philosophie de conception combine les transactions de rupture, la confirmation de tendances et la gestion dynamique des risques, formant une méthode de négociation complète et systématique. La stratégie réduit efficacement le risque de fausses ruptures en exigeant que les ruptures de prix se produisent en même temps que la confirmation des indicateurs techniques.
Une analyse approfondie du code de la stratégie permet de résumer les avantages évidents suivants:
L’heure exacte d’entréeLa stratégie permet de capturer les occasions de rupture importantes de la journée en utilisant les hauts et les bas de la première heure comme niveaux clés. Les premières heures du marché définissent souvent les zones de négociation de la journée.
Mécanisme de confirmation multipleLa stratégie repose non seulement sur la rupture des prix, mais nécessite également la confirmation croisée de l’EMA avec le VWAP et la cohérence de la direction de la courbe de l’EMA. Cette filtration multiple réduit considérablement les faux signaux.
Gestion dynamique des risques: Utilisant l’ATR comme base de stop, la stratégie peut ajuster automatiquement la distance de stop en fonction de la volatilité du marché, donnant plus de marge de manœuvre au prix en cas de forte volatilité et resserrant le stop pour protéger les bénéfices en cas de faible volatilité.
Des règles de négociation clairesLa stratégie définit clairement les conditions d’entrée et de sortie, réduit les jugements subjectifs et aide à maintenir la discipline des transactions.
Fonctions d’aide visuelle: Le code contient des marquages de signaux et des visualisations des niveaux clés pour aider les traders à comprendre intuitivement la logique de la stratégie et à surveiller les opportunités de trading en temps réel.
Adaptation au rythme du marchéEn ne permettant l’entrée qu’après la fin de la première heure, la stratégie évite les fluctuations désordonnées courantes lors de l’ouverture des tirages, en se concentrant sur des mouvements plus susceptibles de se poursuivre.
Malgré la bonne conception de cette stratégie, il y a des risques potentiels et des limites:
Une dépendance excessive à une seule périodeUne stratégie qui s’appuie trop sur les hauts et les bas de la première heure peut entraîner une baisse de la qualité des signaux de trading ultérieurs si cette période n’est pas représentative (par exemple, une fluctuation anormalement faible ou une influence des nouvelles temporaires).
Limitations du ratio de freinage fixeL’objectif de stop-loss fixe de 1 pour cent peut ne pas s’adapter aux différents environnements de marché et aux différents actifs volatiles. En cas de forte tendance, cela peut entraîner une fin prématurée des bénéfices et la perte de bénéfices potentiels plus importants.
Risque de retard de l’EMA et du VWAP: En tant qu’indicateur de retard, les signaux de croisement des EMA et VWAP peuvent apparaître après que le prix a déjà fait une percée significative, entraînant un prix d’entrée défavorable.
Ne pas tenir compte de l’environnement global du marché: la stratégie n’intègre pas une évaluation plus large de l’environnement du marché (comme les tendances globales du marché, l’environnement volatile ou l’analyse de la corrélation) et peut être sous-performante dans certaines conditions du marché.
Les défis de la mise en œuvre de la stratégie de la journéeLes stratégies d’une journée qui exigent une plus grande efficacité d’exécution et un point de glissement inférieur peuvent être un défi dans les transactions réelles.
Pour réduire ces risques, il est recommandé de:
Sur la base de l’analyse de la logique de la stratégie et des risques potentiels, voici quelques orientations d’optimisation à considérer:
Adaptation des paramètres:
Augmenter le filtrage des conditions du marché:
Optimiser la logique de la première heure:
Amélioration du mécanisme de sortie:
Améliorer la gestion des risques:
Ces orientations d’optimisation visent à améliorer l’adaptabilité et la robustesse de la stratégie tout en préservant sa logique centrale, afin qu’elle puisse rester efficace dans des conditions de marché plus larges.
La stratégie d’optimisation de l’arrêt ATR et de l’inclinaison EMA de la première heure est un système de négociation quantifié sur une journée bien structuré, qui offre aux traders une méthode de négociation systématique en combinant la rupture des hauts et des bas de la première heure, la confirmation des indicateurs techniques et la gestion dynamique des risques. Le plus grand avantage de la stratégie réside dans son mécanisme de confirmation multiple et ses règles de négociation claires, qui aident à réduire les faux signaux et à maintenir la discipline de la négociation.
Cependant, il existe des limites à la stratégie, telles que la dépendance excessive à une seule période de temps et l’adaptabilité à des objectifs de stop-loss fixes. Les traders peuvent améliorer encore la robustesse et l’adaptabilité de la stratégie en mettant en œuvre des mesures d’optimisation recommandées, telles que l’ajustement des paramètres d’adaptation, l’augmentation du filtrage des conditions de marché et l’amélioration des mécanismes d’exit.
Dans l’ensemble, il s’agit d’une stratégie de négociation solide et réfléchie, particulièrement adaptée aux traders quantifiés intéressés par le day trading. Avec un ajustement et une optimisation appropriés des paramètres, il a le potentiel d’être un outil efficace dans le portefeuille de négociation. Il est à noter que toute stratégie de négociation nécessite un retour d’expérience et une validation suffisants, ainsi qu’une bonne gestion des fonds associée à la tolérance du risque personnel.
/*backtest
start: 2024-02-29 00:00:00
end: 2025-02-26 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("FnO Intraday Strategy with ATR SL, EMA Slope & Signals", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// INPUTS
atrPeriod = input.int(14, "ATR Period")
atrMultiplier = input.float(1.0, "ATR Stop Loss Multiplier", step=0.1)
targetPercent = input.float(1.0, "Profit Target (%)", step=0.1) * 0.01
// Define session start and first candle period (for Indian market, session starts at 09:15)
sessionStartHour = input.int(9, "Session Start Hour", minval=0, maxval=23)
sessionStartMinute = input.int(15, "Session Start Minute", minval=0, maxval=59)
firstCandleMins = 60 // First candle duration in minutes
// Compute today's session start and first candle end timestamps
currYear = year(time)
currMonth = month(time)
currDay = dayofmonth(time)
sessionStartTS = timestamp(currYear, currMonth, currDay, sessionStartHour, sessionStartMinute)
sessionEndTS = sessionStartTS + firstCandleMins * 60 * 1000 // PineScript time is in ms
// INITIALIZE first-hour high/low (reset at the start of each day)
var float firstHourHigh = na
var float firstHourLow = na
if (ta.change(time("D")))
firstHourHigh := na, firstHourLow := na
// Update first-hour high/low while within the first candle period
if (time >= sessionStartTS and time <= sessionEndTS)
firstHourHigh := na(firstHourHigh) ? high : math.max(firstHourHigh, high)
firstHourLow := na(firstHourLow) ? low : math.min(firstHourLow, low)
// Plot the first-hour high and low once the first candle period is over
plot(time > sessionEndTS ? firstHourHigh : na, title="First Hour High", color=color.green, style=plot.style_linebr)
plot(time > sessionEndTS ? firstHourLow : na, title="First Hour Low", color=color.red, style=plot.style_linebr)
// Calculate indicators: 9 EMA, VWAP, and EMA slope
ema9 = ta.ema(close, 9)
vwapVal = ta.vwap(hlc3) // Using typical price for VWAP calculation
emaSlope = ema9 - ema9[1]
// Define "first hour complete" flag so entries only occur after the first candle period
firstHourComplete = time > sessionEndTS
// ENTRY CONDITIONS
// Long: Price breaks above first-hour high, and 9 EMA crosses above VWAP with a positive slope.
longBreakout = ta.crossover(close, firstHourHigh)
longEMAConfirmation = ta.crossover(ema9, vwapVal) and (emaSlope > 0)
longCondition = firstHourComplete and longBreakout and longEMAConfirmation
// Short: Price breaks below first-hour low, and 9 EMA crosses below VWAP with a negative slope.
shortBreakout = ta.crossunder(close, firstHourLow)
shortEMAConfirmation = ta.crossunder(ema9, vwapVal) and (emaSlope < 0)
shortCondition = firstHourComplete and shortBreakout and shortEMAConfirmation
// Generate entries
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
// Add buy and sell signals on the chart
plotshape(longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// Calculate ATR for dynamic stop loss
atrValue = ta.atr(atrPeriod)
// Set exits using ATR-based stop loss and fixed profit target (1% gain)
if (strategy.position_size > 0)
longStop = strategy.position_avg_price - atrValue * atrMultiplier
longTarget = strategy.position_avg_price * (1 + targetPercent)
strategy.exit("Long Exit", from_entry="Long", stop=longStop, limit=longTarget)
if (strategy.position_size < 0)
shortStop = strategy.position_avg_price + atrValue * atrMultiplier
shortTarget = strategy.position_avg_price * (1 - targetPercent)
strategy.exit("Short Exit", from_entry="Short", stop=shortStop, limit=shortTarget)
// Plot EMA and VWAP for visual confirmation
plot(ema9, title="9 EMA", color=color.blue)
plot(vwapVal, title="VWAP", color=color.orange)