Stratégie de croisement des moyennes mobiles SMA

Auteur:ChaoZhang est là., Date: 2024-03-28 17h50
Les étiquettes:

img

Résumé

Cette stratégie est une stratégie de croisement de moyenne mobile SMA simple. Elle utilise deux moyennes mobiles simples (MMA) de longueurs différentes. Lorsque le MA rapide traverse au-dessus du MA lent, il entre dans une position longue. Lorsque le MA rapide traverse au-dessous du MA lent, il ferme la position longue. Les longueurs des deux MA peuvent être personnalisées, ainsi que les dates de début et de fin pour le backtesting.

L'idée principale de cette stratégie est d'utiliser les caractéristiques de tendance des moyennes mobiles et les caractéristiques de signal des croisements MA pour le trading. Lorsque le MA rapide est au-dessus du MA lent, il indique une tendance à la hausse et une position longue doit être détenue. Lorsque le MA rapide est en dessous du MA lent, il indique une tendance à la baisse et aucune position ne doit être détenue.

Principe de stratégie

  1. Calculer deux SMA avec des longueurs différentes, qui peuvent être personnalisées.
  2. Vérifiez si l'heure actuelle se trouve dans la fenêtre de backtesting.
  3. Si le MA rapide dépasse le MA lent, entrez dans une position longue.
  4. Si le MA rapide passe sous le MA lent, fermer toutes les positions longues.
  5. Dans d'autres cas, restez à plat et ne faites rien.

Analyse des avantages

  1. Simple et facile à comprendre, avec une logique claire, adapté aux débutants pour apprendre et utiliser.
  2. La moyenne mobile est un indicateur technique largement utilisé, avec des caractéristiques de tendance évidentes, qui peuvent bien refléter l'évolution actuelle du marché.
  3. Le croisement MA est un signal classique de suivi de tendance qui peut rapidement capturer les changements de tendance.
  4. Les longueurs des MA et la fenêtre de backtesting peuvent être personnalisées, ce qui offre une bonne souplesse.
  5. Convient pour les instruments et les délais présentant des caractéristiques de tendance fortes.

Analyse des risques

  1. Lorsque le marché fluctue fortement et que la tendance s'inverse fréquemment, il peut y avoir des signaux croisés fréquents, ce qui entraîne une négociation excessive et des coûts de transaction plus élevés.
  2. Cette stratégie ne peut capter que les tendances à la hausse, et est impuissante sur les marchés à fourchette et les tendances à la baisse.
  3. La sélection des paramètres MA doit être optimisée pour différents instruments et délais.
  4. Cette stratégie ne comporte pas de mesures de stop-loss et peut présenter des risques de retrait plus importants lorsque le marché fluctue de manière spectaculaire.

Directions d'optimisation

  1. En outre, il convient d'éviter que les opérations de change ne soient considérées comme des opérations de change, car elles ne peuvent être considérées comme des opérations de change.
  2. Considérez l'ajout de certaines conditions de filtrage, telles que le volume des transactions et la volatilité, pour filtrer certains faux signaux.
  3. Considérez l'optimisation des paramètres, comme l'utilisation d'algorithmes génétiques ou d'autres algorithmes intelligents pour trouver la combinaison optimale de paramètres.
  4. Considérez la possibilité de combiner d'autres indicateurs techniques ou signaux de négociation avec le croisement MA, tels que le MACD et le RSI, afin d'améliorer la fiabilité et l'efficacité de la stratégie.

Conclusion

La stratégie de croisement des moyennes mobiles SMA est une stratégie de suivi des tendances simple, facile à comprendre, classique et pratique qui convient aux débutants pour apprendre et utiliser. Elle utilise les caractéristiques de tendance des moyennes mobiles et les caractéristiques de signal des croisements MA pour capturer rapidement les changements dans les tendances du marché. Cependant, cette stratégie présente également certaines limitations et risques, tels que le retard, le trading fréquent et l'absence de stop-loss. Par conséquent, dans les applications pratiques, elle doit être optimisée et améliorée de manière appropriée en fonction de conditions spécifiques pour améliorer la stabilité et la rentabilité de la stratégie.


/*backtest
start: 2023-03-22 00:00:00
end: 2024-03-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © j0secyn

//@version=5
strategy("MA Cross", overlay=true, margin_long=100, margin_short=100, default_qty_value=100, default_qty_type=strategy.percent_of_equity, initial_capital=10000)

// === INPUT BACKTEST RANGE ===
fromDay   = input.int(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input.int(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear  = input.int(defval = 2018,title = "From Year", minval = 1970)
thruDay   = input.int(defval = 30, title = "Thru Day", minval = 1, maxval = 31)
thruMonth = input.int(defval = 9, title = "Thru Month", minval = 1, maxval = 12)
thruYear  = input.int(defval = 2024, title = "Thru Year", minval = 1970)

slow_ma_length = input.int(defval = 100, title = "Slow MA lenght")
fast_ma_length = input.int(defval = 30, title = "Fast MA lenght")

// === FUNCTION EXAMPLE ===
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)            // backtest start  window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)            // backtest finish window
window()  => true

// === LOGIC ===
crossOv = ta.crossover(ta.sma(close, fast_ma_length), ta.sma(close, slow_ma_length))
crossUn = ta.crossunder(ta.sma(close, fast_ma_length), ta.sma(close, slow_ma_length))

// === EXECUTION ===
// strategy.entry("L", strategy.long, when = window() and crossOv)        // enter long when "within window of time" AND crossover
// strategy.close("L", when = window() and crossUn)                       // exits long when "within window of time" AND crossunder         
strategy.entry("L", strategy.long, when = window() and crossOv)        // enter long when "within window of time" AND crossover
strategy.close("L", when = window() and crossUn)                       // exits long when "within window of time" AND crossunder         

Plus de