
Cette stratégie est basée sur une stratégie de suivi de la tendance de la moyenne. Elle utilise l’EMA de différentes périodes pour construire plusieurs groupes de signaux de négociation, permettant des transactions de suivi de tendance.
La stratégie utilise cinq lignes de cours EMA de différentes périodes pour construire un signal de négociation. Les lignes de cours sont les lignes de 10, 20, 50, 100 et 200 jours. La stratégie définit quatre groupes de conditions d’achat en fonction de la relation entre le prix et ces lignes de cours, pour réaliser une mise en position pyramidale.
Lorsque le prix est inférieur à la ligne de 20 et supérieur à la ligne de 50, le premier groupe d’achats est déclenché; lorsque le prix est inférieur à la ligne de 50 et supérieur à la ligne de 100 jours, le second groupe d’achats est déclenché; lorsque le prix est inférieur à la ligne de 100 jours et supérieur à la ligne de 200 jours, le troisième groupe d’achats est déclenché; lorsque le prix est inférieur à la ligne de 200 jours, le quatrième groupe d’achats est déclenché. Le nombre d’achats est également augmenté progressivement à chaque achat, respectivement qt1, qt2, qt3 et qt4.
En ce qui concerne la vente, la stratégie utilise simultanément deux ensembles de conditions d’arrêt. Le premier groupe est arrêté lorsque le prix est supérieur à la ligne de 10 jours et que la ligne de 10 jours est supérieure aux autres lignes moyennes; le second groupe est arrêté lorsque le prix est inférieur à la ligne de 10 jours du jour précédent et que la ligne de 10 jours est supérieure aux autres lignes moyennes.
Le plus grand avantage de cette stratégie réside dans la possibilité de suivre automatiquement les tendances du marché pour réaliser des longues lignes. Grâce à des conditions d’achat multiples et à des accumulations de lots, il est possible de réduire continuellement le coût d’achat et d’obtenir des gains supplémentaires.
En ce qui concerne les arrêts de perte, la stratégie est également conçue de manière optimisée. Suivre à la hausse le point de basculement de la courte moyenne périodique permet d’arrêter rapidement les pertes et de bloquer les gains. Cela évite le risque d’une nouvelle extension des pertes.
Le plus grand risque pour cette stratégie est de se retrouver pris dans la courbe longue. Le signal de courbe moyenne n’est pas fiable lorsque le marché principal est dans une zone de choc ou de descente. Il est alors possible de continuer à acheter et à détenir des positions et de subir des pertes plus importantes.
Un autre point de risque est que la ligne moyenne n’est pas toujours précise. Les sauts de prix ou les mouvements d’expansion à court terme peuvent donner un mauvais signal à la ligne moyenne. Cela doit être vérifié et optimisé en combinaison avec d’autres indicateurs techniques.
On peut envisager d’ajouter d’autres indicateurs techniques dans les conditions d’achat, tels que les indicateurs de volume d’achat, les signaux de Bollinger Bands, etc. Cela peut encore améliorer le taux de réussite des achats.
Il est également possible d’ajouter un Boll sur la voie ou un support critique comme deuxième niveau de stop loss. Cela peut réduire les petits stops inutiles. Ou ajouter une fonction de stop loss mobile pour ajuster le stop loss en temps réel et verrouiller davantage les gains.
La stratégie utilise un système de suivi de tendance linéaire pour les transactions. Grâce à des poids pyramidaux, il est possible de tirer le meilleur parti de la tendance. En même temps, il existe des conditions de double arrêt qui protègent la sécurité des fonds. C’est une stratégie qui mérite d’être suivie à long terme et vérifiée en temps réel.
/*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)