Stratégie de suivi de tendance et de double piste de moyenne mobile


Date de création: 2023-11-06 15:41:23 Dernière modification: 2023-11-06 15:41:23
Copier: 0 Nombre de clics: 558
1
Suivre
1617
Abonnés

Stratégie de suivi de tendance et de double piste de moyenne mobile

Aperçu

Cette stratégie utilise les moyennes mobiles rapides et les moyennes mobiles lentes pour construire un système bi-rail, combiné à l’indice de tendance ADX pour juger de la tendance, et à l’indice de mouvement DMI pour juger de la direction de la tendance, permettant de suivre la tendance après l’établissement de la tendance, de se retirer en temps opportun lorsque la tendance se retourne et d’éviter de suivre la chute.

Principe de stratégie

  1. Les moyennes mobiles rapides et les moyennes mobiles lentes construisent un système à double voie. Lorsque la moyenne mobile rapide est traversée par la moyenne mobile lente, le signal de la fourche dorée est utilisé pour faire une entrée supplémentaire; lorsque la moyenne mobile rapide est traversée par la moyenne mobile lente, le signal de la fourche morte est utilisé pour la sortie de la position.

  2. L’ADX est utilisé pour juger de la présence et de la force d’une tendance. Quand l’ADX est supérieur à la valeur de la clé de réglage, la tendance est considérée comme présente et la tendance est forte.

  3. DI+ dans DMI est utilisé pour déterminer la direction de la tendance. Lorsque DI+ est positif, la tendance est à la hausse; lorsque DI+ est négatif, la tendance est à la baisse.

  4. Le test de portée temporelle permet de mesurer l’efficacité d’une stratégie sur différentes périodes de temps afin de la valider.

Analyse des avantages

  1. Le système à double voie permet de filtrer les fausses percées et d’éviter les pertes.

  2. Utilisez l’ADX pour juger de l’existence et de l’intensité d’une tendance et évitez de négocier fréquemment en cas de choc.

  3. Utilisez le DMI pour déterminer la direction de la tendance, assurez-vous que vous êtes en phase avec la tendance et évitez les transactions à contre-courant.

  4. Les tests de portée de temps permettent de vérifier si les paramètres de la stratégie fonctionnent dans différents cas et d’optimiser les paramètres.

Analyse des risques

  1. Les systèmes à deux voies sont sujets à la formation de pièges à tête nue ou de pièges à plusieurs têtes, et nécessitent une attention particulière pour réajuster les prix en cas de panne.

  2. L’ADX estime qu’il y a un retard et peut-être une occasion manquée au début de la tendance, ce qui peut réduire la valeur critique.

  3. La direction de jugement DMI est également en retard et peut également manquer le début de la tendance, ce qui peut raccourcir le paramètre de la période.

  4. Les paramètres peuvent être ajustés à différentes périodes et doivent être optimisés pour s’adapter aux circonstances.

Direction d’optimisation

  1. Les combinaisons de paramètres de différentes longueurs de cycle peuvent être testées pour trouver le paramètre optimal.

  2. Le double filtrage peut être combiné avec d’autres indicateurs tels que les lignes de blur afin d’améliorer la qualité du signal.

  3. Il est possible d’ajouter des stratégies de stop-loss pour éviter que les pertes ne s’accroissent.

  4. Les paramètres peuvent être optimisés automatiquement par l’apprentissage automatique.

  5. Il est possible de combiner des indicateurs d’humeur, des informations et d’autres facteurs pour améliorer l’efficacité de la stratégie.

Résumer

Cette stratégie intègre les avantages des moyennes mobiles, des indices de tendance et des indices de mouvement, permettant de juger et de suivre les tendances. Tout en vérifiant l’efficacité de ses paramètres, il est nécessaire d’optimiser en permanence pour s’adapter à davantage de circonstances du marché, d’approfondir davantage les ajustements de paramètres, les stratégies de stop-loss et la synthèse multifactorielle, afin d’améliorer la stabilité et la rentabilité de la stratégie.

Code source de la stratégie
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// author: codachang0726
strategy(title = "(S)MA+ADX+DI+time", shorttitle = "(S)MA+ADX+DI+time", overlay = true)

// === INPUT MA LENGTHS ===
fastMA    = input(defval = 7,   title = "FastMA",          minval = 1, step = 1)
slowMA    = input(defval = 14,   title = "SlowMA",          minval = 1, step = 1)

// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 9,    title = "From Month",      minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        minval = 1, maxval = 31)
thruYear  = input(defval = 2022, title = "Thru Year",       minval = 1970)

// === INPUT SHOW PLOT ===
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

// === FUNCTION EXAMPLE ===
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"

// === MA LOGIC ===
crossOv   =  sma(close, fastMA) > sma(close, slowMA)     // true when fastMA over slowMA
crossUn   =  sma(close, fastMA) < sma(close, slowMA)     // true when fastMA under slowMA

// DI+ADX
adxlen      = input(14, title="ADX Smoothing")
dilen       = input(14, title="DI Period")
keyLevel    = input(20, title="Keylevel for ADX")
[diplus, diminus, adx] = dmi(dilen, adxlen)
di = (diplus - diminus)

buy = di > 0 and crossOv and adx > keyLevel
sell = di < 0 and crossUn and adx > keyLevel

buy_time = buy and not buy[1]
sell_time = sell and not sell[1]

// === EXECUTION ===
strategy.entry("L", strategy.long, when = window() and buy_time)    // enter long when "within window of time" AND crossover
strategy.close("L", when = window() and sell_time)                   // exit long when "within window of time" AND crossunder         

// === PLOTTING ===
bgcolor(color = showDate and window() ? color.gray : na, transp = 90)                                     // plot "within window of time"
plot(sma(close, fastMA), title = 'FastMA', color = color.yellow, linewidth = 2, style = plot.style_line)  // plot FastMA
plot(sma(close, slowMA), title = 'SlowMA', color = color.aqua,   linewidth = 2, style = plot.style_line)  // plot SlowMA