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.
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.
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.
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.
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.
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é.
L'utilisation d'un système à moyenne mobile double permet une confirmation plus forte de l'état long/short.
L'introduction de l'indicateur ATR permet à la stratégie de s'engager uniquement lorsque la volatilité est faible.
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.
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.
Les niveaux de stop loss et de take profit dynamiques basés sur l'ATR s'adaptent mieux à la logique de trading de tendance.
Les moyennes mobiles doubles ont un certain retard dans les signaux.
Lorsque la volatilité est élevée, l'ATR augmente et peut manquer les opportunités d'entrée.
Pour de longues périodes de détention, le stop loss peut être trop proche.
Les moyennes mobiles se comportent mal sur les marchés à courants instables, mais d'autres indicateurs sont nécessaires pour confirmer.
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.
Testez différentes combinaisons de moyennes mobiles de longueur pour trouver des paramètres correspondant aux caractéristiques de tendance du produit.
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é.
Optimiser les paramètres de l'ATR par des tests antérieurs afin de mieux faire correspondre les caractéristiques de volatilité du produit.
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.
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.
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)