Les ressources ont été chargées... Je charge...

Stratégie adaptative dynamique de prise de bénéfices et d'arrêt des pertes basée sur l'ATR et l'EMA

Auteur:ChaoZhang est là., Date: 2024-05-28 14:15:56 Le gouvernement a décidé de mettre fin à cette procédure.
Les étiquettes:ATRLe taux d'intérêt

img

Résumé

Cette stratégie utilise deux indicateurs, ATR (Average True Range) et EMA (Exponential Moving Average), pour ajuster dynamiquement les niveaux de prise de profit et d'arrêt de perte afin de s'adapter à la volatilité du marché. L'idée principale de la stratégie est d'utiliser l'indicateur ATR pour mesurer la volatilité du marché et définir les niveaux de prise de profit et d'arrêt de perte en fonction de l'ampleur de la volatilité.

Principe de stratégie

  1. Calculer l'indicateur ATR pour mesurer l'ampleur de la volatilité du marché.
  2. Le niveau de stop loss dynamique est calculé sur la base de la valeur ATR et du paramètre multiple d'entrée.
  3. Utilisez l'indicateur EMA comme condition de filtrage: ouvrez une position longue lorsque le prix dépasse la EMA, et ouvrez une position courte lorsque le prix dépasse la EMA.
  4. Pendant la tenue d'une position, ajustez continuellement les niveaux de prise de profit et de stop loss en fonction des variations de prix et des variations dynamiques des niveaux de stop loss.
  5. Lorsque le prix atteint le niveau de stop loss dynamique, fermer la position et ouvrir une position inversée.

Les avantages de la stratégie

  1. Une grande adaptabilité: en ajustant dynamiquement les niveaux de prise de profit et de stop-loss, la stratégie peut s'adapter aux changements de volatilité dans différentes conditions de marché et contrôler les risques.
  2. Une forte capacité de suivi des tendances: l'indicateur EMA est utilisé pour déterminer la direction des transactions, ce qui permet de capturer efficacement les tendances du marché.
  3. Paramètres réglables: en ajustant la période d'ATR et plusieurs paramètres, le risque et le rendement de la stratégie peuvent être contrôlés de manière flexible.

Risques stratégiques

  1. Résolution des risques par paramètres: la définition de la période d'ATR et de plusieurs paramètres aura une incidence directe sur la performance de la stratégie.
  2. Risque d'oscillation du marché: dans un marché oscillant, l'ouverture et la fermeture fréquentes de positions peuvent entraîner des pertes importantes en termes de dérapage et de frais de transaction.
  3. Risque d'inversion de tendance: lorsque la tendance du marché s'inverse, la stratégie peut subir des pertes consécutives.

Directions d'optimisation de la stratégie

  1. Introduire davantage d'indicateurs techniques, tels que le MACD et le RSI, afin d'améliorer la précision du jugement des tendances.
  2. Optimiser la méthode de calcul des niveaux de prise de profit et de stop-loss, par exemple en introduisant des méthodes de stop-loss de suivi et des méthodes de stop-loss de ratio dynamique.
  3. Optimiser les paramètres pour trouver la meilleure combinaison de la période ATR et de plusieurs paramètres afin d'améliorer la stabilité et la rentabilité de la stratégie.
  4. Ajout d'un module de gestion des positions permettant d'ajuster dynamiquement la taille des positions en fonction de la volatilité du marché et du niveau de risque du compte.

Résumé

Cette stratégie utilise les indicateurs ATR et EMA pour ajuster dynamiquement les niveaux de profit et de stop-loss pour s'adapter aux changements de la volatilité du marché, tout en utilisant l'indicateur EMA pour déterminer la direction du trading.


/*backtest
start: 2024-04-27 00:00:00
end: 2024-05-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy(title='UT MB&SS Bot', 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')
stoploss = input(2.0, title='Stop Loss (ATR Multiples)')

xATR = ta.atr(c)
nLoss = a * xATR

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

var xATR_trailing_stop = 0.0
iff_1 = src > nz(xATR_trailing_stop[1], 0) ? src - nLoss : src + nLoss
iff_2 = src < nz(xATR_trailing_stop[1], 0) and src[1] < nz(xATR_trailing_stop[1], 0) ? math.min(nz(xATR_trailing_stop[1]), src + nLoss) : iff_1
xATR_trailing_stop := src > nz(xATR_trailing_stop[1], 0) and src[1] > nz(xATR_trailing_stop[1], 0) ? math.max(nz(xATR_trailing_stop[1]), src - nLoss) : iff_2

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

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

ema = ta.ema(src, 1)
above = ta.crossover(ema, xATR_trailing_stop)
below = ta.crossover(xATR_trailing_stop, ema)

buy = src > xATR_trailing_stop and above
sell = src < xATR_trailing_stop and below

barbuy = src > xATR_trailing_stop
barsell = src < xATR_trailing_stop

plotshape(buy, title='Buy', text='Buy', style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), textcolor=color.new(color.white, 0), size=size.tiny)
plotshape(sell, title='Sell', text='Sell', style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny)

barcolor(barbuy ? color.green : na)
barcolor(barsell ? color.red : na)

stop_level = pos == 1 ? xATR_trailing_stop - stoploss * xATR : xATR_trailing_stop + stoploss * xATR
stop_level := math.max(stop_level, nz(stop_level[1]))

if pos == 1
    strategy.exit('Exit Long', 'UT Long', stop=stop_level)
else if pos == -1
    strategy.exit('Exit Short', 'UT Short', stop=stop_level)





if buy
    strategy.entry("Enter Long", strategy.long)
else if sell
    strategy.entry("Enter Short", strategy.short)

Relationnée

Plus de