
Le système de négociation multi-cycle est une stratégie de négociation quantitative complète qui intègre habilement la théorie des cycles de marché de Wyckoff, l’analyse graphique des prix, la régression des moyennes et le suivi des tendances. La stratégie est conçue pour les traders qui oscillent à moyen et long terme et offre un large éventail d’options personnalisées, permettant aux traders de s’adapter de manière flexible en fonction de leurs préférences de risque et de la situation du marché.
Les composants centraux de la stratégie comprennent l’analyse Wyckoff pour identifier les phases du cycle du marché, l’analyse graphique des prix pour identifier les points critiques de soutien et de résistance, les composants de régression des valeurs moyennes pour identifier les situations d’excès d’achat ou de vente, et le système de suivi des tendances pour capturer les mouvements de prix à moyen et long terme. Ces composants travaillent ensemble pour former un système de négociation complet visant à fournir des signaux de négociation à haute probabilité.
Le principe central de la stratégie est basé sur la synergie de quatre méthodes de négociation principales:
Une analyse de WyckoffLe composant identifie quatre phases principales - phases d’accumulation, phases de hausse, phases d’attribution et phases de baisse - selon la théorie du cycle du marché de Richard D. Wyckoff. La stratégie détecte également des formes particulières telles que les modes “leap” (retour rapide après une fausse percée) et “push” (fausse percée). Ces phases sont définies par des relations de prix et de transaction, aidant les traders à suivre les flux de fonds des institutions.
Analyse des graphiques des prix: Ce composant permet de réaliser une version simplifiée du profil de marché/volume de transaction, en calculant les points de contrôle (POC), les hauts de zone de valeur (VAH) et les bas de zone de valeur (VAL) pour établir la portée des principales activités de prix. La représentation visuelle de ces niveaux clés aide à identifier les zones de soutien et de résistance potentielles.
Retour à la moyenne: Cette composante identifie les points de retournement potentiels lorsque le prix se déplace vers les zones extrêmes. Elle utilise les bandes de Brent pour définir les zones de prix de survente et de survente et, en combinaison avec la déviation du RSI, pour confirmer le retournement potentiel.
Suivi des tendancesLe composant capture les mouvements directionnels des prix à moyen et long terme, confirmant la direction et la force de la tendance à l’aide de plusieurs moyennes mobiles (9, 21, 50, 200 EMA), l’analyse MACD est utilisée pour la confirmation de la dynamique et de la force de la tendance, et la cohérence des tendances à haute fréquence à travers l’analyse de la structure des prix.
Ces quatre composants se complètent et agissent ensemble pour générer un signal de transaction. Le système utilise une méthode complexe de combinaison de signaux qui nécessite la confirmation de plusieurs systèmes pour générer un signal de transaction final, ce qui réduit efficacement la possibilité de faux signaux.
Les systèmes de négociation de rupture de tendance à la régression de la valeur moyenne pluricyclique présentent les avantages suivants:
Cadre d’analyse globaleEn intégrant quatre méthodes de trading différentes mais complémentaires, la stratégie permet d’analyser le marché sous plusieurs angles et d’améliorer la qualité et la fiabilité des signaux de trading. Cette analyse multidimensionnelle réduit les écarts et les signaux erronés qu’un seul indicateur peut générer.
Adaptation aux différentes conditions du marché: La flexibilité de la stratégie lui permet de bien fonctionner dans différents environnements de marché. Dans les marchés tendanciels, les composants de suivi de tendance sont dominants; dans les marchés de volatilité intermédiaire, la régression des moyennes et l’analyse des graphes de prix sont plus efficaces.
Les fonds des institutions sont alignésL’analyse de Wyckoff vise à aligner la stratégie sur les flux de fonds institutionnels, ce qui est essentiel pour la réussite des transactions à long terme. Cette composante aide les traders à identifier les étapes d’accumulation et d’allocation des capitaux importants, ce qui améliore le taux de réussite des transactions.
Une bonne gestion des risquesLa stratégie intègre plusieurs fonctions de gestion des risques, notamment l’arrêt automatique des pertes, l’arrêt de la traînée basé sur l’ATR, la stratégie de sortie basée sur la durée de la position et le calcul de la taille de la position basée sur le pourcentage d’intérêt. Ensemble, ces fonctions assurent la solidité de la gestion des fonds.
Hauteur personnalisable: La stratégie fournit un large éventail de paramètres qui permettent aux traders de s’adapter en fonction de leur style de trading, de leurs préférences de marché et de leur tolérance au risque. Les principaux composants peuvent être activés ou désactivés indépendamment, ce qui permet à la stratégie de s’adapter à différentes méthodes de trading.
Bien que cette stratégie présente de nombreux avantages, elle comporte les risques et défis suivants:
Risque de sur-optimisation des paramètres: La stratégie contient un grand nombre de paramètres réglables, ce qui peut entraîner un risque d’hyperadaptation des données historiques. Les traders doivent faire attention à éviter une optimisation excessive et à effectuer des tests robustes avant la transaction réelle.
Gestion de la complexitéL’intégration de la stratégie entraîne également des complexités. Comprendre et gérer l’interaction de tous les composants peut être un défi, en particulier pour les traders débutants. Il est recommandé d’abord de comprendre chaque composant indépendant, puis d’intégrer progressivement l’utilisation.
Changement des conditions du marché: Dans certaines conditions de marché, des composants spécifiques peuvent être sous-performants. Par exemple, un signal de retour à la valeur moyenne peut générer des pertes pendant un changement de tendance rapide. Les traders doivent surveiller l’environnement du marché et ajuster le poids des composants stratégiques en conséquence.
Effets des retards dans l’exécution: les demandes de confirmation multiples de la stratégie peuvent entraîner des retards d’entrée, en particulier dans les marchés à forte volatilité. Cela peut entraîner la perte d’une partie de la tendance ou l’entrée sur le marché à des prix secondaires.
Dépendance des indicateurs techniquesLa stratégie repose fortement sur des indicateurs techniques tels que les moyennes mobiles, le RSI et le MACD. Dans certaines conditions de marché, ces indicateurs peuvent être inefficaces ou générer des signaux trompeurs. Il est recommandé de combiner l’analyse fondamentale ou d’autres facteurs non techniques pour compléter.
Les méthodes pour atténuer ces risques comprennent: la mise en œuvre progressive de la stratégie, en commençant par de petites positions; la réévaluation et l’optimisation périodiques; l’utilisation de tests échantillonnés pour vérifier l’efficacité de la stratégie; et la mise en place de règles strictes de gestion des risques, telles que des limites de perte maximale par transaction et par jour.
Cette stratégie peut être optimisée dans les directions suivantes, en fonction d’une analyse approfondie du code:
Paramètres personnalisés: les stratégies actuelles utilisent des valeurs de paramètres fixes, tels que le RSI cyclique et le décalage standard des bandes de bourinage. Les stratégies peuvent être améliorées dans différents environnements de marché en mettant en œuvre des paramètres d’adaptation basés sur la volatilité ou l’état du marché. Par exemple, des bandes de bourinage plus larges sont utilisées dans des marchés à forte volatilité et des bandes de bourinage plus étroites dans des marchés à faible volatilité.
Intégration de l’apprentissage automatique: Optimiser la génération de signaux et le processus de filtrage en introduisant des algorithmes d’apprentissage automatique. Par exemple, les algorithmes de classification peuvent être utilisés pour prédire la probabilité de succès d’un signal ou pour trouver la meilleure combinaison de paramètres en utilisant l’apprentissage par renforcement. Cela permettra aux stratégies de s’adapter et d’apprendre constamment de nouveaux modèles de marché.
Analyse améliorée des délaisLes stratégies actuelles fonctionnent principalement sur un seul fuseau horaire. La qualité du signal peut être améliorée par l’ajout d’une fonctionnalité d’analyse de véritables fuseaux horaires multiples. Par exemple, les transactions ne sont effectuées que lorsque la direction de la tendance du jour, de la périphérie et de la lune est la même, ce qui réduit le risque de trading à contre-courant.
Algorithme de reconnaissance Wyckoff amélioréL’identification des phases de Wyckoff est relativement simple. Des algorithmes plus complexes peuvent être développés pour identifier avec précision les modèles d’accumulation et d’attribution de Wyckoff, par exemple en utilisant une distribution de la quantité de transaction, une combinaison de prix moyens pondérés de la quantité de transaction et d’indicateurs de force relative.
Analyse de la corrélation entre les différentes variétés: En ajoutant une analyse de corrélation multivariée, la stratégie peut prendre en compte la dynamique des marchés concernés. Par exemple, en tenant compte de la tendance de l’indice du dollar dans le commerce des marchandises ou de la performance de l’indice de l’industrie dans le commerce des actions. Cela fournira une perspective plus complète du marché.
Optimiser la stratégie de sortieLes mécanismes d’exit actuels sont principalement basés sur le temps et le RSI. Il est possible d’améliorer la rentabilité en mettant en œuvre des stratégies d’exit plus complexes, telles que la capture partielle de bénéfices basée sur des niveaux de support/résistance dynamiques ou l’utilisation de modèles de contraction volatile comme déclencheur d’exit.
Améliorer la gestion des risques: Ajout de fonctionnalités de gestion des risques plus complexes, telles que l’ajustement de position basé sur les retraits, la gestion de portefeuille pondérée par la corrélation et la logique d’exécution des ordres en tenant compte de la liquidité du marché et des points de glissement.
Le système de négociation de rupture de tendance de retour de la valeur moyenne à plusieurs cycles est une stratégie de négociation quantifiée complète et flexible, adaptée aux traders à basculement à moyen et long terme. Son avantage central réside dans l’intégration de plusieurs méthodes de négociation complémentaires, un mécanisme de génération de signaux robuste et une large gamme de fonctions de gestion des risques.
Cette stratégie crée un système de négociation capable de s’adapter à toutes les conditions du marché en intégrant la théorie des cycles de marché de Wyckoff, l’analyse des graphiques des prix, la régression des moyennes et le suivi des tendances. Elle est conçue pour être cohérente avec l’orientation des fonds des institutions, réduire les faux signaux en demandant des confirmations multiples et fournir un mécanisme d’entrée et de sortie flexible pour optimiser les résultats des transactions.
Malgré les défis liés à l’optimisation des paramètres, à la gestion de la complexité et aux conditions changeantes du marché, cette stratégie peut devenir une arme puissante dans le kit de trading, avec une mise en œuvre prudente et une optimisation continue. Grâce à l’introduction de paramètres adaptatifs, de technologies d’apprentissage automatique, d’une analyse multi-cadres renforcée et d’une stratégie d’exit améliorée, le système a le potentiel d’améliorer encore ses performances et son adaptabilité à l’avenir.
Pour les traders qui recherchent une méthode de négociation stable et systématique, le système de négociation de rupture de tendance à la valeur moyenne périodique offre une base solide qui peut être personnalisée et étendue en fonction des préférences personnelles et de l’expérience du marché.
/*backtest
start: 2024-04-28 00:00:00
end: 2025-04-26 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("Wyckoff Advanced Swing Strategy by TIAMATCRYPTO", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// Main strategy settings
enableWyckoff = input.bool(true, "Enable Wyckoff")
enablePriceMap = input.bool(true, "Enable Price Map Profile")
enableMeanReversion = input.bool(true, "Enable Mean Reversion")
enableTrendFollowing = input.bool(true, "Enable Trend Following")
// TP/SL settings
useAutoTPSL = input.bool(true, "Use Auto TP/SL")
profitFactor = input.float(2.5, "Profit Factor (ATR multiple)")
stopLossFactor = input.float(1.5, "Stop Loss Factor (ATR multiple)")
// Swing Trading Parameters
minHoldingDays = input.int(3, "Minimum Holding Period (days)")
maxHoldingDays = input.int(20, "Maximum Holding Period (days)")
useWeekdayFilter = input.bool(true, "Filter Trading Days")
useTrailingStop = input.bool(true, "Use Trailing Stop")
trailingStopAtrMult = input.float(2.0, "Trailing Stop (ATR multiple)")
// Alternative Exit Rules
useExitByRSI = input.bool(true, "Exit by RSI")
exitLongRSI = input.int(70, "Exit Long when RSI")
exitShortRSI = input.int(30, "Exit Short when RSI")
// General Parameters
atrPeriod = input.int(14, "ATR Period")
rsiPeriod = input.int(14, "RSI Period")
volPeriod = input.int(20, "Volume MA Period")
emaFastPeriod = input.int(9, "EMA Fast Period")
emaSlowPeriod = input.int(21, "EMA Slow Period")
emaMediumPeriod = input.int(50, "EMA Medium Period")
emaLongPeriod = input.int(200, "EMA Long Period")
// Indicators
atr = ta.atr(atrPeriod)
rsi = ta.rsi(close, rsiPeriod)
volMA = ta.sma(volume, volPeriod)
emaFast = ta.ema(close, emaFastPeriod)
emaSlow = ta.ema(close, emaSlowPeriod)
emaMedium = ta.ema(close, emaMediumPeriod)
emaLong = ta.ema(close, emaLongPeriod)
macd = ta.ema(close, 12) - ta.ema(close, 26)
macdSignal = ta.ema(macd, 9)
// Weekday Filters (1 = Monday, 5 = Friday)
isGoodEntryDay = useWeekdayFilter ? (dayofweek != 5 and dayofweek != 1) : true // Not on Monday and Friday
isGoodExitDay = useWeekdayFilter ? (dayofweek != 1 and dayofweek != 5) : true // Not on Monday and Friday
// ===================== Wyckoff Method =====================
accumulationPhase = false
markupPhase = false
distributionPhase = false
markdownPhase = false
spring = false
if enableWyckoff
// Define support and resistance
support = ta.lowest(low, 10)
resistance = ta.highest(high, 10)
// Detect Spring (fake downward breakout)
spring := low[1] < support[2] and close > support[1]
// Detect Upthrust (fake upward breakout)
upthrust = high[1] > resistance[2] and close < resistance[1]
// Wyckoff Market Phases
accumulationPhase := volume > volMA and rsi < 40 and ta.falling(high, 5) and close > open
markupPhase := emaFast > emaSlow and emaSlow > emaMedium and volume > volMA and rsi > 50
distributionPhase := volume > volMA and rsi > 60 and ta.rising(low, 5) and close < open
markdownPhase := emaFast < emaSlow and emaSlow < emaMedium and volume > volMA and rsi < 50
// ===================== Price Map Profile =====================
lookbackPeriod = 30
highestPrice = ta.highest(high, lookbackPeriod)
lowestPrice = ta.lowest(low, lookbackPeriod)
valueAreaHigh = highestPrice - (highestPrice - lowestPrice) * 0.15
valueAreaLow = lowestPrice + (highestPrice - lowestPrice) * 0.15
pointOfControl = (valueAreaHigh + valueAreaLow) / 2
// Plot Price Map Profile
plot(enablePriceMap ? pointOfControl : na, "POC", color.purple, 1)
plot(enablePriceMap ? valueAreaHigh : na, "VAH", color.blue, 1)
plot(enablePriceMap ? valueAreaLow : na, "VAL", color.blue, 1)
// ===================== Mean Reversion =====================
meanReversionBuy = false
meanReversionSell = false
if enableMeanReversion
// Optimized Bollinger Bands for swing trading
basisBB = ta.sma(close, 20)
devBB = ta.stdev(close, 20) * 2
upperBB = basisBB + devBB
lowerBB = basisBB - devBB
// Enhanced Mean Reversion Conditions
lowerBBHit = ta.crossunder(close, lowerBB) or (close < lowerBB and close[1] < lowerBB)
upperBBHit = ta.crossover(close, upperBB) or (close > upperBB and close[1] > upperBB)
// RSI divergence for better timing
rsiLow = ta.lowest(rsi, 5)
priceLow = ta.lowest(low, 5)
rsiHigh = ta.highest(rsi, 5)
priceHigh = ta.highest(high, 5)
bullishDivergence = low < priceLow and rsi > rsiLow
bearishDivergence = high > priceHigh and rsi < rsiHigh
// Mean Reversion Swing Trading Signals
meanReversionBuy := lowerBBHit and rsi < 30 and bullishDivergence
meanReversionSell := upperBBHit and rsi > 70 and bearishDivergence
// ===================== Trend Following =====================
trendFollowingBuy = false
trendFollowingSell = false
if enableTrendFollowing
// Strong Trend Conditions
strongUptrend = emaFast > emaSlow and emaSlow > emaMedium and emaMedium > emaLong
strongDowntrend = emaFast < emaSlow and emaSlow < emaMedium and emaMedium < emaLong
// Simulated multi-day trend confirmation
recentHigherHigh = high > ta.highest(high[1], 5)
recentLowerLow = low < ta.lowest(low[1], 5)
// MACD Filters
macdRising = macd > macd[1] and macd[1] > macd[2]
macdFalling = macd < macd[1] and macd[1] < macd[2]
// Stronger Filters for Swing Trading
trendFollowingBuy := strongUptrend and macd > macdSignal and macdRising and recentHigherHigh
trendFollowingSell := strongDowntrend and macd < macdSignal and macdFalling and recentLowerLow
// ===================== Combine Signals =====================
wyckoffBuy = enableWyckoff and spring and accumulationPhase
wyckoffSell = enableWyckoff and distributionPhase
mrBuy = enableMeanReversion and meanReversionBuy
mrSell = enableMeanReversion and meanReversionSell
tfBuy = enableTrendFollowing and trendFollowingBuy
tfSell = enableTrendFollowing and trendFollowingSell
// Combine all strategies
buySignal = (wyckoffBuy or mrBuy or tfBuy) and isGoodEntryDay
sellSignal = (wyckoffSell or mrSell or tfSell) and isGoodEntryDay
// Add Candle Confirmation for better entries - full candle above/below EMA
buyConfirmation = close > open and close > emaMedium
sellConfirmation = close < open and close < emaMedium
// Track holding days
var int daysInTrade = 0
daysInTrade := strategy.position_size != 0 ? daysInTrade + 1 : 0
// Time-Based Exit
exitLongByTime = strategy.position_size > 0 and (daysInTrade >= maxHoldingDays or (daysInTrade >= minHoldingDays and isGoodExitDay))
exitShortByTime = strategy.position_size < 0 and (daysInTrade >= maxHoldingDays or (daysInTrade >= minHoldingDays and isGoodExitDay))
// Exit by RSI
exitLongByRSI = useExitByRSI and strategy.position_size > 0 and rsi >= exitLongRSI and daysInTrade >= minHoldingDays
exitShortByRSI = useExitByRSI and strategy.position_size < 0 and rsi <= exitShortRSI and daysInTrade >= minHoldingDays
// Trading logic - Swing Trading adjusted with TP/SL optional
if buySignal and buyConfirmation and strategy.position_size <= 0
strategy.cancel_all()
strategy.entry("Long", strategy.long)
if useAutoTPSL
strategy.exit("TP/SL Long", "Long", profit = atr * profitFactor, loss = atr * stopLossFactor)
if sellSignal and sellConfirmation and strategy.position_size >= 0
strategy.cancel_all()
strategy.entry("Short", strategy.short)
if useAutoTPSL
strategy.exit("TP/SL Short", "Short", profit = atr * profitFactor, loss = atr * stopLossFactor)
// Trailing Stop if enabled and no fixed TP/SL
if useTrailingStop and not useAutoTPSL and strategy.position_size != 0
longTrailPrice = high - atr * trailingStopAtrMult
shortTrailPrice = low + atr * trailingStopAtrMult
if strategy.position_size > 0
strategy.exit("Trailing Stop Long", "Long", trail_price=longTrailPrice)
else if strategy.position_size < 0
strategy.exit("Trailing Stop Short", "Short", trail_price=shortTrailPrice)