Stratégie de croisement SMA


Date de création: 2023-11-08 11:36:51 Dernière modification: 2023-11-08 11:36:51
Copier: 1 Nombre de clics: 646
1
Suivre
1617
Abonnés

Stratégie de croisement SMA

Aperçu

La stratégie est basée sur le principe de la croisée des moyennes mobiles rapides et des moyennes mobiles lentes pour générer un signal de transaction. Un signal d’achat est généré lorsque la moyenne mobile rapide traverse la moyenne mobile lente par le bas; un signal de vente est généré lorsque la moyenne mobile rapide traverse la moyenne mobile lente par le haut.

Le principe

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

La stratégie utilise les fonctions de croisement et de croisement pour juger de l’intersection des moyennes mobiles rapides et des moyennes mobiles lentes. Lorsque la variable LONG est traversée par une moyenne mobile lente sur une moyenne mobile rapide, elle est vraie, générant un signal d’achat; lorsque la variable SHORT est traversée par une moyenne mobile lente sous une moyenne mobile rapide, elle est vraie, générant un signal de vente.

Analyse des avantages

Cette stratégie présente les avantages suivants:

  1. Les principes de la stratégie sont simples, faciles à comprendre et à mettre en œuvre.
  2. La périodicité de la moyenne mobile est personnalisable et s’applique à différentes conditions de marché.
  3. Il permet de filtrer une partie du bruit du marché et de générer des signaux de négociation plus fiables.
  4. Il est possible de capturer à la fois le démarrage et le retournement d’une tendance.

Analyse des risques

La stratégie présente également les risques suivants:

  1. Si les paramètres ne sont pas correctement configurés, il peut y avoir trop de signaux de transaction, ce qui entraîne des transactions fréquentes.
  2. Il est possible que de nombreux signaux inefficaces soient générés sur le marché horizontal.
  3. Il est impossible de savoir combien de temps la tendance va durer, et il est possible qu’elle se retourne trop tôt.

Les méthodes de contrôle des risques:

  1. Les paramètres de la moyenne mobile sont raisonnablement réglés pour équilibrer les effets de filtrage et la sensibilité.
  2. Le filtrage des indicateurs de tendance combiné avec les signaux inefficaces.
  3. Il est possible de mettre en place des points d’arrêt et de contrôler les pertes individuelles.

Direction d’optimisation

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

  1. Augmentation des conditions de filtrage pour vérifier les indicateurs de transaction ou de volatilité lors de la rupture des moyennes mobiles afin d’éviter les fausses ruptures.
  2. L’indicateur de tendance est utilisé pour identifier la direction et la force d’une tendance.
  3. Ajout de modèles d’apprentissage automatique pour optimiser automatiquement les paramètres de la moyenne mobile.
  4. La cartographie des zones de négociation, combinée à des indicateurs techniques tels que les points de résistance de support, les bandes de Brin, améliore la précision d’entrée.

Résumer

Cette stratégie utilise les avantages des moyennes mobiles pour générer des signaux de trading de manière simple et efficace. Bien que certains risques existent, elle peut être améliorée par l’optimisation des paramètres, l’ajout de conditions de filtrage, etc. La stratégie de croisement des moyennes mobiles mérite une étude et une application supplémentaires.

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