
La stratégie de blocage de la première courbe est une stratégie de négociation intraday qui utilise la zone de prix de la première courbe après l’ouverture du marché comme support et résistance importants. La stratégie consiste à attendre que la première courbe se forme et à entrer dans le marché après que le prix a franchi son plus haut ou son plus bas point, tout en utilisant un mécanisme de blocage de la première courbe basé sur la zone de suivi dynamique des pertes et en imposant une position de blocage à des heures spécifiques de la journée pour éviter le risque de nuit.
La stratégie est basée sur l’observation du marché selon laquelle les intervalles de prix formés par la première courbe après l’ouverture du marché ont souvent une signification technique importante. La logique centrale de la stratégie est la suivante:
La stratégie utilise un mécanisme d’entrée post-confirmation, c’est-à-dire l’entrée en bourse après que le prix a réellement franchi le haut ou le bas du premier pivot, plutôt que d’entrer immédiatement dans le marché lorsque le prix a touché ces niveaux, ce qui contribue à réduire le risque de fausse rupture.
Le risque stratégique
Bien que cette stratégie présente de nombreux avantages, elle comporte des risques potentiels:
La stratégie peut être optimisée pour ces risques dans les directions suivantes:
La première rupture de crête - stratégie de placement de stop loss et de clôture de suivi dynamique est une stratégie de négociation intraday basée sur la première tranche de prix de la ligne de crête après l’ouverture du marché. Elle utilise l’entrée de signal de rupture de prix après confirmation, la gestion des risques basée sur les fluctuations du marché avec un mécanisme de stop loss de suivi dynamique et le placement forcé à des heures fixes chaque jour pour éviter le risque du lendemain.
L’avantage de cette stratégie réside dans la clarté des signaux d’entrée, la dynamique de la gestion des risques, l’évitement des faux-breaks et des risques de nuit, l’adaptation aux fluctuations du marché, la limitation des transactions excessives et la possibilité d’une exécution entièrement automatisée. Cependant, elle est également confrontée à des défis tels que le risque de faux-breaks, l’arrêt injustifié, la perte d’une situation majeure, la dépendance au temps, le manque d’objectifs de profit et la sensibilité aux paramètres.
La stabilité et la rentabilité de la stratégie peuvent être encore améliorées par l’ajout de conditions de filtrage, l’optimisation des mécanismes de stop-loss, l’introduction d’un mécanisme de profit partiel, l’ajout de conditions de tenue de position pendant la nuit, l’ajout de filtres de temps, l’optimisation des paramètres du mécanisme d’adaptation, l’ajout de l’identification de l’environnement du marché, la prise en compte de l’analyse de plusieurs délais et l’ajout d’un module de gestion des fonds.
Dans l’ensemble, il s’agit d’une stratégie de day trading structurée et logique, adaptée aux traders qui souhaitent effectuer des transactions de jour par le biais d’un système automatisé et contrôler strictement les risques. Grâce à une optimisation ciblée et à un ajustement approprié des paramètres, la stratégie devrait être stable dans différents environnements de marché.
/*backtest
start: 2025-03-24 00:00:00
end: 2025-03-31 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"TRX_USDT"}]
*/
//@version=5
strategy("First Candle Breakout - Trailing Stop & EOD Close", overlay=true)
// User Inputs
startHour = input(9, "Start Hour (Exchange Time)")
startMinute = input(15, "Start Minute (Exchange Time)")
endHour = input(15, "End Hour (Exchange Time)") // Market closing hour
endMinute = input(30, "End Minute (Exchange Time)")
trailStopMultiplier = input(1.5, "Trailing Stop Multiplier") // 1.5x first candle range
// Variables to store the first candle's high & low
var float firstCandleHigh = na
var float firstCandleLow = na
var bool tradeTaken = false // Ensures only one trade per day
var int tradeDirection = 0 // 1 for long, -1 for short
var float trailStopLevel = na // Trailing stop level
// Identify first candle's high & low
if (hour == startHour and minute == startMinute and bar_index > 1)
firstCandleHigh := high
firstCandleLow := low
tradeTaken := false // Reset trade flag at start of day
tradeDirection := 0 // Reset trade direction
trailStopLevel := na // Reset trailing stop
// Calculate first candle range
firstCandleRange = firstCandleHigh - firstCandleLow
trailStopDistance = firstCandleRange * trailStopMultiplier
// Buy condition: Close above first candle high AFTER the first candle closes
longCondition = not na(firstCandleHigh) and close > firstCandleHigh and not tradeTaken and hour > startHour
if (longCondition)
strategy.entry("Buy", strategy.long, comment="Buy")
trailStopLevel := close - trailStopDistance // Set initial trailing stop
tradeTaken := true
tradeDirection := 1
// Sell condition: Close below first candle low AFTER the first candle closes
shortCondition = not na(firstCandleLow) and close < firstCandleLow and not tradeTaken and hour > startHour
if (shortCondition)
strategy.entry("Sell", strategy.short, comment="Sell")
trailStopLevel := close + trailStopDistance // Set initial trailing stop
tradeTaken := true
tradeDirection := -1
// Update trailing stop for long trades
if (tradeDirection == 1 and not na(trailStopLevel))
trailStopLevel := nz(trailStopLevel, close - trailStopDistance) // Initialize if na
trailStopLevel := math.max(trailStopLevel, close - trailStopDistance) // Adjust trailing stop up
if (close <= trailStopLevel) // Stop loss hit
strategy.close("Buy", comment="Trailing SL Hit")
// Update trailing stop for short trades
if (tradeDirection == -1 and not na(trailStopLevel))
trailStopLevel := nz(trailStopLevel, close + trailStopDistance) // Initialize if na
trailStopLevel := math.min(trailStopLevel, close + trailStopDistance) // Adjust trailing stop down
if (close >= trailStopLevel) // Stop loss hit
strategy.close("Sell", comment="Trailing SL Hit")
// Close trade at end of day if still open
if (tradeTaken and hour == endHour and minute == endMinute)
strategy.close_all(comment="EOD Close")