Stratégie de suivi de la tendance des moyennes mobiles doubles

Auteur:ChaoZhang est là., Date: 21-12-2023 à 11h45
Les étiquettes:

img

Résumé

La stratégie de suivi des tendances des moyennes mobiles doubles est une stratégie de trading quantitative qui suit les tendances des prix des actions.

Principe de stratégie

Cette stratégie est principalement basée sur le système de moyenne mobile exponentielle double pour déterminer la direction de la tendance des prix. La stratégie utilise deux EMAs rapides et lentes avec des paramètres différents, l'EMA1 rapide réagit plus rapidement aux changements de prix et l'EMA2 lente répond plus lentement aux changements de prix. Lorsque la ligne rapide traverse au-dessus de la ligne lente, c'est un signal d'achat indiquant que le prix a commencé à augmenter; lorsque la ligne rapide traverse en dessous de la ligne lente, c'est un signal de vente indiquant que le prix a commencé à baisser.

En outre, la stratégie introduit également l'indicateur ADX pour juger de la force de la tendance. ADX calcule les fluctuations de prix pour juger de la force de la tendance. Lorsque l'ADX augmente, cela signifie que la tendance se renforce; lorsque l'ADX chute, cela signifie que la tendance s'affaiblit. La stratégie définit des conditions de filtrage du trading via l'indicateur ADX, n'émettant des signaux de trading que lorsque la force de la tendance est relativement forte.

Plus précisément, les règles de génération de signaux de la stratégie sont les suivantes:

  1. Allez long lorsque la ligne rapide traverse au-dessus de la ligne lente, et allez court lorsque la ligne rapide traverse au-dessous de la ligne lente
  2. Seules les positions longues et courtes sont autorisées lorsque l'ADX est supérieur à 25

Cela peut filtrer efficacement les signaux non valides avec une tendance plus faible, améliorant encore la stabilité du système de négociation.

Les avantages de la stratégie

Cette stratégie présente les principaux avantages suivants:

  1. Capture les tendances des prix à moyen et long terme: Le double système EMA permet de déterminer efficacement les tendances des prix à moyen et long terme et d'éviter les interférences du bruit de marché à court terme.

  2. Filtre les fausses éruptions: En évaluant la force de la tendance à travers l'indicateur ADX, il évite les pertes inutiles causées par de fausses ruptures autour des points tournants de la tendance.

  3. Grand espace d'optimisation des paramètres: Les paramètres de ligne rapide et lente, les paramètres ADX et plus ont une marge d'optimisation qui peut donner de meilleurs résultats commerciaux grâce à des combinaisons de paramètres.

  4. Une grande adaptabilité: Cette stratégie convient à la plupart des stocks et des délais et a été vérifiée sur divers marchés.

  5. Facile à mettre en œuvre: Cette stratégie ne nécessite que des indicateurs de moyenne mobile simples, consomme peu de ressources, est facile à programmer et a de faibles coûts d'application pratique.

Risques liés à la stratégie

Cette stratégie comporte également certains risques, principalement concentrés dans les domaines suivants:

  1. Risque d'inversion de tendance: Toute stratégie de tendance ne peut pas déterminer parfaitement les points d'inversion de tendance, et elle est condamnée à subir des pertes plus importantes lorsque la tendance réelle s'inverse.

  2. Risque de suroptimisation: L'optimisation des paramètres à l'extrême peut également conduire à une suradaptation de la stratégie aux données historiques, ce qui réduira la stabilité et l'effet pratique de la stratégie.

  3. Risque d'événement cygne noir: des événements majeurs inattendus briseront le modèle de tendance des prix d'origine, provoquant l'échec de l'indicateur de moyenne mobile, nécessitant une intervention manuelle ou des paramètres de stop loss pour contrôler les pertes.

Pour faire face aux risques susmentionnés, nous pouvons optimiser les aspects suivants:

  1. Introduisez des indicateurs supplémentaires pour déterminer les points de basculement des prix.

  2. Il est également possible d'introduire le MACD et d'autres indicateurs de jugement auxiliaires.

  3. Effectuer des formations et des essais multi-groupes sur les combinaisons de paramètres et sélectionner des combinaisons avec une bonne stabilité et un effet pratique.

Directions pour l'optimisation de la stratégie

Il y a aussi quelques directions dans lesquelles cette stratégie peut être optimisée:

  1. Mettre en place des mécanismes d'arrêt des pertes: définir un stop loss mobile ou un stop loss en pourcentage, qui peut arrêter activement les pertes lorsque les tendances s'inversent pour éviter des pertes excessives.

  2. Indicateurs combinés du volume des transactions: Par exemple, le volume des transactions, ce qui peut éviter de mauvais signaux lorsque le volume des transactions s'accroît à un tournant des prix.

  3. Optimisation auto-adaptative par paramètre: Permettre aux paramètres des indicateurs de s'adapter en fonction des changements du marché en temps réel, plutôt que des paramètres statiques fixes, ce qui peut grandement améliorer la stabilité des stratégies.

  4. Introduire l'apprentissage automatique: Utiliser des algorithmes d'apprentissage automatique pour analyser de grandes quantités de données historiques afin de déterminer les paramètres des moyennes mobiles et de l'ADX, et même prédire les mouvements de prix futurs.

  5. Optimisation du cycle croisé: Les paramètres des différents cycles de négociation peuvent être définis différemment et la configuration optimale pour chaque cycle peut être testée.

Résumé

En général, la stratégie de suivi des tendances des moyennes mobiles doubles est une idée de stratégie mature et stable. Cette stratégie capture les tendances des prix à moyen et long terme via le système EMA double, et a l'indicateur ADX pour filtrer les signaux, ce qui peut capturer efficacement les tendances des prix des actions et éviter les interférences du bruit du marché à court terme. En même temps, cette stratégie comporte également certains risques, nécessitant l'optimisation des combinaisons de paramètres et des méthodes de stop loss, et peut même introduire plus d'indicateurs auxiliaires et d'algorithmes d'apprentissage automatique pour améliorer la stabilité de la stratégie. En résumé, la stratégie de suivi des tendances des moyennes mobiles doubles a un bon équilibre, et est une idée de stratégie quantitative adaptée aux investisseurs à moyen et long terme.


/*backtest
start: 2022-12-14 00:00:00
end: 2023-11-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Kitaec Strategy4", shorttitle = "Kitaec str4", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
len = input(14, defval=14, minval=1, maxval=1000, title="Smoothing")
len2 = input(14, defval=14, minval=1, maxval=1000, title="Smoothing2")
len3=input(550)
src = close
ema1=ema(src, len)
ema2=ema(ema1, len2)
d=ema1-ema2
zlema=ema1+d

ema21=ema(src, (len/3)*2)
ema22=ema(ema21, (len2/3)*2)
d2=ema21-ema22
zlema2=ema21+d2

ema31=ema(src, len3)
ema32=ema(ema21, len3)
d3=ema31-ema32
zlema3=ema31+d2

fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//MAs
//ma1 = security(tickerid, "60", vwma(src, len)[1])
//ma2 = security(tickerid, "120", vwma(src, len)[1])
//plot(ma1, linewidth = 2, color = blue, title = "MA")
//plot(ma2, linewidth = 2, color = red, title = "MA2")

// ADX
lenadx = 14
lensig = 14
limadx = 18

up = change(high)
down = -change(low)
trur = rma(tr, lenadx)
plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, lenadx) / trur)
minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, lenadx) / trur)
sum = plus + minus 
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), lensig)
adx2 = ema(adx, 14)
adx2i = ema(adx2,14)
dadx2 = adx2 - adx2i
zladx2 = adx2 + dadx2
plus2 = ema(plus, 14)
plus2i = ema (plus2, 14)
dplus2 = plus2 - plus2i
zlplus2 = plus2 + dplus2

minus2 = ema(minus, 14)
minus2i = ema (minus2, 14)
dminus2 = minus2 - minus2i
zlminus2 = minus2 + dminus2

vwma = vwma(close, 150)
vwma2 = ema(vwma, 9)
vwma2i = ema(vwma2, 9)
dvwma2 = vwma2 - vwma2i
zlvwma2 = vwma2 + dvwma2


rmax=rma(src, len)
rmax2=rma(rmax, len2)
rmd=rmax-rmax2
zlrmax=rmax+rmd
rmaxz=rma(src, (len/3)*2)
rmaxz2=rma(rmaxz, (len2/3)*2)
rmzd=rmaxz-rmaxz2
zlrmaxz=rmaxz+rmzd
rmaxcol2=zlrmaxz[1] > zlema2[1] ? red:lime
rmaxcol= zlrmax[1] > zlema[1] ? red:lime


rmazlema3=rma(zlema3, 100)
plot(rmazlema3, color=gray, linewidth=2)
plot(zlema, color=green)
plot(zlema2, color=yellow)
plot(zlema3, color=teal, linewidth=2)
plot(ema2, color=na)
plot(rmax, color=rmaxcol2, linewidth=3)
plot(zlrmax, color=rmaxcol, linewidth=3)


//Trading
size = strategy.position_size
lot = 0.0 
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]

if zlrmax[1] < zlema[1]
    strategy.entry("Buy", strategy.long, needlong ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
if zlrmax[1] > zlema[1]
    strategy.entry("Sell", strategy.short, needshort ? lot : 0, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))


Plus de