Stratégie de suivi de tendance à double moyenne mobile


Date de création: 2023-12-21 11:45:35 Dernière modification: 2023-12-21 11:45:35
Copier: 0 Nombre de clics: 653
1
Suivre
1621
Abonnés

Stratégie de suivi de tendance à double moyenne mobile

Aperçu

La stratégie de suivi des tendances des moyennes mobiles binaires est une stratégie de trading quantitatif qui suit les tendances des prix des actions. Cette stratégie utilise un système de moyennes mobiles binaires pour déterminer la direction de la tendance des prix et, combinée à la force de détermination de la tendance de l’indicateur ADX, pour capturer la tendance des prix sur la ligne moyenne et longue.

Principe de stratégie

La stratégie est basée sur un système de moyennes mobiles à deux indices pour déterminer la direction de la tendance des prix. La stratégie utilise deux paramètres différents, l’EMA rapide et l’EMA lent. L’EMA1 réagit plus rapidement aux changements de prix et l’EMA2 lent réagit plus lentement.

En outre, la stratégie introduit l’indicateur ADX pour déterminer la force de la tendance. L’ADX est utilisé pour déterminer la force de la tendance en calculant les fluctuations des prix.

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

  1. Faire plus sur la ligne rapide, faire moins sur la ligne lente
  2. Il n’est permis de faire plus de blanchiment que lorsque l’ADX est supérieur à 25.

Cela permet de filtrer efficacement les signaux inefficaces de tendances plus faibles et d’améliorer encore la stabilité du système de négociation.

Avantages stratégiques

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

  1. Capturer les tendances des prix des lignes moyennes et longuesLe système de moyenne double EMA permet de détecter efficacement les tendances à long terme des prix et d’éviter d’être dérangé par le bruit du marché à court terme.

  2. Filtre de fausse rupture: Déterminez la force de la tendance à l’aide de l’indicateur ADX, afin d’éviter les pertes inutiles causées par les fausses ruptures qui se produisent près des points de basculement de la tendance.

  3. Optimiser les paramètres avec de la place: Les combinaisons de paramètres de ligne rapide et lente, les paramètres ADX, etc. ont de la place pour l’optimisation et peuvent être utilisées pour obtenir de meilleurs résultats de négociation.

  4. Très adaptableCette stratégie s’applique à la plupart des actions et des périodes de temps et a été validée sur plusieurs marchés.

  5. Facile à mettre en œuvreLa stratégie ne nécessite que des moyennes simples, utilise peu de ressources, est facile à programmer et peu coûteuse à mettre en œuvre.

Risque stratégique

Cette stratégie comporte également des risques, principalement liés aux aspects suivants:

  1. Risque d’inversion de tendanceIl n’y a pas de stratégie de tendance parfaite pour déterminer le point de basculement, et il est inévitable de subir de lourdes pertes lorsque le véritable revirement de tendance arrive.

  2. Paramètres d’optimisation des risques excessifsL’optimisation des paramètres à l’extrême peut également conduire à une suradaptation des stratégies aux données historiques, ce qui réduit la stabilité et l’efficacité de la stratégie.

  3. Risque d’urgence: les événements majeurs perturbent la tendance des prix, ce qui entraîne une défaillance de l’indicateur de la moyenne mobile, nécessitant une intervention manuelle ou un arrêt de perte pour contrôler les pertes.

Nous pouvons optimiser pour ces risques de plusieurs façons:

  1. L’introduction d’indicateurs additionnels pour déterminer le point de basculement des prix. Par exemple, l’introduction de la quantité de transaction, qui augmente le volume de transaction en même temps que le basculement des prix.

  2. Une flexibilité appropriée des paramètres ADX assure une prise de risque au début de la tendance. Des indicateurs de jugement auxiliaires tels que le MACD peuvent également être introduits.

  3. Tester les combinaisons de paramètres en plusieurs groupes d’entraînement, en choisissant des paramètres qui sont à la fois stables et efficaces au combat. Éviter le risque d’optimisation excessive d’un seul ensemble de paramètres.

Orientation de l’optimisation de la stratégie

Il y a aussi des points d’amélioration dans cette stratégie:

  1. Présentation d’un mécanisme de stop loss: paramètre un stop mobile ou un stop en pourcentage, qui peut être activé lors d’un renversement de tendance, afin d’éviter une perte de position excessive.

  2. Indicateur du volume des transactionsPar exemple, le volume de transactions peut éviter les signaux erronés aux points de basculement des prix lorsque le volume de transactions augmente.

  3. Paramètres adaptés à l’optimisationL’utilisation de paramètres d’indicateurs capables de s’adapter à l’évolution du marché en temps réel, plutôt que de paramètres statiques fixes, peut considérablement améliorer la stabilité de la stratégie.

  4. La mise en place de l’apprentissage automatique: L’utilisation d’algorithmes d’apprentissage automatique pour analyser de grandes quantités de données historiques, déterminer les paramètres des moyennes mobiles et des ADX, et même prédire la future évolution des prix. C’est une direction dans laquelle la stratégie des moyennes mobiles évolue.

  5. Optimisation intercycliqueLes paramètres peuvent être configurés différemment selon les périodes de transaction, ce qui permet de tester la configuration optimale des paramètres pour chaque période.

Résumer

La stratégie de suivi de la tendance des doubles moyennes mobiles est globalement une stratégie mature et stable. La stratégie capture les tendances à long terme des prix à travers le système de doubles moyennes EMA et a un indicateur ADX pour filtrer les signaux, ce qui permet de saisir efficacement les tendances des prix des actions et d’éviter d’être perturbé par le bruit du marché à court terme.

Code source de la stratégie
/*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)))