
La stratégie de suivi de la tendance en utilisant une combinaison de plusieurs ensembles de paramètres différents. La stratégie utilise simultanément sept ensembles de moyennes EMA, comprenant les cycles 12, 26, 50, 100, 200, 89 et 144, pour juger de la direction de la tendance en comparant les croisements de ces EMA.
La logique centrale de la stratégie est basée sur le principe de l’intersection des EMA moyennes. Les EMA moyennes à plus courtes périodes sont plus sensibles aux variations de prix et peuvent refléter les tendances de prix récentes; les EMA à plus longues périodes sont moins sensibles aux variations de prix et peuvent refléter les tendances à plus long terme. Lorsque les EMA à courtes périodes traversent une EMA à longue période par le bas, une soi-disant fourchette d’or est formée, indiquant que la tendance à court terme est tournée à la hausse et peut être configurée pour passer plus d’ordres.
La stratégie utilise sept ensembles de lignes moyennes EMA, comprenant 12&26, 12&50, 12&100, 12&200, 12&89 et 12&144. La stratégie compare simultanément les intersections de ces sept ensembles d’EMA. Par exemple, une position est ouverte lorsque l’EMA du 12e traverse l’EMA du 26e pour former un forfait d’or; une position est nivelée lorsque le forfait mort se produit. La stratégie utilise la même logique pour les six autres lignes moyennes EMA.
Le plus grand avantage de cette stratégie est qu’elle peut capturer simultanément des tendances sur plusieurs échelles de temps. En combinant l’utilisation de plusieurs moyennes EMA, la stratégie peut capturer des tendances à court terme et suivre des tendances à long terme, permettant un suivi de tendances sur plusieurs axes de temps. De plus, la stratégie peut optimiser la performance en ajustant les paramètres des différentes EMA.
Le principal risque de cette stratégie réside dans le fait que les signaux de croisement peuvent être trop fréquents lorsque plusieurs combinaisons de lignes de moyenne EMA sont utilisées. Par exemple, le nombre de croisements entre les EMA de 12 et 26 jours est plus fréquent que le nombre de croisements entre les EMA de 12 et 200 jours.
Pour réduire les risques mentionnés ci-dessus, il est possible d’optimiser de manière appropriée les paramètres cycliques de l’EMA, de sorte que sa fréquence de croisement se situe dans la plage appropriée. Il est également possible de limiter de manière appropriée le nombre de positions ouvertes par jour ou de mettre en place des arrêts de perte pour contrôler les risques.
L’espace d’optimisation de cette stratégie est principalement centré sur l’ajustement des paramètres de l’EMA. Des combinaisons de paramètres de plus de cycles différents peuvent être essayées. En outre, d’autres types de moyennes mobiles telles que SMA peuvent être essayées. De plus, la stratégie peut ajouter des conditions supplémentaires pour filtrer les signaux, tels que les indicateurs de volume de transaction, les indicateurs de volatilité, etc., ce qui améliore la qualité du signal.
La stratégie de suivi de la tendance de la croix de l’EMA est une stratégie de suivi de la tendance courante qui permet de suivre la tendance à plusieurs échelles temporelles en comparant les situations de croix de plusieurs EMA. L’avantage de cette stratégie réside dans la possibilité d’ajuster les paramètres de manière flexible pour capturer les tendances à différents niveaux. L’inconvénient réside dans le fait que le signal peut être trop fréquent, ce qui augmente le coût de la transaction.
/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("EMA Trades", overlay=true, pyramiding=4)
src = input(close, title="Source")
shortestLine = input(12, minval=1, title="Shortest Line")
shorterLine = input(26, minval=1, title="Shorter Line")
shortLine = input(50, minval=1, title="Short Line")
middleLine = input(100, minval=1, title="Middle Line")
longLine = input(200, minval=1, title="Long Line")
longerLine = input(89, minval=1, title="Longer Line")
longestLine = input(144, minval=1, title="Longest Line")
shortestLineOutput = ema(src, shortestLine)
shorterLineOutput = ema(src, shorterLine)
shortLineOutput = ema(src, shortLine)
middleLineOutput = ema(src, middleLine)
longLineOutput = ema(src, longLine)
longerLineOutput = ema(src, longerLine)
longestLineOutput = ema(src, longestLine)
//plot(shortestLineOutput, title="Shortest EMA", color=#ffffff)
//plot(shorterLineOutput, title="Shorter EMA", color=#e54fe6)
//plot(shortLineOutput, title="Short EMA", color=#4e6bc3)
//plot(middleLineOutput, title="Middle EMA", color=#1dd6d8)
//plot(longLineOutput, title="Long EMA", color=#d0de10)
//plot(longerLineOutput, title="Longer EMA", color=#ef6a1a)
//plot(longestLineOutput, title="Longest EMA", color=#ff0e0e)
longEnrtyCondition_1 = crossover(shortestLineOutput[1], shorterLineOutput[1]) and shortestLineOutput > shorterLineOutput
longEntryCondition_2 = crossover(shortestLineOutput[1], shortLineOutput[1]) and shortestLineOutput > shortLineOutput
longEnrtyCondition_3 = crossover(shortestLineOutput[1], middleLineOutput[1]) and shortestLineOutput > middleLineOutput
longEntryCondition_4 = crossover(shortestLineOutput[1], longLineOutput[1]) and shortestLineOutput > longLineOutput
shortEnrtyCondition_1 = crossunder(shortestLineOutput[1], shorterLineOutput[1]) and shortestLineOutput < shorterLineOutput
shortEntryCondition_2 = crossunder(shortestLineOutput[1], shortLineOutput[1]) and shortestLineOutput < shortLineOutput
shortEnrtyCondition_3 = crossunder(shortestLineOutput[1], middleLineOutput[1]) and shortestLineOutput < middleLineOutput
shortEntryCondition_4 = crossunder(shortestLineOutput[1], longLineOutput[1]) and shortestLineOutput < longLineOutput
if (longEnrtyCondition_1)
strategy.entry("Buy1", strategy.long)
strategy.exit("Sell1")
if (longEntryCondition_2)
strategy.entry("Buy2", strategy.long)
strategy.exit("Sell2")
if (longEnrtyCondition_3)
strategy.entry("Buy3", strategy.long)
strategy.exit("Sell3")
if (longEntryCondition_4)
strategy.entry("Buy4", strategy.long)
strategy.exit("Sell4")
if (shortEnrtyCondition_1)
strategy.entry("Sell1", strategy.short)
strategy.exit("Buy1")
if (shortEntryCondition_2)
strategy.entry("Sell2", strategy.short)
strategy.exit("Buy2")
if (shortEnrtyCondition_3)
strategy.entry("Sell3", strategy.short)
strategy.exit("Buy3")
if (shortEntryCondition_4)
strategy.entry("Sell4", strategy.short)
strategy.exit("Buy4")