
La stratégie de suivi de tendance à double moyenne mobile consiste à calculer une moyenne mobile à double indice des prix, formant une ligne rapide et une ligne lente, pour déterminer la tendance des prix en fonction de la forme croisée des deux lignes. La stratégie appartient à la stratégie de trading quantitatif basée sur le suivi de tendance.
La stratégie commence par calculer les moyennes mobiles à double indice des prix, comprenant les lignes rapides et les lignes lentes. Les paramètres des lignes rapides sont de 4 cycles et les paramètres des lignes lentes de 8 cycles. La croisée des deux lignes génère des signaux d’achat et de vente.
La stratégie permet d’abord de négocier en fonction de la tendance des prix et d’éviter les coûts de transaction. Deuxièmement, la double ligne de moyenne mobile filtre la partie du bruit des prix et permet de saisir les tendances des prix. Deuxièmement, les paramètres de la stratégie sont optimisés de manière flexible.
La stratégie repose sur l’optimisation des paramètres, qui génère de nombreux signaux erronés si les paramètres sont mal configurés. De plus, les doubles moyennes mobiles sont retardées et peuvent manquer le point de basculement des prix. De plus, les transactions tendancielles sont sujettes à un modèle de chasse à l’or et à la baisse.
Cette stratégie peut être optimisée dans les domaines suivants:
Optimiser les paramètres périodiques des moyennes mobiles doubles pour trouver la meilleure combinaison de paramètres
Ajout d’autres indicateurs de filtrage, tels que RSI, KD, etc., pour améliorer la qualité du signal
Augmenter les stratégies de stop loss et les arrêter en temps opportun en cas de revers de tendance
Adapter la taille de la position en fonction de la dynamique du marché et maîtriser les risques
Optimisation pour les différents paramètres de variété de transaction
Combiner des stratégies avancées, telles que l’apprentissage automatique, pour améliorer l’efficacité des stratégies
Cette stratégie est une stratégie simple de suivi de tendance basée sur des courbes doubles mobiles. L’idée de la stratégie est claire, facile à mettre en œuvre, les paramètres sont ajustés de manière flexible et conviennent comme stratégie d’entrée pour les transactions quantifiées.
/*backtest
start: 2023-10-14 00:00:00
end: 2023-11-13 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 12/11/2017
// The SMI Ergodic Indicator is the same as the True Strength Index (TSI) developed by
// William Blau, except the SMI includes a signal line. The SMI uses double moving averages
// of price minus previous price over 2 time frames. The signal line, which is an EMA of the
// SMI, is plotted to help trigger trading signals. Adjustable guides are also given to fine
// tune these signals. The user may change the input (close), method (EMA), period lengths
// and guide values.
// You can use in the xPrice any series: Open, High, Low, Close, HL2, HLC3, OHLC4 and ect...
//
// WARNING:
// - For purpose educate only
////////////////////////////////////////////////////////////
strategy(title="SMI Ergodic Oscillator")
fastPeriod = input(4, minval=1)
slowPeriod = input(8, minval=1)
SmthLen = input(3, minval=1)
TopBand = input(0.5, step=0.1)
LowBand = input(-0.5, step=0.1)
reverse = input(false, title="Trade reverse")
// hline(0, color=gray, linestyle=dashed)
// hline(TopBand, color=red, linestyle=line)
// hline(LowBand, color=green, linestyle=line)
xPrice = close
xPrice1 = xPrice - xPrice[1]
xPrice2 = abs(xPrice - xPrice[1])
xSMA_R = ema(ema(xPrice1,fastPeriod),slowPeriod)
xSMA_aR = ema(ema(xPrice2, fastPeriod),slowPeriod)
xSMI = xSMA_R / xSMA_aR
xEMA_SMI = ema(xSMI, SmthLen)
pos = iff(xEMA_SMI < xSMI, -1,
iff(xEMA_SMI > xSMI, 1, nz(pos[1], 0)))
possig = iff(reverse and pos == 1, -1,
iff(reverse and pos == -1, 1, pos))
if (possig == 1)
strategy.entry("Long", strategy.long)
if (possig == -1)
strategy.entry("Short", strategy.short)
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(xSMI, color=green, title="Ergotic SMI")
plot(xEMA_SMI, color=red, title="SigLin")