
La stratégie détermine la tendance du marché en calculant le croisement de la moyenne des EMA de deux périodes différentes et en génère un signal de négociation. Lorsque le marché entre dans une tendance à la hausse sur les EMA de la courte période, la stratégie prend une position plus élevée; lorsque le marché entre dans une tendance à la baisse sur les EMA de la longue période, la stratégie se retire de la position.
La stratégie utilise principalement la théorie de la jonction des deux lignes moyennes de l’EMA. La ligne moyenne de l’EMA est divisée en lignes longues et courtes. Le paramètre de l’EMA court est défini sur 10 jours et le paramètre de l’EMA long sur 21 jours.
Lorsque la courte EMA traverse la longue EMA, un signal d’achat est généré; lorsque la courte EMA traverse la longue EMA, un signal de vente est généré. La stratégie définit en même temps un seuil de croissance, ouvrant des positions supplémentaires uniquement lorsque la croissance dépasse le seuil de dépréciation et se stabilisant lorsque la baisse dépasse le seuil de dépréciation.
Plus précisément, les conditions d’achat sont les suivantes: l’EMA courte est supérieure à l’EMA longue et le taux de croissance du cours de l’action est supérieur au seuil positif fixé; les conditions d’offre sont les suivantes: l’EMA courte est inférieure à l’EMA longue et le taux de croissance du cours de l’action est inférieur au seuil négatif fixé.
Cette stratégie est globalement simple et fiable, elle permet de juger de la tendance des prix à l’aide d’une double croisement des EMA et de définir des seuils de croissance pour émettre un signal de négociation. Par rapport à une seule croisement de la moyenne, les faux signaux peuvent être filtrés. Cependant, la moyenne EMA elle-même présente des problèmes de retard, et la combinaison avec d’autres indicateurs ou paramètres dynamiques peut encore améliorer l’efficacité de la stratégie.
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title="ema(ema10-21)", overlay=true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 15000, commission_type = strategy.commission.percent, commission_value = 0.2)
useTimeLimit = input(defval = false, title = "Use Start Time Limiter?")
startYear = input(defval = 2016, title = "Start From Year", minval = 0, step = 1)
startMonth = input(defval = 05, title = "Start From Month", minval = 0,step = 1)
startDay = input(defval = 01, title = "Start From Day", minval = 0,step = 1)
startHour = input(defval = 00, title = "Start From Hour", minval = 0,step = 1)
startMinute = input(defval = 00, title = "Start From Minute", minval = 0,step = 1)
startTimeOk() => true
lenght0 = input(10)
lenght1 = input(21)
source = close
EmaShort = ema(ema(source, lenght0), lenght0)
EmaLong = ema(ema(source, lenght1),lenght1)
plot(EmaShort, color=red)
plot(EmaLong, color=purple)
growth = ((EmaShort-EmaLong)*100)/((EmaShort+EmaLong)/2)
thresholdUp = input(defval=0.05, title="Threshold Up", type=float, step=0.01)
thresholdDown = input(defval=-0.165, title="Threshold Down", type=float, step=0.001)
if( startTimeOk() )
buy_condition = EmaShort > EmaLong and growth > thresholdUp
buy_exit_condition = EmaShort < EmaLong and growth < thresholdDown
strategy.entry("buy", strategy.long, comment="buy", when=buy_condition)
strategy.close(id='buy', when=buy_exit_condition)