Stratégie de croisement à double moyenne mobile


Date de création: 2023-12-01 18:18:16 Dernière modification: 2023-12-01 18:18:16
Copier: 2 Nombre de clics: 668
1
Suivre
1619
Abonnés

Stratégie de croisement à double moyenne mobile

Aperçu

Cette stratégie est basée sur une double ligne moyenne croisée. Elle combine une moyenne mobile simple rapide (SMA) et une moyenne mobile pondérée lente (VWMA) pour former des signaux d’achat et de vente.

Un signal de vente est généré lorsque le SMA rapide traverse le VWMA lent vers le haut.

Principe de stratégie

La logique de base de cette stratégie est basée sur le système de double équilibre. Plus précisément, elle utilise simultanément les indicateurs techniques suivants:

  1. Moyenne mobile simple (SMA): moyenne arithmétique des prix de clôture des n derniers jours, qui reflète la moyenne des prix des périodes les plus récentes.
  2. Moyenne mobile pondérée ((VWMA): moyenne pondérée des prix de clôture des n derniers jours, donnant plus de poids aux prix récents et permettant une réponse plus rapide aux variations de prix.

Les paramètres SMA rapides dans les doubles moyennes sont plus courts, ce qui permet de répondre rapidement aux variations de prix; les paramètres VWMA lents sont plus longs et ont un effet d’entraînement. Lorsque les tendances à court et à long terme évoluent dans la même direction, les SMA rapides à la hausse traversent les VWMA lentes pour générer un signal d’achat.

La stratégie met en place un mécanisme de stop-loss. Lorsque le prix se déplace dans une direction défavorable, le stop-loss est effectué à temps pour contrôler le risque.

Analyse des avantages

  1. Répondre rapidement et suivre les changements de tendances du marché
  2. Les retraits sont contrôlés et les mécanismes de stop-loss contrôlent les risques.
  3. Une mise en œuvre simple, intuitive et facile à comprendre
  4. Optimisation en ajustant les paramètres pour s’adapter à différentes conditions de marché

Analyse des risques

  1. La stratégie de double équilibre est susceptible de générer de faux signaux sur les marchés à capitaux multiples.
  2. Il faut choisir les bons paramètres, les mauvais réglages peuvent entraîner des pertes
  3. Il peut arriver que des maux de tête causés par des événements soudains sur le Markt

Les méthodes de contrôle des risques:

  1. Le filtrage des tendances est utilisé pour confirmer
  2. Optimiser les paramètres
  3. Une stratégie de prévention des pertes et un contrôle raisonnable des pertes individuelles

Direction d’optimisation

Cette stratégie peut être optimisée dans les domaines suivants:

  1. Confirmation en combinaison avec d’autres indicateurs techniques, tels que RSI, ligne de Brin, etc., pour améliorer l’exactitude du signal
  2. Optimiser la longueur des paramètres de la ligne moyenne, en ajustant les paramètres en fonction des périodes
  3. Les transactions sont effectuées à des points d’entrée et de sortie d’une grande quantité d’énergie, associées à des indicateurs de volume de transactions.
  4. Adaptation des paramètres en fonction des résultats de la rétro-mesure et sélection des paramètres optimaux
  5. Utilisation de stop loss dynamique pour ajuster les points de stop loss en fonction de la volatilité du marché

Résumer

Cette stratégie est une stratégie de suivi de tendance très pratique dans son ensemble. Elle utilise un simple croisement de doubles moyennes intuitives pour générer des signaux de négociation et capte efficacement les changements de tendance du marché grâce à une combinaison de moyennes rapides et moyennes lentes. Le mécanisme de stop-loss lui permet également de bien contrôler les risques.

Code source de la stratégie
/*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)