Stratégie de croisement de la moyenne mobile à double dynamique

Auteur:ChaoZhang est là., Date: 2023-10-20 16:44:30 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie utilise des croisements de moyennes mobiles pour déterminer la direction de la dynamique des prix, complétés par des croisements dorés/mortels pour juger de la tendance globale, afin de mettre en œuvre la tendance suivante.

La logique de la stratégie

La stratégie utilise des croisements EMA et SMA pour déterminer la direction de la dynamique des prix. L'EMA réagit plus rapidement tandis que la SMA réagit plus régulièrement. Lorsque l'EMA traverse au-dessus de la SMA, on juge que la dynamique haussière est forte, allez long. Lorsque l'EMA traverse au-dessous de la SMA, on juge que la dynamique baissière est forte, allez court.

En outre, la stratégie utilise également le croisement de la SMA à période rapide et de la SMA à période lente pour déterminer la direction générale de la tendance. Lorsque la SMA rapide traverse au-dessus de la SMA lente, c'est une croix dorée, indiquant que le marché est en tendance haussière à long terme. Lorsque la SMA rapide traverse au-dessous de la SMA lente, c'est une croix de mort, indiquant que le marché est en tendance baissière à long terme.

La stratégie identifie l'opportunité longue lorsque l'EMA traverse au-dessus de la SMA. S'il s'agit d'une croix dorée à ce moment-là, cela signifie que le long est soutenu à la fois par l'élan à court terme et la tendance à long terme, ce qui est un meilleur temps long.

Analyse des avantages

  • Utiliser les croisements MA pour juger de l'élan et de la direction des prix
  • Considérez à la fois la dynamique à court terme et la tendance à long terme
  • La confirmation de deux indicateurs améliore la fiabilité
  • Adaptable à différentes périodes en ajustant les paramètres de l'AM
  • Personnalisable pour afficher ou masquer des signaux commerciaux spécifiques

Analyse des risques

  • Les croisements MA présentent des retards, peuvent manquer les meilleurs points d'entrée/sortie
  • La SMA à période fixe ne peut pas refléter les variations de prix en temps réel
  • Des croisements erronés peuvent se produire entre les AM à longue/courte durée
  • La détention à long terme peut augmenter le risque de capital

Les risques peuvent être réduits en combinant d'autres indicateurs pour la confirmation du signal, en optimisant les périodes de MA ou en définissant un stop loss.

Directions d'optimisation

  • Ajouter d'autres filtres comme le volume, les bandes de Bollinger, etc.
  • Ajouter une stratégie de stop loss
  • Optimiser les périodes de mise en marché
  • Optimiser la gestion du capital
  • Considérez le dimensionnement dynamique de la position

Conclusion

Dans l'ensemble, il s'agit d'une stratégie de suivi de tendance relativement stable et fiable. Elle prend en compte à la fois la dynamique des prix à court terme et la direction de la tendance à long terme, générant des signaux de trading via des croisements MA. Par rapport aux stratégies de suivi de tendance simples, elle a une fiabilité plus élevée en combinant deux indicateurs pour la confirmation. Mais en tant que stratégie de suivi de tendance, son optimisation des paramètres et son contrôle des risques sont très importants. Elle nécessite des tests et des ajustements répétés pour vraiment réaliser son potentiel. Avec des optimisations et des améliorations continues, cette stratégie peut devenir un composant précieux d'un portefeuille d'investissement quantitatif à long terme.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Cryptoluc1d

//@version=4
strategy("Equal-Length EMA/SMA Crossover Strategy", initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=25, commission_type=strategy.commission.percent, commission_value=0.2, overlay=true)

// Create inputs

mom_length = input(title="Momentum Length (EMA=SMA)", defval=50)
bias_length_fast  = input(title="Golden Cross Length (Fast)", defval=50)
bias_length_slow  = input(title="Golden Cross Length (Slow)", defval=100)

// Define MAs

ema = ema(close, mom_length) // EMA/SMA crossover of the same period for detecting trend acceleration/deceleration
sma = sma(close, mom_length)
bias_fast = sma(close, bias_length_fast) // golden/death cross for overall trend bias
bias_slow = sma(close, bias_length_slow)

// Define signal conditions

buy_trend = crossover(ema, sma) and bias_fast >= bias_slow // buy when EMA cross above SMA. if this happens during a bullish golden cross, buying is in confluence with the overall trend (bias).
buy_risky = crossover(ema, sma) and bias_fast < bias_slow // buy when EMA cross above SMA. if this happens during a bearish death cross, buying is early, more risky, and not in confluence with the overall trend (bias).
buy_late = crossover(sma, bias_slow) and ema > sma // the SMA crossing the Slow_SMA gives further confirmation of bullish trend, but signal comes later.
sell = crossunder(ema, sma) // sell when EMA cross under SMA.

// Enable option to hide signals, then plot signals

show_signal = input(title="Show Signals", defval=true)

plotshape(show_signal ? buy_trend : na, title='Trend Buy', style=shape.triangleup, location=location.belowbar, color=color.green, text='TREND BUY')
plotshape(show_signal ? buy_risky : na, title='Risky Buy', style=shape.triangleup, location=location.belowbar, color=color.olive, text='RISKY BUY')
plotshape(show_signal ? buy_late : na, title='Late Buy', style=shape.triangleup, location=location.belowbar, color=color.lime, text='LATE BUY')
plotshape(show_signal ? sell : na, title='Sell', style=shape.triangledown, location=location.abovebar, color=color.red, text='SELL')

// Define entry and exit conditions

longCondition = ema > sma and bias_fast >= bias_slow // LONG when EMA above SMA, and overall trend bias is bullish
if (longCondition)
    strategy.entry("BUY TREND", strategy.long)
exitLong = crossunder(ema, sma) // close LONG when EMA cross under SMA
strategy.close("BUY TREND", when=exitLong)

// // short conditions. turned off because up only.
// shortCondition = ema < sma and bias_fast <= bias_slow // SHORT when EMA under SMA, and overall trend bias is bearish
// if (shortCondition)
//     strategy.entry("SELL TREND", strategy.short)
// exitShort = crossover(ema, sma) // close SHORT when EMA cross over SMA
// strategy.close("SELL TREND", when=exitShort)

// Enable option to show MAs, then plot MAs

show_ma = input(title="Show MAs", defval=false)

plot(show_ma ? ema : na, title="Momentum EMA", color=color.green, linewidth=1)
plot(show_ma ? sma : na, title="Momentum SMA", color=color.yellow, linewidth=1)
plot(show_ma ? bias_fast : na, title="Golden Cross SMA (Fast)", color=color.orange, linewidth=2)
plot(show_ma ? bias_slow : na, title="Golden Cross SMA (Slow)", color=color.red, linewidth=2)

Plus de