Déviation de la moyenne mobile double combinée à la tendance de l'indicateur ATR

Auteur:ChaoZhang est là., Date: 2023-11-16 11h25 et 23h
Les étiquettes:

img

Résumé

Cette stratégie utilise les signaux de croix dorée et de croix morte formés par des moyennes mobiles doubles de l'EMA, combinés à l'indicateur ATR pour juger de la volatilité du marché, pour mettre en œuvre une stratégie de tendance à faible achat-vente élevée. Lorsque la ligne rapide traverse au-dessus de la ligne lente et que l'indicateur ATR est inférieur à la journée précédente, il est considéré comme un signal haussier pour aller long. Lorsque la ligne rapide traverse au-dessous de la ligne lente et que l'indicateur ATR est supérieur à la journée précédente, il est considéré comme un signal baissier pour aller court.

La logique de la stratégie

  1. Utilisez des moyennes mobiles doubles de longueur 20 et 55. Lorsque la ligne rapide traverse au-dessus de la ligne lente et génère une croix dorée, elle est considérée comme un signal haussier. Lorsque la ligne rapide traverse au-dessous de la ligne lente et génère une croix morte, elle est considérée comme un signal baissier.

  2. Utilisez un indicateur ATR de longueur 14. L'indicateur ATR reflète la volatilité et le niveau de risque du marché. Lorsque l'ATR est inférieur à celui du jour précédent, il indique que la volatilité du marché s'affaiblit et qu'il est approprié d'aller long. Lorsque l'ATR est supérieur à celui du jour précédent, il indique que la volatilité du marché augmente et qu'il est approprié d'aller court.

  3. Ne passez long que lorsque la ligne rapide dorée traverse la ligne lente et que l'ATR est inférieur à la journée précédente. Ne passez court que lorsque la ligne rapide morte traverse la ligne lente et que l'ATR est supérieur à la journée précédente. Cela évite d'intervenir lorsque la volatilité du marché est élevée.

  4. L'indicateur ATR est également utilisé pour définir les niveaux de stop loss et de take profit. Le stop loss est fixé au prix actuel moins ATR multiplié par le multiplicateur de stop loss. Le profit est fixé au prix actuel plus ATR multiplié par le multiplicateur de take profit.

  5. Le multiplicateur de stop loss par défaut est 3xATR et le multiplicateur de take profit par défaut est 3xATR. Cela permet au stop loss et au take profit de suivre dynamiquement la volatilité du marché.

Les avantages de la stratégie

  1. L'utilisation d'un système à moyenne mobile double permet une confirmation plus forte de l'état long/short.

  2. L'introduction de l'indicateur ATR permet à la stratégie de s'engager uniquement lorsque la volatilité est faible.

  3. L'ATR dynamique stop loss/take profit permet de définir les stops et les cibles en fonction du niveau de volatilité du marché, ce qui évite que les stops ne soient trop proches ou que les cibles ne soient trop basses.

  4. Il est possible de définir un croisement des moyennes mobiles comme mécanisme de sortie supplémentaire, ce qui permet d'optimiser davantage la rentabilité du système.

  5. Les niveaux de stop loss et de take profit dynamiques basés sur l'ATR s'adaptent mieux à la logique de trading de tendance.

Risques liés à la stratégie

  1. Les moyennes mobiles doubles ont un certain retard dans les signaux.

  2. Lorsque la volatilité est élevée, l'ATR augmente et peut manquer les opportunités d'entrée.

  3. Pour de longues périodes de détention, le stop loss peut être trop proche.

  4. Les moyennes mobiles se comportent mal sur les marchés à courants instables, mais d'autres indicateurs sont nécessaires pour confirmer.

  5. Les paramètres ATR doivent être ajustés pour différents produits et périodes de temps, car les paramètres incorrects auront un impact négatif sur les performances.

Les domaines d'amélioration

  1. Testez différentes combinaisons de moyennes mobiles de longueur pour trouver des paramètres correspondant aux caractéristiques de tendance du produit.

  2. Incorporer d'autres indicateurs tels que le MACD, le KD pour confirmer les signaux croisés des moyennes mobiles et améliorer la décision de sécurité.

  3. Optimiser les paramètres de l'ATR par des tests antérieurs afin de mieux faire correspondre les caractéristiques de volatilité du produit.

  4. Faire régler le facteur de multiplicateur ATR afin d'ajuster dynamiquement le stop loss/take profit en fonction de la force de la tendance.

  5. Incorporer un indicateur de force de tendance pour réduire les exigences de stop loss dans les tendances faibles et augmenter le bénéfice dans les tendances fortes.

Résumé

Cette stratégie intègre le jugement de la tendance des EMA doubles et le contrôle des risques de l'indicateur de volatilité ATR pour former un système de suivi de tendance relativement complet. Le focus pour l'optimisation est d'ajuster les paramètres de la moyenne mobile et de l'ATR pour correspondre aux caractéristiques du produit, et de concevoir des mécanismes dynamiques de stop loss/take profit pour suivre les changements de la force de la tendance.


/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// **********************************************
// PtahX EMA/ATR Strategy Public Release
// EMA Strategy with ATR & "Fear Factor" built in 
// written by PtahX October 2019
// * modifications welcome 
// * please let me know if you improve it so I can continue to learn :) 
// * use at your own risk - I'm a new programmer and still learning
// * Best of luck on your trades!!

// Take Profit (TP) option based on ATR or MA Crossover 
//***********************************************

strategy(title="PtahX EMA/ATR Strategy", overlay=true, pyramiding=1, calc_on_every_tick=true, default_qty_value=1, initial_capital=10000, slippage=2)

//***************************** 
// Global Inputs
//***************************** 

fastMA = input(title="Fast Moving Average", defval=20, step=1)
slowMA = input(title="Slow Moving Average", defval=55, step=1)
source = input(close, title="Source")
atrLength = input(title="ATR Length", defval=14, minval=7, step=1)
slMultiplier = input(title="Stop Loss Multiple", type=input.float, defval=3, minval=1, step=0.2)
tpMultiplier = input(title= "Take Profit Multiple", type=input.float, defval=3, minval=1, step=0.2)
maPlot = input(true, title="Plot EMA?")
maCrossoverExit =  input(false, title="Exit with Slow MA Crossover?")
atrExit = input(true, title="Exit with ATR?")
//***********************************
// ATR
//***********************************
atr = atr(atrLength)


//***********************************
// Volatility Filter
//**********************************
// During uptrends the ATR indicator tends to post lower volatility. 
// During downtrends, the ATR indicator tends to post higher volatility

volatilityBullish = atr < atr[1] 
volatilityBearish = atr > atr[1]


//***********************************
// Moving Averages
//***********************************
    
// Double Line Plot Code (used for Entries & Exits not plotted by default)
fast = ema(source, fastMA)
slow = ema(source, slowMA)
maLong = crossover(fast, slow)
maShort = crossunder(fast, slow) 

// Single Line Plot Code
bullish = slow > slow[1]
bearish = slow < slow[1]
barColor = bullish ? color.green : bearish ? color.red : color.blue


//***************************** 
// Entries
//***************************** 

entryLong = maLong and volatilityBullish
entryShort = maShort and volatilityBearish

if entryLong
    sLoss = source - atr * slMultiplier
    strategy.entry("Long", strategy.long, qty=10)
    strategy.exit("Long Exit", "Long", stop=sLoss)


if entryShort
    sLoss = source + atr * slMultiplier
    tProfit = close > slowMA
    strategy.entry("Short", strategy.short, qty=10)
    strategy.exit("Short Exit", "Short", stop=sLoss)


//***************************** 
// Exits
//*****************************

exitLong = 0
exitShort = 0

if maCrossoverExit
    exitLong = maShort
    exitShort = maLong
    strategy.exit("Long Exit", "Long", when = exitLong)
    strategy.exit("Short Exit", "Short", when = exitShort)

if atrExit
    exitLong = source + atr * tpMultiplier
    exitShort = source - atr * tpMultiplier
    strategy.exit("Long Exit", "Long", limit = exitLong)
    strategy.exit("Short Exit", "Short", limit = exitShort)


//******************************
// ATR Based Exit/ Stop Plotting 
//******************************

// Stop Loss Calculations
longStopLoss = source - atr(atrLength) * slMultiplier
shortStopLoss = source + atr(atrLength) * slMultiplier

longTakeProfit = source - atr(atrLength) * slMultiplier
shortTakeProfit = source + atr(atrLength) * slMultiplier
  

//*********************************
//Chart Plotting
//*********************************

//ATR Based Stop Losses
plot(shortStopLoss, color=color.fuchsia, offset=0, transp=0, show_last=5, linewidth=2, style=plot.style_stepline, title="Short Stop Loss")
plot(longStopLoss, color=color.fuchsia, offset=0, transp=0, show_last=5, linewidth=2, style=plot.style_stepline, title="Long Stop Loss")


// Single Slow EMA Option
plot(slow and maPlot ? slow : na, title="EMA", color=barColor, linewidth=3)






Plus de