Stratégie de croisement à double moyenne mobile

Auteur:ChaoZhang est là., Date: 2023-12-01 18:18:16 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie est basée sur le double système de suivi de tendance de la moyenne mobile croisée. Elle combine la moyenne mobile simple rapide (SMA) et la moyenne mobile pondérée lente (VWMA), et génère des signaux de trading lorsque les deux lignes se croisent.

Lorsque la SMA rapide traverse au-dessus de la VWMA lente, un signal d'achat est généré. Lorsque la SMA rapide traverse au-dessous de la VWMA lente, un signal de vente est généré.

La logique de la stratégie

La logique de base de cette stratégie réside dans le double système de croisement des moyennes mobiles, qui utilise les indicateurs techniques suivants:

  1. Moyenne mobile simple (SMA): Moyenne arithmétique des prix de clôture au cours des n derniers jours, reflétant le prix moyen récent.
  2. Moyenne mobile pondérée (VWMA): Moyenne pondérée des prix de clôture au cours des n derniers jours, attribuant des pondérations plus élevées aux prix les plus récents, répondant plus rapidement aux variations de prix.

La SMA rapide a une période de réflexion plus courte pour réagir rapidement aux changements de prix, tandis que la VWMA lente a une période de réflexion plus longue pour lisser. Lorsque les tendances à court et à long terme s'alignent dans la même direction, le passage rapide de la SMA au-dessus de la VWMA lente génère des signaux d'achat, tandis que le passage en dessous génère des signaux de vente.

La stratégie met également en place des mécanismes de stop loss, qui réduisent les pertes en temps opportun lorsque le prix évolue dans une direction défavorable.

Analyse des avantages

  1. Réagit rapidement aux changements de tendance du marché
  2. Un bon contrôle du prélèvement avec des mécanismes d'arrêt des pertes efficaces
  3. Simple et intuitif, facile à comprendre et à mettre en œuvre
  4. Paramètres optimisables dans différents environnements de marché

Analyse des risques

  1. Les stratégies de double MA ont tendance à donner de faux signaux sur les marchés haussiers
  2. Un réglage inapproprié des paramètres pourrait entraîner des pertes
  3. Les accidents occasionnels peuvent causer des pertes.

Gestion des risques:

  1. Utiliser des indicateurs de filtrage de tendance pour la confirmation
  2. Optimiser les paramètres
  3. Adopter une stratégie de stop loss pour contrôler raisonnablement les pertes uniques

Directions d'optimisation

La stratégie peut être améliorée dans les aspects suivants:

  1. Incorporer d'autres indicateurs comme RSI, Bollinger Bands pour augmenter la précision du signal
  2. Optimiser la longueur des moyennes mobiles à travers les cycles
  3. Combiner les indicateurs de volume, négocier à des points présentant des flux de capitaux importants
  4. Ajustez les paramètres en fonction des résultats des backtests pour trouver l'optimum
  5. Utiliser un stop loss dynamique, en ajustant les stops en fonction de la volatilité du marché

Conclusion

En conclusion, il s'agit d'une stratégie de suivi des tendances très pratique. Elle utilise des croisements intuitifs de moyennes mobiles doubles pour générer des signaux de trading, capturant efficacement les changements de tendance avec la coordination des moyennes mobiles rapides et lentes. Le mécanisme de stop loss assure également un bon contrôle des risques. Avec des indicateurs complémentaires et une optimisation des paramètres, la stratégie peut atteindre des performances de trading encore meilleures.


/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-28 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//strategy(title="Bitlinc Entry v0.1 VWMA / SMA / MRSI SQQQ 94M", overlay=true, initial_capital=10000, currency='USD')

strategy(title="Bitlinc Entry v0.1 VWMA / SMA / MRSI SQQQ 94M", overlay=true)

// Credit goes to this developer for the "Date Range Code"
// https://www.tradingview.com/script/62hUcP6O-How-To-Set-Backtest-Date-Range/

// === GENERAL INPUTS ===
// short ma
maFastSource   = input(defval = close, title = "Simple MA Source")
maFastLength   = input(defval = 6, title = "Simple MA Length", minval = 1)
// long ma
maSlowSource   = input(defval = high, title = "VW MA Source")
maSlowLength   = input(defval = 7, title = "VW MA Period", minval = 1)


// === SERIES SETUP ===
// a couple of ma's...
maFast = sma(maFastSource, maFastLength)
maSlow = vwma(maSlowSource, maSlowLength)


// === PLOTTING ===
fast = plot(maFast, title = "Fast MA", color = color.green, linewidth = 2, style = plot.style_line, transp = 30)
slow = plot(maSlow, title = "Slow MA", color = color.red, linewidth = 2, style = plot.style_line, transp = 30)

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

// === LOGIC ===
enterLong = crossover(maFast, maSlow)
exitLong = crossover(maSlow, maFast)
//enterLong = crossover(maSlow, maFast)
//exitLong = crossover(maFast, maSlow)

// Entry //
strategy.entry(id="Long Entry", long=true, when=window() and enterLong)
strategy.entry(id="Short Entry", long=false, when=window() and exitLong)

// === FILL ====
fill(fast, slow, color = maFast > maSlow ? color.green : color.red)

// === MRSI ===
//
//

basis = rsi(close, input(50))

ma1 = ema(basis, input(2))
ma2 = ema(basis, input(27))

oversold = input(32.6)
overbought = input(63)

//plot(ma1, title="RSI EMA1", color=blue)
//plot(ma2, title="RSI EMA2", color=yellow)

obhist = ma1 >= overbought ? ma1 : overbought
oshist = ma1 <= oversold ? ma1 : oversold

//plot(obhist, title="Overbought Highligth", style=columns, color=color.maroon, histbase=overbought)
//plot(oshist, title="Oversold Highligth", style=columns, color=color.yellow, histbase=oversold)

//i1 = hline(oversold, title="Oversold Level", color=white)
//i2 = hline(overbought, title="Overbought Level", color=white)

//fill(i1, i2, color=olive, transp=100)

// === LOGIC ===
enterLongMrsi = crossover(ma1, oversold)
exitLongMrsi = crossover(ma1, overbought)

// Entry //
strategy.entry(id="MRSI Long Entry", long=true, when=window() and enterLongMrsi)
strategy.entry(id="MRSI Short Entry", long=false, when=window() and exitLongMrsi)

//hline(50, title="50 Level", color=white)

Plus de