Stratégie de day trading dynamique multi-indicateurs suivant les tendances

EMA RSI MACD ATR IST
Date de création: 2025-02-21 13:15:30 Dernière modification: 2025-02-21 13:15:30
Copier: 0 Nombre de clics: 365
2
Suivre
319
Abonnés

Stratégie de day trading dynamique multi-indicateurs suivant les tendances Stratégie de day trading dynamique multi-indicateurs suivant les tendances

Aperçu

Il s’agit d’une stratégie de trading intraday basée sur plusieurs indicateurs techniques, qui utilise principalement des signaux multiples tels que la chaîne EMA, le sur-boutique RSI et la confirmation de la tendance MACD. La stratégie fonctionne sur des cycles de 3 minutes, capture la tendance du marché via la confirmation croisée des hauts et des bas de l’EMA en combinaison avec le RSI et le MACD, et définit un stop-loss dynamique basé sur l’ATR, ainsi qu’un temps de clôture fixe.

Principe de stratégie

La stratégie utilise 20 cycles d’EMA pour calculer les hauts et les bas, respectivement, pour former une voie d’entrée lorsque le prix franchit la voie d’entrée et remplit les conditions suivantes:

  1. Entrée à plusieurs têtes: traversée de l’EMA à la clôture, RSI entre 50 et 70, traversée du signal sur la ligne MACD
  2. Entrée en bourse: EMA en baisse sous la clôture, RSI entre 30 et 50, MACD sous la ligne
  3. Utilisez l’ATR pour calculer dynamiquement la position de stop-loss, en réglant le stop-loss en fonction de 2,5 fois le rapport risque/bénéfice
  4. Le risque de chaque transaction est de 1% du compte et la taille de la position est calculée en fonction de la distance de stop loss
  5. Le placement obligatoire de toutes les positions à 15h00 heure indienne

Avantages stratégiques

  1. Vérification croisée de multiples indicateurs techniques pour améliorer la fiabilité des signaux de négociation
  2. Les stop-loss dynamiques sont basés sur l’indicateur ATR et sont mieux adaptés aux fluctuations du marché
  3. Ratio de risque fixe et rapport de risque/revenu, pour une gestion efficace des risques
  4. Le coût de la transaction est pris en compte, y compris le calcul des commissions.
  5. La ban de la prise de positions simultanées pour éviter les risques de détention excessive
  6. Fixez les heures de clôture pour éviter les risques de nuit

Risque stratégique

  1. Les multiples indicateurs peuvent entraîner des retards de signal et affecter le temps d’entrée.
  2. La chaîne EMA pourrait générer de fréquentes fausses ruptures sur le marché horizontal
  3. Le rapport risque/bénéfice fixe peut ne pas être suffisamment flexible dans différents environnements de marché
  4. La restriction de la fourchette RSI pourrait avoir manqué certaines grandes tendances
  5. La clôture de la clôture obligatoire peut être forcée à la clôture de positions clés

Orientation de l’optimisation de la stratégie

  1. Considérer l’ajout d’indicateurs de chiffre d’affaires comme confirmation supplémentaire
  2. Le ratio risque/revenu peut être ajusté en fonction de la dynamique des fluctuations de la période
  3. Introduction d’une correction dynamique du RSI au niveau de la marge
  4. Réfléchir à l’augmentation de l’intensité de la tendance et au filtrage pour réduire les fausses percées
  5. On peut envisager d’ajuster les paramètres en fonction des caractéristiques des différentes périodes de la journée
  6. Ajout d’une analyse des fluctuations historiques pour optimiser la gestion des positions

Résumer

La stratégie utilise la combinaison de plusieurs indicateurs techniques pour construire un système de négociation relativement complet. L’avantage de la stratégie réside dans le fait que le contrôle des risques est plus complet, y compris des mécanismes tels que l’arrêt dynamique des pertes, le risque fixe et la liquidation des positions. Bien qu’il existe un certain risque de retard, la performance de la stratégie peut être encore améliorée par l’optimisation des paramètres et l’ajout d’indicateurs auxiliaires.

Code source de la stratégie
/*backtest
start: 2024-02-21 00:00:00
end: 2024-09-09 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Intraday 3min EMA HL Strategy v6", 
     overlay=true,
     margin_long=100, 
     margin_short=100,
     initial_capital=100000,
     default_qty_type=strategy.percent_of_equity,
     default_qty_value=100,
     commission_type=strategy.commission.percent,
     commission_value=0.05,
     calc_on_every_tick=false,
     process_orders_on_close=true,
     pyramiding=0)

// Input Parameters
i_emaLength = input.int(20, "EMA Length", minval=5, group="Strategy Parameters")
i_rsiLength = input.int(14, "RSI Length", minval=5, group="Strategy Parameters")
i_atrLength = input.int(14, "ATR Length", minval=5, group="Risk Management")
i_rrRatio = input.float(2.5, "Risk:Reward Ratio", minval=1, maxval=10, step=0.5, group="Risk Management")
i_riskPercent = input.float(1, "Risk % per Trade", minval=0.1, maxval=5, step=0.1, group="Risk Management")

// Time Exit Parameters (IST)
i_exitHour = input.int(15, "Exit Hour (IST)", minval=0, maxval=23, group="Session Rules")
i_exitMinute = input.int(0, "Exit Minute (IST)", minval=0, maxval=59, group="Session Rules")

// Indicator Calculations
emaHigh = ta.ema(high, i_emaLength)
emaLow = ta.ema(low, i_emaLength)

rsi = ta.rsi(close, i_rsiLength)
atr = ta.atr(i_atrLength)

fastMA = ta.ema(close, 12)
slowMA = ta.ema(close, 26)
macdLine = fastMA - slowMA
signalLine = ta.ema(macdLine, 9)

// Time Calculations (UTC to IST Conversion)
istHour = (hour(time) + 5) % 24  // UTC+5
istMinute = minute(time) + 30    // 30 minute offset
istHour += istMinute >= 60 ? 1 : 0
istMinute := istMinute % 60

// Exit Condition
timeExit = istHour > i_exitHour or (istHour == i_exitHour and istMinute >= i_exitMinute)

// Entry Conditions (Multi-line formatting fix)
longCondition = close > emaHigh and
     rsi > 50 and
     rsi < 70 and
     ta.crossover(macdLine, signalLine)

shortCondition = close < emaLow and
     rsi < 50 and
     rsi > 30 and
     ta.crossunder(macdLine, signalLine)

// Risk Calculations
var float entryPrice = na
var float stopLoss = na
var float takeProfit = na
var float posSize = na

// Strategy Logic
if longCondition and not timeExit and strategy.position_size == 0
    entryPrice := close
    stopLoss := math.min(low, entryPrice - atr)
    takeProfit := entryPrice + (entryPrice - stopLoss) * i_rrRatio
    posSize := strategy.equity * i_riskPercent / 100 / (entryPrice - stopLoss)
    strategy.entry("Long", strategy.long, qty=posSize)
    strategy.exit("Long Exit", "Long", stop=stopLoss, limit=takeProfit)

if shortCondition and not timeExit and strategy.position_size == 0
    entryPrice := close
    stopLoss := math.max(high, entryPrice + atr)
    takeProfit := entryPrice - (stopLoss - entryPrice) * i_rrRatio
    posSize := strategy.equity * i_riskPercent / 100 / (stopLoss - entryPrice)
    strategy.entry("Short", strategy.short, qty=posSize)
    strategy.exit("Short Exit", "Short", stop=stopLoss, limit=takeProfit)

// Force Close at Session End
if timeExit
    strategy.close_all()

// Visual Components
plot(emaHigh, "EMA High", color=color.rgb(0, 128, 0), linewidth=2)
plot(emaLow, "EMA Low", color=color.rgb(255, 0, 0), linewidth=2)

plotshape(longCondition, "Long Signal", shape.triangleup, 
  location.belowbar, color=color.green, size=size.small)
plotshape(shortCondition, "Short Signal", shape.triangledown, 
  location.abovebar, color=color.red, size=size.small)

// Debugging Table
var table infoTable = table.new(position.top_right, 3, 3)
if barstate.islast
    table.cell(infoTable, 0, 0, "EMA High: " + str.tostring(emaHigh, "#.00"))
    table.cell(infoTable, 0, 1, "EMA Low: " + str.tostring(emaLow, "#.00"))
    table.cell(infoTable, 0, 2, "Current RSI: " + str.tostring(rsi, "#.00"))