Stratégie de négociation croisée SMA

Auteur:ChaoZhang est là., Date: 2023-12-25 16h03:48 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie est conçue sur la base des principes de la croix d'or et de la croix morte de la moyenne mobile simple (SMA). La stratégie utilise deux SMA, à savoir la SMA rapide et la SMA lente. Lorsque la SMA rapide traverse au-dessus de la SMA lente depuis le bas, un signal d'achat est généré. Lorsque la SMA rapide traverse au-dessous de la SMA lente depuis le haut, un signal de vente est généré.

La logique de la stratégie

La stratégie repose principalement sur deux lignes d'indicateur SMA. La SMA rapide a une période plus courte et peut capturer les changements de prix plus rapidement. La SMA lente a une période plus longue et peut filtrer un peu de bruit. Lorsque la SMA rapide traverse au-dessus de la SMA lente depuis le bas, elle indique que la vitesse de hausse à court terme est plus rapide et génère un signal d'achat. Lorsque la SMA rapide traverse au-dessous de la SMA lente depuis le haut, elle indique que la vitesse de baisse à court terme est plus rapide et génère un signal de vente.

En définissant différents paramètres de période SMA, les paramètres de stratégie peuvent être ajustés dans une certaine mesure pour s'adapter à différents environnements de marché.

Analyse des avantages

  • Utilise l'indicateur SMA bien connu avec une logique simple
  • Paramètres de période SMA personnalisables avec une forte adaptabilité
  • L'intervalle de temps de backtesting peut être réglé pour l'optimisation des paramètres
  • L'utilisation du crossover pour générer des signaux a un certain effet de filtrage et peut réduire les transactions erronées

Analyse des risques

  • La SMA elle-même a un effet de retard et peut manquer des opportunités à court terme
  • L'impossibilité de déterminer l'élan de la tendance, l'efficacité de la génération de signal peut être instable
  • Les paramètres de la période SMA incorrects augmenteront les faux signaux

Pour lutter contre les risques susmentionnés, les mesures suivantes peuvent être prises:

  • Réduire de manière appropriée le cycle SMA pour améliorer la sensibilité
  • Incorporer d'autres indicateurs pour déterminer la dynamique de la tendance
  • Trouvez la combinaison optimale de paramètres à l'aide des outils d'optimisation des paramètres

Directions d'optimisation

  • Ajouter une stratégie de stop loss pour contrôler une seule perte
  • Ajouter un mécanisme de gestion de position
  • Combiner avec d'autres indicateurs techniques
  • Ajouter des algorithmes d'apprentissage automatique pour obtenir une optimisation dynamique des paramètres

Résumé

Il s'agit d'une stratégie de suivi de tendance typique. En appliquant le principe simple de double croisement de la moyenne mobile, il peut obtenir de bons résultats de suivi lorsque les paramètres sont définis de manière appropriée. Cependant, la SMA elle-même a un certain effet de retard et ne peut pas déterminer la dynamique de la tendance. Par conséquent, dans l'application réelle, d'autres outils auxiliaires doivent être introduits pour former une combinaison d'indicateurs et complétés par des moyens automatisés d'optimisation des paramètres et de contrôle des risques, afin de rendre la stratégie régulièrement rentable.


/*backtest
start: 2023-12-17 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//strategy(title="MA Cross Entry & Exit w/Date Range", overlay=true, initial_capital=10000, currency='USD')

strategy(title="SMA Cross Entry & Exit Strategy", 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 = open, title = "Fast MA Source")
maFastLength   = input(defval = 36, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource   = input(defval = open , title = "Slow MA Source")
maSlowLength   = input(defval = 46, title = "Slow MA Period", minval = 1)

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


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

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 9, 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 ? green : red)

Plus de