Stratégie de croisement des SMA

Auteur:ChaoZhang est là., Date: 2023-11-08 11h36 et 51 min
Les étiquettes:

img

Résumé

Cette stratégie génère des signaux commerciaux basés sur le croisement entre les moyennes mobiles rapides et lentes. Elle produit des signaux d'achat lorsque la moyenne mobile rapide franchit le niveau supérieur de la moyenne mobile lente d'en bas. Elle produit des signaux de vente lorsque la moyenne mobile rapide franchit le niveau inférieur de la moyenne mobile lente d'en haut.

Principaux

Cette stratégie utilise la fonction sma pour calculer les moyennes mobiles rapides et lentes. le fast_SMA est la moyenne mobile rapide avec la longueur de période fast_SMA_input. le slow_SMA est la moyenne mobile lente avec la longueur de période slow_SMA_input.

La stratégie utilise les fonctions de croisement et de croisement pour déterminer le croisement entre les moyennes mobiles rapides et lentes. Lorsque la moyenne mobile rapide dépasse la moyenne mobile lente, la variable LONG est vraie et un signal d'achat est généré. Lorsque la moyenne mobile rapide dépasse la moyenne mobile lente, la variable SHORT est vraie et un signal de vente est généré.

Les avantages

Cette stratégie présente les avantages suivants:

  1. Principe simple, facile à comprendre et à mettre en œuvre.
  2. Des périodes de moyennes mobiles personnalisables, adaptables à différents environnements de marché.
  3. Filtre le bruit du marché et génère des signaux commerciaux relativement fiables.
  4. Il capture à la fois le début et les points tournants des tendances.

Les risques

Cette stratégie comporte également les risques suivants:

  1. Peut générer des signaux de trading excessifs si les paramètres sont incorrects, conduisant à un sur-trading.
  2. Peut produire de nombreux faux signaux sur les marchés latéraux.
  3. Ne peut pas déterminer la durée d'une tendance, peut s'inverser prématurément.

Gestion des risques:

  1. Définir les paramètres de moyenne mobile appropriés pour équilibrer l'effet de filtrage et la sensibilité.
  2. Ajoutez des filtres d'indicateur de tendance pour éviter les faux signaux.
  3. Définir des points de stop-loss pour contrôler les pertes par transaction.

Optimisation

Cette stratégie peut être optimisée par les aspects suivants:

  1. Ajouter des conditions de filtrage sur le volume ou la volatilité lorsque la rupture se produit pour éviter les fausses ruptures.
  2. Incorporer des indicateurs de tendance pour identifier la direction et la force de la tendance.
  3. Ajoutez des modèles d'apprentissage automatique pour optimiser automatiquement les paramètres de la moyenne mobile.
  4. Combiner avec le support/résistance et les bandes de Bollinger pour définir les plages de négociation et améliorer la précision d'entrée.

Résumé

Cette stratégie génère efficacement des signaux de trading en tirant parti des avantages des moyennes mobiles. Bien qu'il y ait des risques, ils peuvent être améliorés par l'optimisation des paramètres, l'ajout de filtres, etc. La stratégie de croisement des moyennes mobiles vaut la peine d'être étudiée et appliquée.


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

//@author Jacques Grobler
//
//                  SIMPLE CROSS OVER BOT
//                  =====================
//
// This is a simple example of how to set up a strategy to go long or short
// If you make any modifications or have any suggestions, let me know
// When using this script, every section marked back testing should be 
// uncommented in order to use for back testing, same goes for using the script portion

///////////////////////////////////////////////////////////////////////////////////////
//// INTRO
//// -----
// BACKTESTING
//@version=4
strategy(title="SimpleCrossOver_Bot_V1_Backtester", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0, commission_type=strategy.commission.percent, commission_value=0.1)

// SIGNALS
//study(title="SimpleCrossOver_Bot_V1_Signals", overlay = true)

///////////////////////////////////////////////////////////////////////////////////////
//// INPUTS
//// ------
// BACKTESTING
dateSart_Year = input(2018, title="Start Year", minval=2000)
dateSart_Month = input(1, title="Start Month", minval=1, maxval=12)
dateSart_Day = input(1, title="Start Day", minval=1, maxval=31)
dateEnd_Year = input(2019, title="End Year", minval=2000)
dateEnd_Month = input(1, title="End Month", minval=1, maxval=12)
dateEnd_Day = input(1, title="End Day", minval=1, maxval=31)

// BACKTESTING AND SIGNALS
fast_SMA_input = input(7, title="SMA Fast")
slow_SMA_input = input(25, title="SMA Slow")

///////////////////////////////////////////////////////////////////////////////////////
//// INDICATORS
//// ----------
fast_SMA = sma(close, fast_SMA_input)
slow_SMA = sma(close, slow_SMA_input)

///////////////////////////////////////////////////////////////////////////////////////
//// STRATEGY
//// --------
LONG = cross(fast_SMA, slow_SMA) and fast_SMA > slow_SMA
stratLONG() => crossover(fast_SMA, slow_SMA)
SHORT = cross(fast_SMA, slow_SMA) and fast_SMA < slow_SMA
stratSHORT() => crossunder(fast_SMA, slow_SMA)

///////////////////////////////////////////////////////////////////////////////////////
//// TRIGGERS
//// --------
// BACKTESTING
testPeriodStart = timestamp(dateSart_Year, dateSart_Month, dateSart_Day, 0, 0)
testPeriodStop = timestamp(dateEnd_Year, dateEnd_Month, dateEnd_Day, 0, 0)
timecondition = true

strategy.entry(id="LONG", long = true, when=timecondition and stratLONG())
strategy.entry(id="SHORT", long = false, when=timecondition and stratSHORT())

// SIGNALS
//alertcondition(LONG, title="LONG")
//alertcondition(SHORT, title="SHORT")

///////////////////////////////////////////////////////////////////////////////////////
//// PLOTS
//// -----
// BACKTESTING AND SIGNALS
plot(fast_SMA, color=green, linewidth=1)
plot(slow_SMA, color=yellow, linewidth=1)
plotshape(LONG, title="LONG", style=shape.triangleup, text="LONG", location=location.belowbar, size=size.small, color=green)
plotshape(SHORT, title="SHORT", style=shape.triangledown, text="SHORT", location=location.abovebar, size=size.small, color=red)

Plus de