
La stratégie est basée sur la tendance naturelle du marché à revenir pour combler ces lacunes après l’apparition d’une lacune significative. La stratégie fonctionne sur une période de 3 minutes, en utilisant des modèles de prix spécifiques, l’orientation de la tendance et la confirmation du volume de transactions pour filtrer les opportunités de transactions à forte probabilité. Le système utilise le principe de la reprise de la moyenne et améliore le taux de réussite des transactions grâce à plusieurs filtres, y compris le filtre de tendance EMA, la confirmation du volume de transactions et le filtre de survente RSI.
La logique de base de cette stratégie s’articule autour de la détection et du remplissage des lacunes:
Mécanisme de détection des faillesLa stratégie consiste d’abord à identifier les écarts de prix de plus de 0,5% sur la journée. Il est possible de déterminer s’il s’agit d’un écarts à la hausse ou à la baisse en comparant les prix de clôture et d’ouverture du jour précédent.
Confirmation de la tendance: Utilisez les moyennes mobiles indicielles de 50 cycles et de 200 cycles (EMA) pour déterminer la tendance actuelle du marché. Considérez le plus seulement si l’EMA50 est supérieur à l’EMA200; considérez le moins seulement si l’EMA50 est inférieur à l’EMA200.
Mode de retournement du MitsubishiLa stratégie exige que trois lignes successives forment un mode inverse. Pour faire plus, il faut “close”[2] < close[1] < close mode de hausse; pour le short, il faut close[2] > close[1] > close mode de déclin
Filtrage du nombre de transactions: Le filtre de volume de transaction en option garantit que les transactions ne sont effectuées que lorsque le volume est supérieur à la moyenne des 20 cycles, ce qui augmente la fiabilité du signal.
RSI est filtré: Pour les opérations de courtage, les conditions de RSI > 60 ont été ajoutées pour assurer un état de survente relative du marché et améliorer la qualité des signaux de courtage.
Les conditions d’admission sont les suivantes:
Identifier clairement les anomalies du marchéLa stratégie se concentre sur des écarts de prix particuliers de l’aluminium dans le marché, un phénomène de marché statistiquement significatif qui fournit une marge de prévision.
Mécanisme de confirmation multipleCette stratégie réduit considérablement la probabilité de faux signaux en combinant des ouvertures, des filtres de tendances, des confirmations de volume et des modèles de prix.
Une gestion précise des risques: Utilisez l’ATR pour définir des objectifs de stop loss et de profit, assurez-vous que la gestion des risques s’adapte aux changements de la volatilité du marché. Définissez un montant maximum de stop loss en dollars, contrôlez efficacement le seuil de risque de chaque transaction.
Arrêt de la traînée dynamique: Une fois que la transaction atteint un niveau de profit de 2 x ATR, le stop-loss de suivi peut être activé, ce qui permet de continuer à négocier des transactions rentables tout en conservant une partie de la rentabilité.
Réglages de paramètres flexibles: La stratégie fournit plusieurs paramètres réglables (taille de la faille, multiplicateur ATR, montant maximum de stop loss, etc.) qui peuvent être optimisés en fonction des préférences de risque des traders et des conditions du marché.
Protégé par une limite de temps: Optimisation de l’efficacité de l’utilisation des fonds en réglant le temps de détention maximal de la position ((50 piliers)) afin d’éviter que la transaction soit perdante pendant une longue période.
Conforme à la microstructure du marchéLa stratégie a été conçue en accord avec la microstructure du marché, en se concentrant sur les transactions en journée et en évitant les risques du jour au lendemain.
Résultats modérésLe taux de réussite de la stratégie est d’environ 46%, ce qui signifie que le nombre de transactions perdantes est légèrement supérieur au nombre de transactions gagnantes. Bien que généralement rentables, il peut être nécessaire d’avoir une bonne tolérance psychologique pour traverser une période de pertes continues.
La dépendance au marché: La stratégie est explicitement indiquée pour s’appliquer uniquement aux graphiques de 3 minutes du NASDAQ (US100) et n’a pas été testée ou optimisée sur d’autres actifs ou périodes de temps. Cela limite la portée de la stratégie.
Paramètre SensibilitéComme pour la plupart des stratégies de quantification, la performance peut être très sensible au choix des paramètres. Une optimisation excessive peut entraîner une bonne performance de la rétro-mesure mais une mauvaise performance de la négociation sur disque.
Fréquence de transaction limitéeLe fait d’effectuer une seule transaction par jour limite le potentiel de profit, et peut laisser passer d’autres occasions, en particulier les jours de faible volatilité.
Risque de fréquence de la failleLa stratégie dépend de l’émergence d’une faille de taille spécifique, qui peut ne pas donner de signal de transaction pendant de longues périodes de calme.
Le risque de récession stratégiqueL’effet de remplissage des lacunes pourrait s’estomper avec l’utilisation de stratégies similaires par un plus grand nombre de traders, ce qui pourrait entraîner une réduction de l’efficacité de la stratégie.
Les mesures d’atténuation
Filtre de tendance amélioréLes stratégies actuelles utilisent une simple croisée EMA comme indicateur de tendance. L’intégration de méthodes de détection de tendance plus complexes, telles que l’ADX (indice de direction moyenne) ou l’analyse de tendance sur plusieurs périodes, peut être envisagée pour améliorer la qualité du filtrage.
Optimiser le temps d’entréeLe modèle actuel de reprise de Mitsubishi pourrait être trop simple. Considérez d’ajouter des confirmations techniques telles que la forme de la courbe, les niveaux de support/résistance ou l’analyse de l’action des prix pour optimiser le moment d’entrée.
Objectifs de stop loss et de profit dynamiques: Bien qu’il soit raisonnable d’utiliser un multiplicateur d’ATR fixe, il est possible de réaliser des ajustements dynamiques basés sur la volatilité du marché ou l’heure de la journée. Par exemple, augmenter le multiplicateur d’ATR pendant les périodes de forte volatilité ou ajuster les paramètres de risque en fonction du moment de la transaction.
Le renforcement de l’apprentissage automatiqueLes caractéristiques de la réussite du remplissage des lacunes historiques, telles que la taille des lacunes, les conditions du marché, le calendrier, etc., peuvent être analysées à l’aide de modèles d’apprentissage automatique pour améliorer encore les performances de la stratégie.
Augmentation de la fréquence des transactionsConsidérez modifier la stratégie pour permettre plusieurs transactions dans la même journée de négociation, en particulier lorsque la transaction en cours est terminée et que de nouveaux signaux valides apparaissent. Cela peut augmenter les gains globaux, mais nécessite un test prudent pour s’assurer qu’il n’y a pas d’introduction de transactions excessives.
Intégration des signaux du marchéConsidérez comme confirmation les signaux d’intégration des marchés concernés (tels que les futures, les ETF ou les indices de l’industrie concernée). Cela peut fournir un avantage supplémentaire en matière d’information, en particulier pour déterminer si la faille sera comblé.
Filtre par temps: Les marchés peuvent se comporter différemment selon les périodes. L’ajout de filtres basés sur les heures de négociation peut améliorer la performance de la stratégie, par exemple en évitant les périodes de forte volatilité des ouvertures et des fermetures des marchés.
La stratégie de retour à la moyenne dynamique de remplissage des lacunes est un système de négociation intraday soigneusement conçu qui se concentre sur les tendances statistiques à tirer parti de la régression des lacunes du marché. Cette stratégie combine la détection des lacunes, la confirmation des tendances, le filtrage du volume de transactions et l’identification des modèles de prix pour créer un cadre de décision de négociation à plusieurs niveaux.
Les principaux avantages de la stratégie résident dans ses règles d’entrée clairement définies, sa gestion des risques basée sur l’ATR et son mécanisme de confirmation multiple. Bien que le taux de victoire soit modéré (environ 46%), la stratégie est capable de générer des rendements positifs dans le backtesting grâce à un réglage précis du risque-rendement (un rapport de risque-rendement de 2: 1).
Cette stratégie est particulièrement adaptée aux traders qui cherchent à exploiter les anomalies de certains marchés, en particulier les investisseurs intéressés par le day trading NASDAQ. Cependant, les utilisateurs potentiels devraient être conscients des limites de la stratégie, y compris la dépendance des marchés et la sensibilité des paramètres.
La stratégie peut être encore améliorée en termes de performance et de solidité par la mise en œuvre des mesures d’optimisation recommandées, en particulier l’amélioration des filtres de tendance et la modification du timing d’entrée sur le terrain. Une réévaluation et un ajustement périodiques des paramètres seront essentiels pour maintenir un succès à long terme, à mesure que les conditions du marché changent.
En fin de compte, cette stratégie représente une approche équilibrée de la négociation quantifiée, combinant des concepts d’analyse technique et statistique pour capturer de manière systématique des modèles de comportement spécifiques du marché.
/*backtest
start: 2025-04-15 00:00:00
end: 2025-05-14 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("Gap Fill Mean Reversion Strategy – NASDAQ 3-Minute", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1)
// === INPUTS ===
gapPct = input.float(0.5, title="Minimum Gap (%)") / 100
useVolume = input.bool(true, title="Use Volume Filter")
atrMultTP = input.float(2.0, title="TP Multiplier (ATR)")
atrMultSL = input.float(1.0, title="SL Multiplier (ATR)")
trailStartATR = input.float(2.0, title="Trailing Trigger (ATR)")
trailOffsetATR = input.float(1.0, title="Trailing Offset (ATR)")
maxSLusd = input.float(100, title="Max Stop Loss (USD)")
maxBars = input.int(50, title="Max Bars in Trade")
// === INDICATORS ===
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
trendUp = ema50 > ema200
trendDown = ema50 < ema200
rsi = ta.rsi(close, 14)
rsiShortCond = rsi > 60
// === GAP DETECTION ===
prevClose = request.security(syminfo.tickerid, "D", close[1])
todayOpen = request.security(syminfo.tickerid, "D", open)
gapUp = todayOpen > prevClose * (1 + gapPct)
gapDown = todayOpen < prevClose * (1 - gapPct)
// === VOLUME FILTER ===
volumeOK = not useVolume or (volume > ta.sma(volume, 20))
// === 3-CANDLE REVERSAL CONFIRMATION ===
threeDown = close[2] > close[1] and close[1] > close
threeUp = close[2] < close[1] and close[1] < close
// === ENTRY CONDITIONS ===
longCond = gapDown and threeUp and volumeOK and trendUp
shortCond = gapUp and threeDown and volumeOK and trendDown and rsiShortCond
// === ATR AND CALCULATIONS ===
atr = ta.atr(14)
entryPrice = strategy.opentrades > 0 ? strategy.opentrades.entry_price(0) : na
inLong = strategy.position_size > 0
inShort = strategy.position_size < 0
// === TRAILING STOP CONDITIONS ===
trailTrigger = atr * trailStartATR
trailOffset = atr * trailOffsetATR
longTrailCond = inLong and close > entryPrice + trailTrigger
shortTrailCond = inShort and close < entryPrice - trailTrigger
// === STOP LOSS DISTANCE (fixed USD limit applied) ===
slDistance = math.min(atr * atrMultSL, maxSLusd / syminfo.pointvalue)
// === ENTRIES ===
if (longCond)
strategy.entry("Gap Long", strategy.long)
if (shortCond)
strategy.entry("Gap Short", strategy.short)
// === EXITS ===
// LONG
if (longTrailCond)
strategy.exit("Trail Long", from_entry="Gap Long", trail_points=trailOffset, trail_offset=trailOffset)
else if (inLong)
strategy.exit("SL/TP Long", from_entry="Gap Long", stop=entryPrice - slDistance, limit=entryPrice + atr * atrMultTP)
// SHORT
if (shortTrailCond)
strategy.exit("Trail Short", from_entry="Gap Short", trail_points=trailOffset, trail_offset=trailOffset)
else if (inShort)
strategy.exit("SL/TP Short", from_entry="Gap Short", stop=entryPrice + slDistance, limit=entryPrice - atr * atrMultTP)
// === MAXIMUM TRADE DURATION CONTROL ===
strategy.close("Gap Long", when=inLong and (bar_index - strategy.opentrades.entry_bar_index(0)) >= maxBars)
strategy.close("Gap Short", when=inShort and (bar_index - strategy.opentrades.entry_bar_index(0)) >= maxBars)
// === VISUALS ===
plotshape(longCond, title="Long Signal", location=location.belowbar, style=shape.triangleup, color=color.green)
plotshape(shortCond, title="Short Signal", location=location.abovebar, style=shape.triangledown, color=color.red)
plot(ema50, color=color.orange, title="EMA 50")
plot(ema200, color=color.blue, title="EMA 200")