Tendance de trading automatisée suivant des stratégies de gestion dynamique des risques

MA MACD ATR TP/SL VOL
Date de création: 2025-04-03 13:43:11 Dernière modification: 2025-04-03 13:43:11
Copier: 4 Nombre de clics: 400
2
Suivre
319
Abonnés

Tendance de trading automatisée suivant des stratégies de gestion dynamique des risques Tendance de trading automatisée suivant des stratégies de gestion dynamique des risques

Aperçu

Il s’agit d’une stratégie de trading automatisée combinant des moyennes mobiles, des indicateurs MACD et des filtres de volume de transaction, conçue pour déterminer la direction de la tendance et gérer le risque de transaction à l’aide d’indicateurs techniques multiples. La stratégie détermine la tendance du marché à l’aide de moyennes mobiles à court et à long terme, utilise le signal de confirmation de tendance MACD et combine le filtrage de volume de transaction et le mécanisme de gestion du risque dynamique pour améliorer la précision et la stabilité des transactions.

Principe de stratégie

La stratégie est composée de quatre composants techniques principaux:

  1. Les moyennes mobiles sont utilisées pour déterminer la direction des tendances du marché à l’aide de moyennes mobiles croisées à court terme (20 cycles) et à long terme (100 cycles).
  2. Confirmation du signal MACD: vérification de l’efficacité du signal de tendance par la position relative de la ligne MACD par rapport à la ligne du signal.
  3. Filtrage des transactions: assure que les transactions se déroulent dans des conditions de marché actives, en comparant le volume des transactions actuelles avec le volume des transactions moyennes historiques.
  4. Gestion dynamique des risques: Calculez le point d’arrêt de perte avec l’indicateur ATR et définissez les limites de perte et de retrait maximum par jour.

Avantages stratégiques

  1. Vérification multi-indicateurs: amélioration significative de l’exactitude du signal en combinant les moyennes mobiles, le MACD et le volume de transaction.
  2. Contrôle dynamique des risques: un mécanisme flexible de calcul de la taille des positions et de gestion des risques, permettant de contrôler efficacement les risques individuels et globaux.
  3. Capacité de suivi des tendances: capture des tendances du marché à moyen terme et réduit les transactions inefficaces dans les marchés en turbulence.
  4. Ajustabilité des paramètres: offre plusieurs paramètres personnalisables pour faciliter l’optimisation des stratégies pour différents environnements de marché.

Risque stratégique

  1. Risque de retard: les moyennes mobiles et le MACD présentent un certain retard qui peut retarder la capture d’un point de basculement de la tendance.
  2. Sensitivité des paramètres: la performance de la stratégie est fortement dépendante des paramètres choisis et nécessite des ajustements constants dans différents environnements de marché.
  3. Défi des marchés instables: les stratégies peuvent générer des signaux de trading fréquents et inefficaces dans des marchés où il n’y a pas de tendance claire.
  4. Conditions de marché extrêmes: les mécanismes de contrôle des risques peuvent ne pas être en mesure d’éviter complètement les pertes importantes en cas de forte volatilité ou d’événements de couleur noire.

Orientation de l’optimisation de la stratégie

  1. Augmentation des algorithmes d’apprentissage automatique: introduction d’un mécanisme d’ajustement dynamique des paramètres pour optimiser les paramètres de la stratégie en fonction des changements en temps réel du marché.
  2. Vérification à plusieurs cycles: introduire plus d’indicateurs techniques à différents cycles pour améliorer la fiabilité du signal.
  3. L’analyse de corrélation: ajout d’une analyse de corrélation de marché pour réduire le risque systémique entre différents actifs.
  4. Évaluation approfondie des risques: amélioration des modèles de risques, ajout d’indicateurs d’évaluation des risques plus complexes et simulation de scénarios.

Résumer

Il s’agit d’une stratégie de trading automatisée qui utilise de manière intégrée plusieurs outils d’analyse technique et qui vise à fournir une méthode de trading relativement stable et fiable grâce à une gestion rigoureuse des risques et une vérification multi-indicateurs. Le cœur de la stratégie réside dans l’équilibre entre la capacité de capture de tendances et la maîtrise des risques, offrant un cadre flexible et optimisé pour la négociation quantifiée.

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

//@version=5
strategy("Strategia Semmoncino", shorttitle="semmoncino", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.05)

// Inputs
useVolumeFilter = input.bool(true, title="Usa Filtro di Volume")
volumeThreshold = input.float(1.5, title="Soglia Volume (x Media)", minval=1)
atrPeriod = input.int(14, title="ATR Period", minval=1)
atrMultiplier = input.float(2.0, title="ATR Multiplier", minval=0.1)
takeProfitMultiplier = input.float(6.0, title="Take Profit Multiplier", minval=1.0)  // Aumentato per ottimizzare
riskPerTrade = input.float(2.0, title="Rischio per Trade (%)", minval=0.1) / 100
maxDailyLoss = input.float(2.0, title="Perdita Massima Giornaliera (%)", minval=0.1) / 100
maxDrawdown = input.float(10.0, title="Drawdown Massimo (%)", minval=0.1) / 100
shortMAPeriod = input.int(20, title="MA Breve Termine", minval=1)
longMAPeriod = input.int(100, title="MA Lungo Termine", minval=1)

// MACD Inputs
macdFastLength = input.int(12, title="MACD Fast Length")
macdSlowLength = input.int(26, title="MACD Slow Length")
macdSignalLength = input.int(9, title="MACD Signal Length")

showSignals = input.bool(true, title="Mostra Segnali di Entrata")

// Prezzi di Apertura e Chiusura delle Candele Precedenti (senza repainting)
prevOpen = ta.valuewhen(1, open, 0)
prevClose = ta.valuewhen(1, close, 0)

// Calculate ATR
atr = ta.atr(atrPeriod)

// Calculate Volume Filter
volumeAvg = ta.sma(volume, 20)
volumeFilter = useVolumeFilter ? volume > (volumeAvg * volumeThreshold) : true

// Calculate Moving Averages
shortMA = ta.sma(close, shortMAPeriod)
longMA = ta.sma(close, longMAPeriod)

// Calculate MACD
[macdLine, signalLine, _] = ta.macd(close, macdFastLength, macdSlowLength, macdSignalLength)
macdConditionLong = macdLine > signalLine
macdConditionShort = macdLine < signalLine

// Determine Trend Direction
uptrend = shortMA > longMA
downtrend = shortMA < longMA

// Determine Order Conditions
longCondition = prevClose > prevOpen and volumeFilter and uptrend and macdConditionLong
shortCondition = prevClose < prevOpen and volumeFilter and downtrend and macdConditionShort

// Calcola la dimensione della posizione basata sul capitale iniziale
initialCapital = strategy.initial_capital
positionSize = (initialCapital * riskPerTrade) / (atr * atrMultiplier)

// Calculate Take Profit and Stop Loss Levels dynamically using ATR
takeProfitLong = close + (atr * takeProfitMultiplier)
stopLossLong = close - (atr * 1.5)  // Ridotto per ottimizzare
takeProfitShort = close - (atr * takeProfitMultiplier)
stopLossShort = close + (atr * 1.5)  // Ridotto per ottimizzare

// Limite di Perdita Giornaliera
var float dailyLossLimit = na
if na(dailyLossLimit) or (time - time) > 86400000 // Se è un nuovo giorno
    dailyLossLimit := strategy.equity * (1 - maxDailyLoss)

// Drawdown Massimo
var float drawdownLimit = na
if na(drawdownLimit)
    drawdownLimit := strategy.equity * (1 - maxDrawdown)

// Controllo delle Perdite
if strategy.equity < dailyLossLimit
    strategy.cancel_all()
    strategy.close_all()
    label.new(bar_index, high, text="Perdita Giornaliera Massima Raggiunta", color=color.red)

if strategy.equity < drawdownLimit
    strategy.cancel_all()
    strategy.close_all()
    label.new(bar_index, high, text="Drawdown Massimo Raggiunto", color=color.red)

// Strategy Entries
if (longCondition)
    strategy.entry("Long", strategy.long, qty=positionSize)
    strategy.exit("Take Profit/Stop Loss Long", from_entry="Long", limit=takeProfitLong, stop=stopLossLong)

if (shortCondition)
    strategy.entry("Short", strategy.short, qty=positionSize)
    strategy.exit("Take Profit/Stop Loss Short", from_entry="Short", limit=takeProfitShort, stop=stopLossShort)

// Plot Entry Signals
plotshape(series=longCondition and showSignals ? close : na, location=location.belowbar, color=color.green, style=shape.labelup, text="LONG")
plotshape(series=shortCondition and showSignals ? close : na, location=location.abovebar, color=color.red, style=shape.labeldown, text="SHORT")

// Plot Moving Averages
plot(shortMA, color=color.blue, title="MA Breve Termine", linewidth=2)
plot(longMA, color=color.orange, title="MA Lungo Termine", linewidth=2)

// Plot MACD
hline(0, "Zero Line", color=color.gray)
plot(macdLine - signalLine, title="MACD Histogram", color=color.red, style=plot.style_histogram)