La tendance croisée de la moyenne mobile de Joukov à la suite de la stratégie

Auteur:ChaoZhang est là., Date: 2023-12-12 12h24 et 11h
Les étiquettes:

img

Résumé

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 logique de la stratégie

La stratégie repose principalement sur deux indicateurs techniques:

  1. 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.

  2. 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é.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. 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.

  2. Utilisation d'une logique de croisement rapide et lente de l'EMA pour identifier les signaux de négociation.

  3. Sensitivité et fluidité de l'EMA personnalisables grâce à des ajustements de paramètres.

  4. Système de trading automatisé complet construit avec seulement deux indicateurs simples, facilement implémenté dans l'éditeur Pine.

  5. Nécessité minimale d'ajustement des paramètres en cours, approche "Régler et oublier".

Analyse des risques

Certains risques à prendre en compte sont les suivants:

  1. Les croisements EMA peuvent générer de faux signaux, entraînant des pertes inutiles.

  2. Le jugement de la tendance ATR peut également être sujet à des erreurs, manquer des opportunités de négociation.

  3. 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.

Directions d'optimisation

Les principales orientations d'optimisation sont les suivantes:

  1. Ajout d'autres indicateurs pour créer un système combiné et améliorer la précision du signal.

  2. 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.

  3. 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.

Conclusion

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)


Plus de