Cette stratégie utilise des croisements de moyenne mobile et l'indicateur ATR pour mettre en œuvre une tendance automatisée après le trading. Elle va long lorsque l'EMA rapide traverse au-dessus de l'EMA lente, et court lorsque l'EMA rapide traverse au-dessous de l'EMA lente.
La stratégie repose principalement sur deux indicateurs techniques:
Les lignes EMA: Il utilise deux lignes EMA avec des paramètres différents, rapide et lent. Lorsque l'EMA rapide traverse au-dessus de l'EMA lent, il est considéré comme un signal long. Lorsque l'EMA rapide traverse au-dessous de l'EMA lent, il est considéré comme un signal court.
Indicateur ATR: L'indicateur ATR mesure l'ampleur et la force des fluctuations de prix pour juger de la tendance du mouvement actuel.
En combinant les croisements EMA pour identifier les opportunités de négociation et le filtre ATR pour éviter les régimes à faible tendance, la stratégie vise à éviter d'être piétinée pendant les bouleversements du marché.
Les avantages de cette stratégie sont les suivants:
Les transactions ne sont effectuées que lorsque l'ATR détecte une tendance, ce qui permet d'éviter d'être piégé lors de régimes non directionnels.
Utilisation d'une logique de croisement rapide et lente de l'EMA pour identifier les signaux de négociation.
Sensitivité et fluidité de l'EMA personnalisables grâce à des ajustements de paramètres.
Système de trading automatisé complet construit avec seulement deux indicateurs simples, facilement implémenté dans l'éditeur Pine.
Nécessité minimale d'ajustement des paramètres en cours, approche "Régler et oublier".
Certains risques à prendre en compte sont les suivants:
Les croisements EMA peuvent générer de faux signaux, entraînant des pertes inutiles.
Le jugement de la tendance ATR peut également être sujet à des erreurs, manquer des opportunités de négociation.
Aucune prise en compte des fondamentaux des délais plus longs. Les événements d'actualité majeurs peuvent déclencher des renversements que les croisements rapides de l'EMA peuvent manquer, nécessitant une intervention manuelle.
Ces risques peuvent être réduits par des optimisations.
Les principales orientations d'optimisation sont les suivantes:
Ajout d'autres indicateurs pour créer un système combiné et améliorer la précision du signal.
Sélection des paramètres EMA et ATR les plus adaptés au marché particulier en fonction du symbole et du délai négociés.
Mise en œuvre de l'optimisation dynamique des paramètres grâce à l'apprentissage automatique pour ajuster les indicateurs en fonction des conditions actuelles du marché au lieu d'utiliser des valeurs fixes statiques.
Dans l'ensemble, il s'agit d'une stratégie de suivi de tendance très pratique. Avec une simple combinaison de deux indicateurs, il construit un système de trading relativement complet. Grâce à des ajustements de paramètres, il peut être adapté aux traders ayant des préférences et des styles différents. En même temps, une expansion et une optimisation supplémentaires peuvent améliorer encore les performances de la stratégie.
/*backtest start: 2022-12-05 00:00:00 end: 2023-12-11 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This strategy has been created for GMT trade 4h by Zhukov //@version=5 strategy('ZhukovTrade', overlay=true, calc_on_every_tick=true, currency=currency.USD) // INPUT: // Options to enter fast and slow Exponential Moving Average (EMA) values emaFast = input.int(title='Fast EMA', defval=100, minval=1, maxval=9999) emaSlow = input.int(title='Slow EMA', defval=200, minval=1, maxval=9999) // Option to select trade directions tradeDirection = input.string(title='Trade Direction', options=['Long', 'Short', 'Both'], defval='Both') // Options that configure the backtest date range startDate = input(title='Start Date', defval=timestamp('01 Jan 2023 00:00')) endDate = input(title='End Date', defval=timestamp('31 Dec 2023 23:59')) // CALCULATIONS: // Use the built-in function to calculate two EMA lines fastEMA = ta.ema(close, emaFast) slowEMA = ta.ema(close, emaSlow) emapos = ta.ema(close,200) // PLOT: // Draw the EMA lines on the chart plot(series=fastEMA, color=color.new(color.orange, 0), linewidth=2) plot(series=slowEMA, color=color.new(color.blue, 0), linewidth=2) plot(series=emapos, color=color.new(color.red, 0), linewidth=2) // CONDITIONS: // Check if the close time of the current bar falls inside the date range inDateRange = true // Translate input into trading conditions longOK = tradeDirection == 'Long' or tradeDirection == 'Both' shortOK = tradeDirection == 'Short' or tradeDirection == 'Both' // Decide if we should go long or short using the built-in functions longCondition = ta.crossover(fastEMA, slowEMA) shortCondition = ta.crossunder(fastEMA, slowEMA) // ORDERS: // Set take profit and stop loss percentages take_profit_percent = input(0, title="Take Profit Percent") stop_loss_percent = input(0, title="Stop Loss Percent") // Submit entry (or reverse) orders atrPeriod = input(12, "ATR Length") factor = input.float(3.0, "Factor", step = 0.01) [supertrend, direction] = ta.supertrend(factor, atrPeriod) bodyMiddle = plot((open + close) / 2, display=display.none) upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color = color.green, style=plot.style_linebr) downTrend = plot(direction < 0? na : supertrend, "Down Trend", color = color.red, style=plot.style_linebr) fill(bodyMiddle, upTrend, color.new(color.green, 90), fillgaps=false) fill(bodyMiddle, downTrend, color.new(color.red, 90), fillgaps=false) if longCondition and inDateRange if longOK and direction<0 strategy.entry(id='long', direction=strategy.long, alert_message = "LONG") if shortCondition and inDateRange if shortOK and direction>0 strategy.entry(id='short', direction=strategy.short, alert_message = "SHORT") // Submit exit orders in the cases where we trade only long or only short if strategy.position_size > 0 and take_profit_percent strategy.exit(id='tp long',from_entry ="long",profit = take_profit_percent) if strategy.position_size > 0 and stop_loss_percent strategy.exit(id='sl long',from_entry="long",loss=stop_loss_percent) if strategy.position_size < 0 and stop_loss_percent strategy.exit(id='sl short',from_entry="short",loss=stop_loss_percent) if strategy.position_size < 0 and take_profit_percent strategy.exit(id='tp short',from_entry="short",profit = take_profit_percent)