Système de croisement de moyenne mobile


Date de création: 2024-01-03 16:22:18 Dernière modification: 2024-01-03 16:22:18
Copier: 1 Nombre de clics: 574
1
Suivre
1621
Abonnés

Système de croisement de moyenne mobile

Aperçu

Cette stratégie est une stratégie de trading en multi-points, basée sur des moyennes mobiles, qui forme 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 et par le bas.

Principe de stratégie

La stratégie utilise deux moyennes mobiles, la moyenne mobile simple à 20 jours et la moyenne mobile simple à 30 jours. Un signal d’achat est généré lorsque la moyenne mobile à 20 jours traverse la moyenne mobile à 30 jours par le bas; un signal de vente est généré lorsque la moyenne mobile à 20 jours traverse la moyenne mobile à 30 jours par le haut.

La moyenne mobile est elle-même un indicateur de tendance, capable de décrire efficacement la direction des tendances du marché. Le principe de la croisée permet à la stratégie de capturer en temps opportun les points de basculement de la tendance et de former un signal de négociation. Les deux longueurs de cycle des 20e et 30e jours sont bien réglées, reflétant à la fois la tendance du marché et ne sont pas trop sensibles pour générer de faux signaux.

Analyse des avantages

Les principaux avantages de cette stratégie sont les suivants:

  1. La logique de la stratégie est simple et claire, facile à comprendre et à mettre en œuvre, adaptée aux débutants.
  2. Les échanges en cours permettent de réduire les pertes inutiles et d’éviter les prises en contrepartie.
  3. La moyenne mobile a elle-même un certain effet de filtrage qui permet de filtrer le bruit de la circulation et d’éviter de produire de faux signaux.
  4. La définition des paramètres périodiques est raisonnable et n’affecte pas la stabilité de la stratégie.

Analyse des risques

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

  1. En période de turbulence, les moyennes mobiles se croisent fréquemment, ce qui peut entraîner un plus grand nombre de stop-loss.
  2. Les moyennes mobiles sont en retard sur la tendance et risquent de manquer une partie de leurs bénéfices.
  3. Si les paramètres ne sont pas réglés à ce moment-là, cela affecte la stabilité de la stratégie.

La réponse:

  1. La modulation des cycles des moyennes mobiles, l’utilisation de techniques telles que les moyennes mobiles triangulaires pour lisser la courbe et réduire la fréquence des croisements;
  2. L’analyse des tendances par d’autres indicateurs, afin d’éviter de négocier dans des conditions de choc;
  3. Optimiser les paramètres pour trouver la meilleure combinaison de paramètres.

Direction d’optimisation

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

  1. Essayez différents types de moyennes mobiles, comme les moyennes mobiles pondérées, les moyennes mobiles triangulaires, etc.
  2. L’augmentation de l’utilisation d’autres indicateurs techniques pour éviter de générer des signaux de négociation dans un marché en crise;
  3. la théorie des vagues, la théorie des canaux et d’autres méthodes d’analyse technique pour évaluer les tendances;
  4. Les paramètres d’optimisation en temps réel des modèles, tels que l’apprentissage automatique;
  5. L’optimisation de la gestion des fonds par la mise en place d’une stratégie de stop loss combinée à des outils de quantification.

Résumer

Le système de croisement des moyennes mobiles est une stratégie de suivi de tendance simple et efficace, dont les principes sont clairs et faciles à comprendre. Il convient parfaitement aux débutants.

Code source de la stratégie
/*backtest
start: 2023-12-03 00:00:00
end: 2024-01-02 00:00:00
period: 1h
basePeriod: 15m
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/
// © gliese581d

//@version=4
strategy(title="Moving Averages Testing", overlay=true, precision=2, calc_on_every_tick=false, max_bars_back=5000, pyramiding=2,  
 default_qty_type=strategy.percent_of_equity, default_qty_value=50, commission_type=strategy.commission.percent, initial_capital=10000)


//SETTINGS

longs_on = input(title="Long Trades enabled", defval=true)
shorts_on = input(title="Short Trades enabled", defval=true)

long_cond = input(title="Buy/Long Crossover Condition", defval="price x MA1", options=["price x MA1", "price x MA2", "MA1 x MA2"])
short_cond = input(title="Sell/Short Crossunder Condition", defval="price x MA2", options=["price x MA1", "price x MA2", "MA1 x MA2"])

ma1_type = input(title="Moving Average 1 Type", defval="SMA", options=["SMA", "EMA"])
ma1_len = input(defval=20, title="Moving Average 1 Len", type=input.integer, minval=1, maxval=1000, step=1)
ma2_type = input(title="Moving Average 2 Type", defval="SMA", options=["SMA", "EMA"])
ma2_len = input(defval=30, title="Moving Average 2 Len", type=input.integer, minval=1, maxval=1000, step=1)


//MOVING AVERAGES

ma_1 = ma1_type == "EMA" ? ema(close, ma1_len) : sma(close, ma1_len)
ma_2 = ma2_type == "EMA" ? ema(close, ma2_len) : sma(close, ma2_len)


//STRATEGY

//trade entries
long_entry = long_cond == "price x MA1" ? crossover(close, ma_1) : long_cond == "price x MA2" ? crossover(close, ma_2) : long_cond == "MA1 x MA2" ? crossover(ma_1, ma_2) : false
short_entry = short_cond == "price x MA1" ? crossunder(close, ma_1) : short_cond == "price x MA2" ? crossunder(close, ma_2) : short_cond == "MA1 x MA2" ? crossunder(ma_1, ma_2) : false

start_month = input(defval=4, title="Strategy Start Month", type=input.integer, minval=1, maxval=12, step=1)
start_year = input(defval=2018, title="Strategy Start Year", type=input.integer, minval=2000, maxval=2025, step=1)
end_month = input(defval=12, title="Strategy End Month", type=input.integer, minval=1, maxval=12, step=1)
end_year = input(defval=2020, title="Strategy End Year", type=input.integer, minval=2000, maxval=2025, step=1)

in_time =true

strategy.entry("Long", strategy.long, when=longs_on and in_time and long_entry)
strategy.close("Long", when=longs_on and not shorts_on and short_entry)

strategy.entry("Short", strategy.short, when=shorts_on and in_time and short_entry)
strategy.close("Short", when=shorts_on and not longs_on and long_entry)


//PLOTTING

//color background
last_entry_was_long = nz(barssince(long_entry)[1], 5000) < nz(barssince(short_entry)[1], 5000)
bgcol = (longs_on and last_entry_was_long) ? color.green : (shorts_on and not last_entry_was_long) ? color.red : na
bgcolor(color=bgcol, transp=90)

plot((long_cond == "price x MA1" or long_cond == "MA1 x MA2") or (short_cond == "price x MA1" or short_cond == "MA1 x MA2") ? ma_1 : na, color=color.blue)
plot((long_cond == "price x MA2" or long_cond == "MA1 x MA2") or (short_cond == "price x MA2" or short_cond == "MA1 x MA2") ? ma_2 : na, color=color.black)
plotshape(long_entry, style=shape.triangleup, location=location.belowbar, color=color.green)
plotshape(short_entry, style=shape.triangledown, location=location.abovebar, color=color.red)