Système de trading de tendance adaptatif multidimensionnel intelligent

FVG RSI MACD VWAP EMA ATR supertrend
Date de création: 2025-02-21 11:37:36 Dernière modification: 2025-02-21 11:37:36
Copier: 0 Nombre de clics: 483
2
Suivre
319
Abonnés

Système de trading de tendance adaptatif multidimensionnel intelligent Système de trading de tendance adaptatif multidimensionnel intelligent

Aperçu

La stratégie est un système de trading intelligent qui combine plusieurs indicateurs techniques pour identifier les opportunités de marché grâce à une analyse intégrée de l’écart de juste valeur (FVG), des signaux de tendance et du comportement des prix. Le système utilise un mécanisme de double stratégie, combinant le suivi des tendances et les caractéristiques de la négociation en bandes, pour optimiser la performance des transactions grâce à la gestion dynamique des positions et à un mécanisme d’exit multidimensionnel. La stratégie accorde une attention particulière à la gestion des risques et améliore la qualité du signal grâce au filtrage de la volatilité et à la confirmation du volume des transactions.

Principe de stratégie

La logique de base de la stratégie repose sur les dimensions suivantes:

  1. Identification des lacunes FVG - recherche d’opportunités de trading potentielles en calculant la taille des lacunes de saut de prix
  2. Système de confirmation de tendance - Le système de confirmation de tendance du marché est combiné à la moyenne quotidienne de 200, à l’indicateur SuperTrend et au MACD
  3. Confirmation de fonds intelligents - utilise le RSI comme condition déclenchante pour les transactions de surachat, de survente et de comportement anormal des prix
  4. Gestion dynamique des positions - pour ajuster la taille des positions en fonction de la volatilité de l’ATR et assurer la cohérence des emplacements de risque
  5. Mécanisme de sortie à plusieurs niveaux - Gestion des sorties de transactions en utilisant une combinaison de tracking stop-loss et de stop-goal

Avantages stratégiques

  1. Adaptabilité - la stratégie peut ajuster automatiquement les paramètres et les positions en fonction des fluctuations du marché
  2. Contrôle des risques parfait - contrôle des risques grâce à des filtres multiples et une gestion rigoureuse des positions
  3. Qualité fiable du signal - amélioration de l’exactitude des signaux de transaction par confirmation d’indicateurs multidimensionnels
  4. Des méthodes de trading flexibles - qui permettent de saisir à la fois les tendances et les occasions de choc
  5. La science de la gestion des fonds - Utilisez la gestion des risques pour assurer la rationalité de l’utilisation des fonds

Risque stratégique

  1. Sensitivité des paramètres - la configuration de plusieurs paramètres peut affecter la performance de la stratégie et nécessite une optimisation continue
  2. Dépendance aux conditions du marché - des faux signaux de rupture peuvent apparaître dans certaines conditions du marché
  3. Effets de dérapage - un dérapage plus important est possible dans les marchés moins liquides
  4. Complexité de calcul - le calcul de multiples indicateurs peut entraîner un retard de signal
  5. Des exigences financières élevées - une stratégie de mise en œuvre complète nécessite un capital initial important

Orientation de l’optimisation de la stratégie

  1. Optimisation des poids des indicateurs - des méthodes d’apprentissage automatique peuvent être introduites pour ajuster dynamiquement les poids de chaque indicateur
  2. Amélioration de l’adaptabilité des marchés - un mécanisme d’adaptation qui augmente la volatilité des marchés
  3. Amélioration du filtrage des signaux - introduction de plus d’indicateurs de la microstructure du marché
  4. Optimisation des mécanismes d’exécution - augmentation des mécanismes intelligents de segmentation des commandes et réduction des coûts d’impact
  5. Mise à niveau des contrôles des risques - ajout d’un système de gestion dynamique des budgets de risques

Résumer

Cette stratégie utilise plusieurs indicateurs techniques et techniques de négociation pour construire un système de négociation complet. Son avantage réside dans sa capacité à s’adapter aux changements du marché tout en maintenant un contrôle strict des risques. Bien qu’il existe une certaine marge d’optimisation, dans l’ensemble, c’est une stratégie de négociation quantitative bien conçue.

Code source de la stratégie
/*backtest
start: 2025-01-01 00:00:00
end: 2025-02-20 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/

//@version=6
strategy("Adaptive Trend Signals", overlay=true, margin_long=100, margin_short=100, pyramiding=1, initial_capital=50000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.075)

// 1. Enhanced Inputs with Debugging Options

fvgSize = input.float(0.25, "FVG Size (%)", minval=0.1, step=0.05)
atrPeriod = input.int(14, "ATR Period")  // Increased for better stability
rsiPeriod = input.int(7, "RSI Period")
useSuperTrend = input.bool(true, "Use SuperTrend Filter")
useTrendFilter = input.bool(false, "Use 200 EMA Trend Filter")  // Disabled by default
volatilityThreshold = input.float(1.0, "Volatility Threshold (ATR%)", step=0.1)  // Increased threshold
useVolume = input.bool(true, "Use Volume Confirmation")
riskPercentage = input.float(2.0, "Risk %", minval=0.1, maxval=5)

// 2. Advanced Market Filters with Trend Change Detection
var int marketTrend = 0
var bool trendChanged = false
ema200 = ta.ema(close, 200)
prevMarketTrend = marketTrend
marketTrend := close > ema200 ? 1 : close < ema200 ? -1 : 0
trendChanged := marketTrend != prevMarketTrend

// 3. Enhanced FVG Detection with Adjusted Volume Requirements
bullishFVG = (low[1] > high[2] and (low[1] - high[2])/high[2]*100 >= fvgSize) or 
             (low > high[1] and (low - high[1])/high[1]*100 >= fvgSize)

bearishFVG = (high[1] < low[2] and (low[2] - high[1])/low[2]*100 >= fvgSize) or 
             (high < low[1] and (low[1] - high)/low[1]*100 >= fvgSize)

// 4. Smart Money Confirmation System with Signal Debugging
rsi = ta.rsi(close, rsiPeriod)
[macdLine, signalLine, _] = ta.macd(close, 5, 13, 5)
[supertrendLine, supertrendDir] = ta.supertrend(3, 10)

// Script 2 Indicators
[macdLine2, signalLine2, _] = ta.macd(close, 4, 11, 3)
[supertrendLine2, supertrendDir2] = ta.supertrend(3, 7)
vWAP = ta.vwap(close)
ema21 = ta.ema(close, 21)

// 5. Price Action Filters from Script 2
breakoutLong = close > ta.highest(high, 5) and (useVolume ? volume > ta.sma(volume, 10)*1.8 : true)
breakdownShort = close < ta.lowest(low, 5) and (useVolume ? volume > ta.sma(volume, 10)*1.8 : true)
bullishRejection = low < vWAP and close > (high + low)/2 and close > open
bearishRejection = high > vWAP and close < (high + low)/2 and close < open

// 6. Combined Entry Conditions
longBaseCond = (bullishFVG and rsi < 35 and macdLine > signalLine) or
              (bullishFVG and rsi < 38 and supertrendDir2 == 1) or
              (breakoutLong and macdLine2 > signalLine2) or
              (bullishRejection and close > ema21)

shortBaseCond = (bearishFVG and rsi > 65 and macdLine < signalLine) or
               (bearishFVG and rsi > 62 and supertrendDir2 == -1) or
               (breakdownShort and macdLine2 < signalLine2) or
               (bearishRejection and close < ema21)

longSignal = longBaseCond and (not useSuperTrend or supertrendDir == 1) and (not useTrendFilter or marketTrend == 1)

shortSignal = shortBaseCond and (not useSuperTrend or supertrendDir == -1) and (not useTrendFilter or marketTrend == -1)

// 7. Position Sizing with Minimum Quantity
var float longEntryPrice = na
var float shortEntryPrice = na
atr = ta.atr(atrPeriod)
positionSizeScript1 = math.max(strategy.equity * riskPercentage / 100 / (atr * 1.5), 1)
positionSizeScript2 = strategy.equity * riskPercentage / 100 / (atr * 2)

// 8. Dynamic Exit System with Dual Strategies
var float trailPrice = na
if longSignal or trendChanged and marketTrend == 1
    trailPrice := close
if shortSignal or trendChanged and marketTrend == -1
    trailPrice := close

trailOffset = atr * 0.75

// Script 1 Exit Logic
if strategy.position_size > 0
    trailPrice := math.max(trailPrice, close)
    strategy.exit("Long Exit", "Long", stop=trailPrice - trailOffset, trail_offset=trailOffset)
    
if strategy.position_size < 0
    trailPrice := math.min(trailPrice, close)
    strategy.exit("Short Exit", "Short", stop=trailPrice + trailOffset, trail_offset=trailOffset)

// Script 2 Exit Logic
longStop = close - atr * 1.2
shortStop = close + atr * 1.2
strategy.exit("Long Exit 2", "Long", stop=longStop, limit=na(longEntryPrice) ? na : longEntryPrice + (atr * 4), trail_points=not na(longEntryPrice) and close > longEntryPrice + atr ? atr * 3 : na, trail_offset=atr * 0.8)
strategy.exit("Short Exit 2", "Short", stop=shortStop, limit=na(shortEntryPrice) ? na : shortEntryPrice - (atr * 4), trail_points=not na(shortEntryPrice) and close < shortEntryPrice - atr ? atr * 3 : na, trail_offset=atr * 0.8)

// 9. Trend Change Signals and Visuals
// plot(supertrendLine, "SuperTrend", color=color.new(#2962FF, 0))
// plot(supertrendLine2, "SuperTrend 2", color=color.new(#FF00FF, 0))
// plot(ema200, "200 EMA", color=color.new(#FF6D00, 0))
// plot(ema21, "21 EMA", color=color.new(#00FFFF, 0))

bgcolor(marketTrend == 1 ? color.new(color.green, 90) : 
       marketTrend == -1 ? color.new(color.red, 90) : na)

plotshape(trendChanged and marketTrend == 1, "Bullish Trend", shape.labelup, 
         location.belowbar, color=color.green, text="▲ Trend Up")
plotshape(trendChanged and marketTrend == -1, "Bearish Trend", shape.labeldown, 
         location.abovebar, color=color.red, text="▼ Trend Down")

// 10. Signal Visualization for Both Strategies
// plotshape(longSignal, "Long Entry", shape.triangleup, location.belowbar, 
//          color=color.new(#00FF00, 0), size=size.small)
// plotshape(shortSignal, "Short Entry", shape.triangledown, location.abovebar, 
//          color=color.new(#FF0000, 0), size=size.small)
// plotshape(breakoutLong, "Breakout Long", shape.flag, location.belowbar, 
//          color=color.new(#00FF00, 50), size=size.small)
// plotshape(breakdownShort, "Breakdown Short", shape.flag, location.abovebar, 
//          color=color.new(#FF0000, 50), size=size.small)

// 11. Order Execution with Dual Entry Systems
if trendChanged and marketTrend == 1
    strategy.entry("Long Trend", strategy.long, qty=positionSizeScript1)
    longEntryPrice := close
    
if trendChanged and marketTrend == -1
    strategy.entry("Short Trend", strategy.short, qty=positionSizeScript1)
    shortEntryPrice := close

if longSignal and strategy.position_size == 0
    strategy.entry("Long Signal", strategy.long, qty=positionSizeScript2)
    longEntryPrice := close
    
if shortSignal and strategy.position_size == 0
    strategy.entry("Short Signal", strategy.short, qty=positionSizeScript2)
    shortEntryPrice := close