Cette stratégie génère des signaux de négociation en calculant le croisement entre deux lignes EMA de périodes différentes pour déterminer les tendances du marché. Elle ouvre des positions longues lorsque l'EMA de la période la plus courte traverse l'EMA de la période la plus longue, indiquant une tendance haussière, et elle ferme des positions lorsque l'EMA de la période la plus courte traverse le niveau inférieur à l'EMA de la période la plus longue, indiquant une tendance baissière.
La stratégie applique principalement la théorie de la croix d'or et de la croix de la mort des lignes EMA doubles. Les lignes EMA doubles consistent en une EMA longue et une EMA courte. Le paramètre EMA court est défini à 10 jours et le paramètre EMA long est défini à 21 jours.
Lorsque la courte EMA traverse la longue EMA, un signal d'achat est généré. Lorsque la courte EMA traverse en dessous de la longue EMA, un signal de vente est généré. La stratégie fixe également des seuils de taux de croissance, n'ouvrant des positions longues que lorsque la croissance dépasse un seuil positif et ne fermant des positions que lorsque le déclin dépasse un seuil négatif.
En particulier, la condition d'achat est lorsque l'EMA courte est supérieure à l'EMA longue et que le taux de croissance des actions dépasse le seuil positif.
La stratégie globale est relativement simple et fiable, utilisant des croisements doubles EMA pour déterminer les tendances des prix et fixer des seuils de taux de croissance pour générer des signaux de trading.
/*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)