Tendance suivant une stratégie basée sur des moyennes mobiles

Auteur:ChaoZhang est là., Date: 2024-01-18 à 12 h 23 min 59 s
Les étiquettes:

img

Résumé

Cette stratégie est une stratégie de suivi de tendance basée sur des moyennes mobiles. Elle utilise des lignes EMA de différentes périodes pour construire plusieurs ensembles de signaux de trading pour le suivi de tendance. Lorsque le prix dépasse les moyennes mobiles à plus longue période, la stratégie construira progressivement des positions longues pour abaisser le coût moyen. La stratégie définit également des conditions de stop loss basées sur des tours de moyenne mobile à courte période pour sécuriser les bénéfices.

La logique de la stratégie

La stratégie utilise 5 lignes EMA de différentes périodes pour construire des signaux de trading, qui sont des EMA de 10 jours, 20 jours, 50 jours, 100 jours et 200 jours.

Lorsque le prix est en dessous de l'EMA de 20 jours alors qu'il est au-dessus de l'EMA de 50 jours, le premier signal d'achat est déclenché. Lorsque le prix est en dessous de l'EMA de 50 jours alors qu'il est au-dessus de l'EMA de 100 jours, le deuxième signal d'achat est déclenché. Les troisième et quatrième signaux d'achat sont déclenchés lorsque le prix tombe respectivement en dessous de l'EMA de 100 jours et de l'EMA de 200 jours.

Sur le côté de la vente, il existe deux groupes de conditions de stop-loss. La première est d'arrêter la perte lorsque le prix dépasse l'EMA de 10 jours tandis que l'EMA de 10 jours est au-dessus des autres lignes EMA. La seconde est similaire mais elle sort lorsque le prix tombe en dessous de la clôture précédente de l'EMA de 10 jours. Ces deux conditions sont d'assurer des profits à court terme pendant les tendances.

Analyse des avantages

Le plus grand avantage de cette stratégie est la capacité de suivre automatiquement les tendances du marché pour les détentions à long terme. En utilisant plusieurs conditions d'entrée et la construction progressive de position, il réduit constamment la base de coûts pour générer des rendements excédentaires. Il élimine également le risque de tarification associé à un seul niveau de prix d'entrée.

Du côté du stop loss, la stratégie suit les points de basculement de la moyenne mobile à court terme pour tirer rapidement profit et éviter de nouvelles pertes.

Analyse des risques

Le risque le plus important de cette stratégie est d'être coincé dans des consolidations ou des tendances à la baisse de longue durée. Lorsque le marché global entre dans un canal variable ou à la baisse, les signaux de moyenne mobile deviennent moins fiables. Cela pourrait entraîner des pertes soutenues de la poursuite de longues constructions.

Un autre point de risque est que les moyennes mobiles ne déterminent pas toujours les virages avec précision. Des écarts de prix ou des mouvements explosifs pourraient entraîner des signaux défectueux. Cela nécessite des indicateurs techniques supplémentaires pour la vérification et l'optimisation.

Directions d'optimisation

D'autres indicateurs techniques tels que le volume ou les bandes de Bollinger pourraient être intégrés dans les conditions d'achat afin d'améliorer davantage la précision des entrées.

Les deuxièmes couches de stop loss basées sur la bande supérieure de Bollinger ou les zones de soutien clés pourraient également être ajoutées. Cela aide à éviter les petits arrêts inutiles.

Conclusion

Cette stratégie met en œuvre la tendance suivant le trading via un système de moyenne mobile. Grâce à la construction de positions pyramidales, elle vise à maximiser les rendements des tendances soutenues tout en assurant la préservation du capital avec des mécanismes de double stop loss.


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

//@version=5
strategy("EMA_zorba1", shorttitle="zorba_ema", overlay=true)

// Input parameters
qt1 = input.int(5, title="Quantity 1", minval=1)
qt2 = input.int(10, title="Quantity 2", minval=1)
qt3 = input.int(15, title="Quantity 3", minval=1)
qt4 = input.int(20, title="Quantity 4", minval=1)
ema10 = ta.ema(close, 10)
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)

// Date range filter
start_date = timestamp(year=2021, month=1, day=1)
end_date = timestamp(year=2024, month=10, day=27)
in_date_range = true

// Profit condition
profit_percentage = input(1, title="Profit Percentage")  // Adjust this value as needed

// Pyramiding setting
pyramiding = input.int(2, title="Pyramiding", minval=1, maxval=10)

// Buy conditions
buy_condition_1 = in_date_range and close < ema20 and close > ema50 and close < open and close < low[1]
buy_condition_2 = in_date_range and close < ema50 and close > ema100 and close < open and close < low[1]
buy_condition_3 = in_date_range and close < ema100 and close > ema200 and close < open and close < low[1]
buy_condition_4 = in_date_range and close < ema200 and close < open and close < low[1]

// Exit conditions
profit_condition = strategy.position_avg_price * (1 + profit_percentage / 100) <= close
exit_condition_1 = in_date_range and (close > ema10 and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]
exit_condition_2 = in_date_range and (close < ema10 and close[1] > ema10 and close < close[1] and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]

// Exit condition for when today's close is less than the previous day's low
//exit_condition_3 = close < low[1]

// Strategy logic
strategy.entry("Buy1", strategy.long, qty=qt1 * pyramiding, when=buy_condition_1)
strategy.entry("Buy2", strategy.long, qty=qt2 * pyramiding, when=buy_condition_2)
strategy.entry("Buy3", strategy.long, qty=qt3 * pyramiding, when=buy_condition_3)
strategy.entry("Buy4", strategy.long, qty=qt4 * pyramiding, when=buy_condition_4)

strategy.close("Buy1", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy2", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy3", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy4", when=exit_condition_1 or exit_condition_2)

Plus de