La stratégie de croisement de la moyenne mobile est une stratégie de suivi de la tendance basée sur la croisement de la moyenne mobile comme signal de négociation. La stratégie utilise la croisement du prix avec la moyenne mobile et la croisement de deux moyennes mobiles comme signaux d’achat et de vente pour rechercher un profit.
Les principaux principes de cette stratégie sont les suivants:
Les deux moyennes mobiles sont calculées, plus ou moins rapidement, en choisissant entre SMA ou EMA.
Lorsque vous traversez la ligne lente sur la ligne rapide, faites plus; lorsque vous traversez la ligne lente sur la ligne rapide, faites le même.
Il est possible de choisir une rupture de la ligne moyenne ou un croisement entre les lignes moyennes comme signal de négociation.
Vous pouvez définir une période de temps pendant laquelle la stratégie sera exécutée.
Les marchés à capitaux multiples ne peuvent être réglementés que par des taux plus élevés et les marchés à capitaux vides par des taux plus bas.
Optimisation des paramètres de la moyenne mobile pour s’adapter à différentes périodes.
La stratégie utilise la fonction de suivi de tendance de la moyenne mobile, indiquant que lorsque la moyenne à court terme traverse la moyenne à long terme, elle est actuellement en tendance à la hausse et devrait faire plus; à l’inverse, lorsque la moyenne à court terme traverse la moyenne à long terme en dessous de la moyenne à court terme, indiquant qu’elle est actuellement en tendance à la baisse et devrait réduire sa position.
Les principaux avantages de cette stratégie sont les suivants:
Le principe est simple, facile à mettre en œuvre, les signaux de transaction clairs.
Il permet de suivre efficacement les tendances et de saisir les opportunités d’achat et de vente en temps opportun.
Il peut être combiné avec différents paramètres de ligne moyenne et s’applique à de nombreux environnements de marché.
Il est possible de choisir de ne faire que plus ou de ne faire que le vide, en évitant les opérations inverses incertaines.
Vous pouvez définir des heures de fonctionnement pour éviter des périodes de temps spécifiques.
L’optimisation des paramètres permet d’améliorer constamment la performance de la stratégie.
Les principaux risques de cette stratégie sont:
Il est facile de générer de faux signaux et il faut éviter les transactions trop fréquentes.
La représentation dépend de la sélection des paramètres de la ligne moyenne, une mauvaise sélection peut entraîner des pertes.
Il y a un certain retard qui devrait empêcher l’entrée et la sortie prématurées.
Il n’est pas adapté aux conditions de marché en période de choc.
Le croisement de la même ligne est assez aléatoire et ne permet pas d’éviter complètement les pertes.
Le risque peut être réduit par la confirmation du volume des transactions, l’optimisation des paramètres ou leur utilisation en combinaison avec d’autres indicateurs.
Cette stratégie peut être optimisée dans les domaines suivants:
Ajouter /%{Line - ShortMa) /ShortMa) /{Line - LongMa) /LongMa) / comme condition de filtre de la pente de la ligne moyenne.
Optimiser les paramètres de périodes moyennes mobiles pour tester différentes combinaisons.
L’ajout d’indicateurs tels que le MACD ou le RSI pour une confirmation multiple.
Il existe des conditions de stop-loss pour limiter les pertes individuelles.
Distinction entre les marchés tendanciels et les marchés de consolidation, pour une utilisation conditionnelle.
Test des positions sur une période de temps plus ou moins longue pour trouver la meilleure solution.
La stratégie de croisement de la moyenne mobile est une stratégie de suivi de tendance simple et pratique. L’avantage est qu’elle est facile à mettre en œuvre et permet de suivre efficacement la tendance; L’inconvénient est qu’elle est retardée et peut produire de nombreux faux signaux.
/*backtest
start: 2023-09-10 00:00:00
end: 2023-09-17 00:00:00
period: 10m
basePeriod: 1m
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)