Stratégie de trading de suivi de tendance stochastique sur plusieurs périodes

EMA ATR MTF ROI TP SL
Date de création: 2025-02-18 17:53:04 Dernière modification: 2025-02-18 17:53:04
Copier: 1 Nombre de clics: 360
1
Suivre
1617
Abonnés

Stratégie de trading de suivi de tendance stochastique sur plusieurs périodes

Aperçu

La stratégie est un système de suivi de tendance qui combine un indicateur stochastique multi-châtres et une moyenne mobile indicielle. Elle juge les conditions de survente et de survente à l’aide d’un indicateur stochastique à haute fréquence, tout en utilisant l’EMA comme filtre de tendance et en intégrant la gestion de position dynamique et le suivi des arrêts de perte, un système de stratégie de trading complet.

Principe de stratégie

La logique centrale de la stratégie repose sur les éléments clés suivants:

  1. Utilisation d’indicateurs aléatoires à haute cadence pour identifier les zones de surachat et de survente, déterminer les signaux de transaction potentiels par le croisement des lignes K avec les niveaux de surachat et de survente
  2. Utilisez l’EMA comme filtre de tendance, ne faites plus que lorsque le prix est au-dessus de l’EMA, faites moins que lorsque le prix est en dessous de l’EMA
  3. Le stop-loss et le profit-target sont calculés en fonction de l’ATR dynamique, le stop-loss est 1,5 fois l’ATR et le profit-target est 2 fois le stop-loss
  4. Utilisation d’une méthode de calcul de position dynamique basée sur le pourcentage de risque du compte, assurant que le risque de chaque transaction est maîtrisé à un niveau prédéfini
  5. Option de stop-loss de suivi avec une distance de suivi de 1,5 fois l’ATR

Avantages stratégiques

  1. Confirmation de signaux multiples: amélioration de la fiabilité du signal en combinant des indicateurs aléatoires de cadres hauts et des filtres de tendance EMA
  2. Une bonne gestion des risques: une approche de gestion des risques en pourcentage pour assurer la sécurité des fonds
  3. Mécanisme de stop-loss flexible: prend en charge les stop-loss fixes et les stop-loss traçables, adaptés à différentes conditions de marché
  4. Rappels de transaction clairs: le système marque automatiquement les points d’entrée, les points d’arrêt et les points cibles pour faciliter l’exécution des transactions
  5. Gestion dynamique des positions: ajustement automatique de la taille des transactions en fonction de la volatilité, optimisation de l’efficacité de l’utilisation des fonds

Risque stratégique

  1. Risque d’inversion de tendance: de faux signaux dans un marché en pleine effervescence
  2. Risque de glissement: risque de glissement plus important en cas de manque de liquidité sur le marché
  3. Sensibilité aux paramètres: la performance de la stratégie est sensible aux paramètres, ce qui nécessite une optimisation soignée.
  4. Risque de retrait: un retrait plus important est possible en cas de forte volatilité du marché
  5. Risque de déclenchement d’un arrêt: le suivi d’un arrêt peut être déclenché prématurément lorsque la volatilité augmente

Orientation de l’optimisation de la stratégie

  1. Ajout d’un filtre d’environnement de marché: vous pouvez ajouter un indicateur de volatilité ou un indicateur de force de tendance pour ajuster les paramètres de stratégie dans différents environnements de marché
  2. Optimisation des mécanismes de confirmation des signaux: l’ajout d’une confirmation de livraison ou d’autres indicateurs techniques peut être envisagé comme aide à la décision
  3. Amélioration de la gestion des positions: le pourcentage de risque peut être ajusté en fonction de la dynamique de volatilité du marché
  4. Amélioration du mécanisme d’arrêt des pertes: suivi de la distance des pertes en fonction de la dynamique des caractéristiques du marché
  5. Ajouter un filtrage temporel: considérer les restrictions de transaction pour les périodes importantes et éviter les risques pendant les annonces importantes

Résumer

La stratégie utilise l’analyse multi-temps et le mécanisme de confirmation de signaux multiples, combinés à un système de gestion des risques bien développé, pour construire un système de négociation relativement complet. Bien qu’il y ait un certain risque, la stratégie est susceptible de maintenir une performance stable dans différents environnements de marché grâce à une optimisation et une amélioration continues.

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

//@version=5
strategy("Ultimate fairas Oil", overlay=true)

// === Input Parameter ===
k_period = input(14, "K Period")
d_period = input(3, "D Period")
smooth_k = input(3, "Smooth K")
overbought = input(80, "Overbought Level")
oversold = input(20, "Oversold Level")
atrMult = input(1.5, "ATR Multiplier")
use_trailing_stop = input(true, "Enable Trailing Stop")
ema_length = input(50, "EMA Length")
risk_percent = input(2, "Risk per Trade (%)") / 100
account_balance = input(50000, "Account Balance")
mtf_tf = input.timeframe("D", "Higher Timeframe for Stochastic")

// === Multi-Timeframe Stochastic ===
stoch_source = request.security(syminfo.tickerid, mtf_tf, ta.stoch(close, high, low, k_period))
k = ta.sma(stoch_source, smooth_k)

// === Trend Filter (EMA) ===
ema = ta.ema(close, ema_length)
trendUp = close > ema
trendDown = close < ema

// === Entry Conditions ===
longCondition = ta.crossover(k, oversold) and trendUp
shortCondition = ta.crossunder(k, overbought) and trendDown

// === ATR-Based Stop Loss & Take Profit ===
atrValue = ta.atr(14)
stopLoss = atrMult * atrValue
takeProfit = 2 * stopLoss

// === Dynamic Lot Sizing (Risk Management) ===
risk_amount = account_balance * risk_percent
position_size = risk_amount / stopLoss

// === Trailing Stop Calculation ===
trailOffset = atrValue * 1.5
trailStopLong = use_trailing_stop ? close - trailOffset : na
trailStopShort = use_trailing_stop ? close + trailOffset : na

// === Execute Trades ===
if longCondition
    strategy.entry("Long", strategy.long, qty=position_size)
    strategy.exit("Exit Long", from_entry="Long", stop=close - stopLoss, limit=close + takeProfit, trail_points=use_trailing_stop ? trailOffset : na)

    // // Labels & Lines
    // label.new(x=bar_index, y=close, text="BUY", color=color.green, textcolor=color.white, size=size.small, style=label.style_label_down)
    // label.new(x=bar_index, y=close + takeProfit, text="TP 🎯", color=color.blue, textcolor=color.white, size=size.tiny)
    // label.new(x=bar_index, y=close - stopLoss, text="SL ❌", color=color.red, textcolor=color.white, size=size.tiny)
    // line.new(x1=bar_index, y1=close + takeProfit, x2=bar_index + 5, y2=close + takeProfit, width=2, color=color.blue)
    // line.new(x1=bar_index, y1=close - stopLoss, x2=bar_index + 5, y2=close - stopLoss, width=2, color=color.red)

    // Alert
    alert("BUY Signal! TP: " + str.tostring(close + takeProfit) + ", SL: " + str.tostring(close - stopLoss) + ", Lot Size: " + str.tostring(position_size), alert.freq_once_per_bar_close)

if shortCondition
    strategy.entry("Short", strategy.short, qty=position_size)
    strategy.exit("Exit Short", from_entry="Short", stop=close + stopLoss, limit=close - takeProfit, trail_points=use_trailing_stop ? trailOffset : na)

    // // Labels & Lines
    // label.new(x=bar_index, y=close, text="SELL", color=color.red, textcolor=color.white, size=size.small, style=label.style_label_up)
    // label.new(x=bar_index, y=close - takeProfit, text="TP 🎯", color=color.blue, textcolor=color.white, size=size.tiny)
    // label.new(x=bar_index, y=close + stopLoss, text="SL ❌", color=color.green, textcolor=color.white, size=size.tiny)
    // line.new(x1=bar_index, y1=close - takeProfit, x2=bar_index + 5, y2=close - takeProfit, width=2, color=color.blue)
    // line.new(x1=bar_index, y1=close + stopLoss, x2=bar_index + 5, y2=close + stopLoss, width=2, color=color.green)

    // Alert
    alert("SELL Signal! TP: " + str.tostring(close - takeProfit) + ", SL: " + str.tostring(close + stopLoss) + ", Lot Size: " + str.tostring(position_size), alert.freq_once_per_bar_close)