Stratégie de trading d'agrégation de volume et de tendance sur plusieurs périodes

FRVP AVWAP EMA RSI ADX MACD SMA ATR
Date de création: 2025-04-02 16:15:52 Dernière modification: 2025-04-02 16:15:52
Copier: 0 Nombre de clics: 375
2
Suivre
319
Abonnés

Stratégie de trading d’agrégation de volume et de tendance sur plusieurs périodes Stratégie de trading d’agrégation de volume et de tendance sur plusieurs périodes

Aperçu

Il s’agit d’une stratégie de négociation multicanalogique complexe qui combine plusieurs outils d’analyse technique, tels que le prix moyen pondéré de la transaction (AVWAP), la distribution de la transaction à portée fixe (FRVP), l’indice de la moyenne mobile (EMA), l’indice de la force relative (RSI), l’indice de la direction moyenne (ADX) et la dispersion de la convergence des moyennes mobiles (MACD), afin d’identifier des opportunités de négociation à forte probabilité par le regroupement des indicateurs.

Principe de stratégie

La stratégie consiste à déterminer les signaux d’entrée selon plusieurs critères:

  1. Le prix croisé avec AVWAP
  2. Position du prix par rapport à l’EMA
  3. Détermination de la force du RSI
  4. La dynamique de la tendance MACD
  5. Confirmation de l’intensité de la tendance de l’ADX
  6. Filtre à débit

La stratégie se concentre sur les heures de négociation en Asie, à Londres et à New York, qui sont généralement plus fluides et offrent des signaux de négociation plus fiables. La logique d’entrée comprend deux modes de position longue et position vide, avec un arrêt de gradient et un arrêt de perte.

Avantages stratégiques

  1. Combinaison de plusieurs indicateurs pour une meilleure précision du signal
  2. Filtrage dynamique du volume des transactions afin d’éviter les transactions à faible liquidité
  3. Une stratégie de stop-loss flexible
  4. Optimisation de la stratégie en fonction des différentes périodes de négociation
  5. Système de gestion dynamique des risques
  6. Des signaux visuels pour l’aide à la décision

Risque stratégique

  1. La combinaison de plusieurs indicateurs peut entraîner une complexité accrue du signal
  2. Risque de surcompatibilité avec les données de détection
  3. Les performances peuvent être instables dans différentes conditions de marché
  4. Les coûts de transaction et les points de glissement peuvent affecter les bénéfices réels

Orientation de l’optimisation de la stratégie

  1. Paramètres d’ajustement dynamique pour les algorithmes d’apprentissage automatique
  2. Augmentation de la flexibilité des périodes de négociation
  3. Optimiser les stratégies de stop loss
  4. Plus de conditions de filtrage
  5. Développer un modèle stratégique pour l’universalité entre les espèces

Résumer

Il s’agit d’une stratégie de négociation hautement personnalisée et multidimensionnelle qui tente d’améliorer la qualité et l’exactitude des signaux de négociation en intégrant plusieurs indicateurs techniques et caractéristiques de la période de négociation. La stratégie montre la complexité de l’agrégation des indicateurs et de la gestion dynamique des risques dans les transactions quantifiées.

Code source de la stratégie
/*backtest
start: 2024-04-02 00:00:00
end: 2024-12-31 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/

//@version=6
strategy("FRVP + AVWAP by Grok", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// User Inputs
frvpLength = input.int(20, title="FRVP Length", minval=1)
emaLength = input.int(75, title="EMA Length", minval=1) // Adjusted for stronger trend confirmation
rsiLength = input.int(14, title="RSI Length", minval=1)
adxThreshold = input.int(20, title="ADX Strength Threshold", minval=0, maxval=100)
volumeMultiplier = input.float(1.0, title="Volume Multiplier", minval=0.1)

// Stop Loss & Take Profit for XAUUSD
stopLossPips = 25 // 25 pips SL for Asian, London, NY Sessions
takeProfit1Pips = 35 // TP1 at 35 pips
takeProfit2Pips = 80 // Final TP at 80 pips

// Stop-Loss & Take-Profit Multipliers (XAUUSD: 1 pip = 0.1 points on most platforms)
stopMultiplier = float(stopLossPips) * 0.1
tp1Multiplier = float(takeProfit1Pips) * 0.1
tp2Multiplier = float(takeProfit2Pips) * 0.1

// Indicators
avwap = ta.vwap(close)  // Volume Weighted Average Price (VWAP)
ema = ta.ema(close, emaLength)     // Exponential Moving Average
rsi = ta.rsi(close, rsiLength)     // Relative Strength Index
macdLine = ta.ema(close, 12) - ta.ema(close, 26)  // MACD Line
signalLine = ta.ema(macdLine, 9)   // MACD Signal Line
atr = ta.atr(14)                   // Average True Range

// Average Directional Index (ADX)
adxSmoothing = 14
[diplus, diminus, adx] = ta.dmi(14, adxSmoothing)  // Corrected syntax for ta.dmi()

// Volume Profile (FRVP - Fixed Range Volume Profile Midpoint)
highestHigh = ta.highest(high, frvpLength)
lowestLow = ta.lowest(low, frvpLength)
frvpMid = (highestHigh + lowestLow) / 2  // Midpoint of the range

// Detect Trading Sessions
currentHour = hour(time, "UTC")  // Renamed to avoid shadowing built-in 'hour'
isAsianSession = currentHour >= 0 and currentHour < 8
isLondonSession = currentHour >= 8 and currentHour < 16
isNYSession = currentHour >= 16 and currentHour < 23

// Entry Conditions
longCondition = ta.crossover(close, avwap) and close > ema and rsi > 30 and macdLine > signalLine and adx > adxThreshold
shortCondition = ta.crossunder(close, avwap) and close < ema and rsi < 70 and macdLine < signalLine and adx > adxThreshold

// Volume Filter
avgVolume = ta.sma(volume, 20)     // 20-period Simple Moving Average of volume
volumeFilter = volume > avgVolume * volumeMultiplier  // Trade only when volume exceeds its moving average

// Trade Execution with SL/TP for Sessions
if (longCondition and volumeFilter and (isAsianSession or isLondonSession or isNYSession))
    strategy.entry("LongEntry", strategy.long, qty=100)
    strategy.exit("LongTP1", from_entry="LongEntry", limit=close + tp1Multiplier)
    strategy.exit("LongExit", from_entry="LongEntry", stop=close - stopMultiplier, limit=close + tp2Multiplier)

if (shortCondition and volumeFilter and (isAsianSession or isLondonSession or isNYSession))
    strategy.entry("ShortEntry", strategy.short, qty=100)
    strategy.exit("ShortTP1", from_entry="ShortEntry", limit=close - tp1Multiplier)
    strategy.exit("ShortExit", from_entry="ShortEntry", stop=close + stopMultiplier, limit=close - tp2Multiplier)

// Plotting for Debugging and Visualization
plot(avwap, "AVWAP", color=color.purple, style=plot.style_line, offset=0)
plot(ema, "EMA", color=color.orange, style=plot.style_line, offset=0)
// plot(rsi, "RSI", color=color.yellow, style=plot.style_histogram, offset=0)  // Better in a separate pane
// plot(macdLine, "MACD Line", color=color.blue, style=plot.style_histogram, offset=0)  // Better in a separate pane
// plot(signalLine, "Signal Line", color=color.red, style=plot.style_histogram, offset=0)  // Better in a separate pane
plot(adx, "ADX", color=color.green, style=plot.style_line, offset=0)

// Optional: Plot entry/exit signals for visualization
plotshape(longCondition and volumeFilter ? close : na, title="Long Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.tiny)
plotshape(shortCondition and volumeFilter ? close : na, title="Short Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.tiny)