Stratégie de combinaison de crossover dynamique ATR avec stop loss suiveur et moyenne mobile

EMA ATR RSI SMA VOLUME
Date de création: 2025-02-18 15:48:18 Dernière modification: 2025-02-18 15:48:18
Copier: 1 Nombre de clics: 504
1
Suivre
1617
Abonnés

Stratégie de combinaison de crossover dynamique ATR avec stop loss suiveur et moyenne mobile

Aperçu

La stratégie est un système de négociation composite basé sur ATR qui suit de manière dynamique les arrêts et les courbes de la courbe, combinant plusieurs indicateurs techniques pour le filtrage des transactions et le contrôle des risques. La stratégie fonctionne sur des cycles de 15 minutes, détermine les signaux de négociation à l’aide d’indicateurs multidimensionnels tels que la courbe EMA, la volatilité ATR, l’indicateur RSI et le volume de transactions, et gère les risques de perte en suivant de manière dynamique les arrêts.

Principe de stratégie

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

  1. Les conditions d’entrée sont réglées par un système de filtrage multiple:
    • Le prix est situé au-dessus/sous l’EMA de 100 cycles
    • Confirmation de la tendance à 100 EMA sur une période de 1 heure
    • Le croisement du prix avec l’ATR pour suivre la ligne de stop loss
    • RSI dans la zone neutre entre 30 et 70
    • Le volume actuel est supérieur à la moyenne des 20 cycles.
  2. Système de contrôle des risques:
    • Arrêt de suivi dynamique basé sur un triple ATR
    • L’ATR est fixé à deux fois plus
  3. Le mécanisme de sortie:
    • Les EMA de 15 et 17 cycles sont des signaux croisés de deux lignes K successives
    • Trigger le suivi des objectifs de stop-loss ou de profit

Avantages stratégiques

  1. Vérification croisée de multiples indicateurs techniques pour réduire efficacement les faux signaux
  2. Filtrage des tendances à cycles multiples pour une meilleure précision de la direction des transactions
  3. Le stop ATR dynamique peut s’adapter aux fluctuations du marché
  4. L’objectif de profit est lié au stop loss, assurant un équilibre dynamique entre le risque et le bénéfice.
  5. Utilisez l’intersection EMA comme signal de départ pour éviter une sortie prématurée
  6. La confirmation de transaction améliore la validité des transactions

Risque stratégique

  1. Les conditions de filtrage multiples peuvent entraîner la perte de certaines opportunités commerciales
  2. Les arrêts ATR peuvent être trop larges dans des marchés très volatils
  3. Les sorties croisées consécutives à l’EMA pourraient entraîner une reprise partielle des bénéfices
  4. La dépendance à l’égard des tendances du marché, et la possibilité d’un mauvais rendement en cas de choc
  5. Complexité de calcul plus élevée, risque de retard d’exécution

Orientation de l’optimisation de la stratégie

  1. La mise en place d’un mécanisme d’optimisation des paramètres d’adaptation:
    • Le multiplicateur ATR peut être ajusté en fonction de la dynamique des différentes conditions du marché
    • Les cycles EMA peuvent être automatiquement optimisés en fonction des fluctuations du marché
  2. Augmenter la reconnaissance de l’état du marché:
    • Ajout d’un indicateur de force de tendance
    • Introduction du jugement sur les cycles de volatilité
  3. Améliorer le contrôle des risques :
    • Réalisation de la construction et de la réduction des stocks par lots
    • Augmentation de la limite de temps de détention maximale
  4. Optimiser le mécanisme de sortie:
    • Adaptation dynamique des objectifs de bénéfices combinée à l’intensité de la tendance
    • Ajout de mécanisme de stop-loss

Résumer

La stratégie utilise plusieurs indicateurs techniques et des moyens de contrôle des risques pour construire un système de négociation relativement complet. La principale caractéristique de la stratégie est l’utilisation d’un arrêt de suivi ATR dynamique pour s’adapter aux fluctuations du marché, tout en utilisant le filtrage d’indicateurs multiples et le croisement homogène pour confirmer les signaux de négociation. Bien qu’il existe un certain espace d’optimisation, l’idée de conception globale répond aux exigences de la négociation quantifiée moderne et a une bonne valeur d’application pratique.

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

//@version=5
strategy(title='UT Bot Strategy with 100 EMA Filter, Trailing Stop and EMA Cross Exit', overlay=true)

// Inputs
a = input(1, title='Key Value. \'This changes the sensitivity\'')
c = input(10, title='ATR Period')
h = input(false, title='Signals from Heikin Ashi Candles')

// Higher timeframe trend filter (1-hour)
higherTimeframeEMA = request.security(syminfo.tickerid, "60", ta.ema(close, 100)) // 1-hour EMA

xATR = ta.atr(c)

// Adjusting ATR multiplier for Gold on 15-minute timeframe
atrMultiplier = 3
nLoss = atrMultiplier * xATR  // ATR-based loss calculation

src = h ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, lookahead=barmerge.lookahead_off) : close

// Trailing Stop Calculation
xATRTrailingStop = 0.0
iff_1 = src > nz(xATRTrailingStop[1], 0) ? src - nLoss : src + nLoss
iff_2 = src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), src + nLoss) : iff_1
xATRTrailingStop := src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), src - nLoss) : iff_2

pos = 0
iff_3 = src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0)
pos := src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0) ? 1 : iff_3

xcolor = pos == -1 ? color.red : pos == 1 ? color.green : color.blue

// Define 100 EMA
ema100 = ta.ema(src, 100)
plot(ema100, title="100 EMA", color=color.black, linewidth=2)

// Define 15 EMA and 17 EMA for exit conditions
ema15 = ta.ema(src, 15)
ema17 = ta.ema(src, 17)
plot(ema15, title="15 EMA", color=color.blue, linewidth=1)
plot(ema17, title="17 EMA", color=color.purple, linewidth=1)

// Define Entry Conditions
longCondition = src > ema100 and src > xATRTrailingStop and close > higherTimeframeEMA and ta.crossover(ta.ema(src, 1), xATRTrailingStop)
shortCondition = src < ema100 and src < xATRTrailingStop and close < higherTimeframeEMA and ta.crossover(xATRTrailingStop, ta.ema(src, 1))

// RSI Filter
rsi = ta.rsi(close, 14)
longCondition := longCondition and rsi > 30 and rsi < 70  // Ensure RSI is not in extreme conditions
shortCondition := shortCondition and rsi > 30 and rsi < 70

// Volume Filter
volumeMA = ta.sma(volume, 20)
longCondition := longCondition and volume > volumeMA
shortCondition := shortCondition and volume > volumeMA

// ** Trailing Stop Setup **
trailOffset = nLoss  // The trailing stop distance is based on ATR, which is already calculated
trailPriceLong = close - trailOffset  // The trailing stop for long trades is below the entry price
trailPriceShort = close + trailOffset  // The trailing stop for short trades is above the entry price

// Define Take Profit (TP) condition
takeProfitMultiplier = 2  // This sets the take profit at 2x the ATR from the entry
takeProfitLong = close + takeProfitMultiplier * nLoss
takeProfitShort = close - takeProfitMultiplier * nLoss

// Strategy Entries
if (longCondition)
    strategy.entry('long', strategy.long)

if (shortCondition)
    strategy.entry('short', strategy.short)

// Exit conditions for 15 and 17 EMA cross (must be consecutive on two bars)
exitLong = ta.crossover(ema15, ema17) and ta.crossover(ema15[1], ema17[1])  // Exit long if both the current and previous bars have 15 EMA crossing above 17 EMA
exitShort = ta.crossunder(ema15, ema17) and ta.crossunder(ema15[1], ema17[1])  // Exit short if both the current and previous bars have 15 EMA crossing below 17 EMA

// Apply trailing stop and take profit along with EMA cross exit
strategy.exit("Exit Long", "long", trail_price=trailPriceLong, trail_offset=trailOffset, limit=takeProfitLong)  // Long exit with trailing stop and TP
strategy.exit("Exit Short", "short", trail_price=trailPriceShort, trail_offset=trailOffset, limit=takeProfitShort)  // Short exit with trailing stop and TP

// Close positions when 15 and 17 EMAs cross consecutively
strategy.close("long", when=exitLong)
strategy.close("short", when=exitShort)

// Alert condition for trade closure
longExitAlert = exitLong  // Only trigger alert for long if both consecutive bars show crossover
shortExitAlert = exitShort  // Only trigger alert for short if both consecutive bars show crossunder

alertcondition(longExitAlert, title="Close Long Trade", message="Long trade closed. 15 EMA crossed above 17 EMA on two consecutive bars.")
alertcondition(shortExitAlert, title="Close Short Trade", message="Short trade closed. 15 EMA crossed below 17 EMA on two consecutive bars.")