
Une stratégie de suivi de tendance basée sur la construction de jugements basés sur des moyennes mobiles indicielles ((EMA) de plusieurs périodes différentes. Elle le fait lorsque le prix dépasse l’EMA de 10 jours et que d’autres lignes d’EMA de plus longue période présentent des alignements à plusieurs têtes; puis utilise un stop-loss à 8% pour verrouiller les bénéfices.
La stratégie utilise six lignes EMA de différentes périodes de 10, 20, 50, 100, 150 et 200 jours. Ces lignes EMA sont utilisées pour déterminer la phase cyclique dans laquelle se trouve actuellement le marché.
En particulier, la stratégie permet d’ouvrir plus de positions si les conditions suivantes sont remplies:
Après avoir ouvert une position supplémentaire, la stratégie utilise un arrêt de suivi de 8% pour verrouiller les bénéfices. C’est-à-dire, tant que le prix de l’action ne recule pas de plus de 8% du prix d’achat, la position est maintenue.
L’idée de base de la stratégie est d’utiliser des conditions de filtrage multiples EMA pour déterminer l’entrée dans une tendance à plusieurs têtes et de bloquer les bénéfices en suivant les arrêts de perte.
Les principaux avantages de cette stratégie de tendance à plusieurs axes sont les suivants:
Cette stratégie comporte également des risques à prendre en compte:
Pour ces risques, nous pouvons optimiser et améliorer les paramètres du cycle EMA ou introduire d’autres indicateurs comme jugement auxiliaire.
Compte tenu des caractéristiques de cette stratégie, il est possible de l’optimiser à l’avenir dans les domaines suivants:
La stratégie de tendance à plusieurs têtes en ligne moyenne multiple est globalement une stratégie de suivi de tendance plus robuste et plus fiable. Elle combine à la fois le jugement de la tendance et le contrôle des risques. Il y a encore beaucoup de place pour l’amélioration par l’optimisation des paramètres et des algorithmes.
/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy('SirSeff\'s EMA Rainbow', overlay=true)
// Testing Start dates
testStartYear = input(2000, 'Backtest Start Year')
testStartMonth = input(1, 'Backtest Start Month')
testStartDay = input(1, 'Backtest Start Day')
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2100, 'Backtest Stop Year')
testStopMonth = input(12, 'Backtest Stop Month')
testStopDay = input(30, 'Backtest Stop Day')
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriod() =>
time >= testPeriodStart and time <= testPeriodStop ? true : false
// Component Code Stop
//TSP
trailStop = input.float(title='Long Trailing Stop (%)', minval=0.0, step=0.1, defval=8) * 0.01
longStopPrice = 0.0
longStopPrice := if strategy.position_size > 0
stopValue = close * (1 - trailStop)
math.max(stopValue, longStopPrice[1])
else
0
//PLOTS
plot(series=strategy.position_size > 0 ? longStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Long Trail Stop', offset=1, title='Long Trail Stop')
plot(ta.ema(close, 20))
plot(ta.ema(close, 50))
plot(ta.ema(close, 100))
plot(ta.ema(close, 150))
plot(ta.ema(close, 200))
//OPEN
longCondition = ta.ema(close, 10) > ta.ema(close, 20) and ta.ema(close, 20) > ta.ema(close, 50) and ta.ema(close, 100) > ta.ema(close, 150) and ta.ema(close, 150) > ta.ema(close, 200)
if longCondition and ta.crossover(close,ta.ema(close,10)) and testPeriod()
strategy.entry("BUY1", strategy.long)
if longCondition and ta.crossover(ta.ema(close,10),ta.ema(close,20)) and testPeriod()
strategy.entry("BUY2'", strategy.long)
//CLOSE @ TSL
if strategy.position_size > 0 and testPeriod()
strategy.exit(id='TSP', stop=longStopPrice)