Cette stratégie est une stratégie de suivi de tendance qui utilise l'indicateur de dynamique des prix. Elle juge la tendance du marché en calculant la variation du prix de clôture sur une certaine période et fait des entrées longues ou courtes correspondantes lorsqu'il y a une tendance persistante à la hausse ou à la baisse des prix.
L'indicateur de base de cette stratégie est la dynamique des prix.
momentum = close - close[n]
où n représente la durée de la période d'élan. Lorsque l'élan > 0, cela signifie que le prix a augmenté au cours de la période en cours. Lorsque l'élan < 0, cela signifie que le prix a diminué au cours de la période en cours.
La stratégie définit d'abord un paramètre confirmBars, qui représente le nombre de bougies nécessaires au jugement de tendance avant l'exécution des transactions. Dans la plage de backtest, si le momentum > 0 persiste pour les bougies confirmBars, une entrée longue est faite. Si le momentum < 0 persiste pour les bougies confirmBars, une entrée courte est faite.
La clé du jugement de tendance de la stratégie réside dans le comptage du nombre de bougies consécutives où le momentum est supérieur ou inférieur à 0, ce qui est réalisé par le biais des variables bcount et discount. Elles sont augmentées de 1 lorsque la condition correspondante est remplie et réinitialisées à 0 lorsque la condition n'est pas remplie. Lorsque le comptage atteint confirmBars, le commerce long ou court correspondant est exécuté.
Il s'agit d'une tendance relativement simple qui suit une stratégie présentant les avantages suivants:
La stratégie comporte également certains risques:
La stratégie peut être optimisée sous plusieurs aspects:
En résumé, cette stratégie de rupture de dynamique est une stratégie de suivi de tendance simple et pratique adaptée comme stratégie de trading quantitatif d'introduction.
/*backtest start: 2024-01-09 00:00:00 end: 2024-01-16 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Momentum Strategy [TS Trader]", overlay=true) confirmBars = input(1) momentumLength = input(14, title="Momentum Length") price = close momentum = close - close[momentumLength] // === INPUT BACKTEST RANGE === fromYear = input.int(2019, title="Backtest Start Year") fromMonth = input.int(1, title="Backtest Start Month", minval=1, maxval=12) fromDay = input.int(1, title="Backtest Start Day", minval=1, maxval=31) toYear = input.int(2023, title="Backtest End Year") toMonth = input.int(12, title="Backtest End Month", minval=1, maxval=12) toDay = input.int(31, title="Backtest End Day", minval=1, maxval=31) startTimestamp = timestamp(fromYear, fromMonth, fromDay, 00, 00) endTimestamp = timestamp(toYear, toMonth, toDay, 23, 59) inBacktestRange = true // === STRATEGY LOGIC === bcond = momentum > 0 bcount = 0 bcount := bcond ? nz(bcount[1]) + 1 : 0 if (bcount == confirmBars and inBacktestRange) strategy.entry("Buy", strategy.long, comment="Long") scond = momentum < 0 scount = 0 scount := scond ? nz(scount[1]) + 1 : 0 if (scount == confirmBars and inBacktestRange) strategy.entry("Sell", strategy.short, comment="Short") // Plotting Momentum plot(momentum, title="Momentum", color=color.purple)