Stratégie de suivi de la tendance des moyennes mobiles

Auteur:ChaoZhang est là., Date: 2024-02-20 14:36:11 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie est construite sur la base de l'indicateur DMI en surveillant le croisement de +DI et -DI pour déterminer la direction de tendance des cours des actions, et en utilisant l'indicateur ADX pour identifier la force de la tendance, afin d'obtenir un suivi de la tendance.

Principe de stratégie

Cette stratégie utilise deux composantes de l'indicateur DMI: +DI et -DI. +DI mesure l'élan ascendant. Le croisement ascendant de +DI sur -DI indique un renforcement de l'élan ascendant. -DI mesure l'élan descendant. Le croisement descendant de -DI en dessous de +DI indique un renforcement de l'élan descendant.

Lorsque +DI dépasse -DI, une tendance haussière émerge et la stratégie va long. Après avoir entré dans la position, un stop-loss linéaire de trail traque un certain pourcentage du prix le plus élevé. Au fur et à mesure que le prix baisse, le prix du stop-loss baisse en conséquence, bloquant dans une certaine mesure certains des bénéfices antérieurs.

L'indicateur ADX peut être utilisé pour identifier la force de la tendance. Plus l'ADX est élevé, plus la tendance est prononcée. En tant que tel, la stratégie utilise l'ADX comme indicateur auxiliaire pour l'entrée, n'entrant dans une position que lorsque l'ADX est dans une certaine plage.

En résumé, cette stratégie capture les points d'inflexion des tendances des prix pour réaliser le suivi des tendances moyennes mobiles.

Analyse des avantages

Les principaux avantages de cette stratégie se traduisent par trois aspects:

  1. L'utilisation de l'indicateur DMI pour déterminer la direction des tendances des prix est précise et fiable.

  2. L'application de l'indicateur ADX pour identifier la force des tendances évite de fréquentes opérations sur des marchés instables, ce qui rend la stratégie plus robuste.

  3. Le mécanisme d'arrêt linéaire peut ajuster dynamiquement les positions d'arrêt-perte et quitter tôt lorsque les tendances s'inversent, en obtenant des profits partiels pour contrôler efficacement les risques.

  4. Les règles de stratégie sont simples et claires, faciles à comprendre et à mettre en œuvre, adaptées au trading algorithmique.

Analyse des risques

Les principaux risques de cette stratégie sont les suivants:

  1. La possibilité que l'indicateur DMI échoue sur certains marchés spéciaux.

  2. Le risque que le prix se situe en dessous du niveau d'arrêt de la perte avant de revenir à la baisse.

  3. Les paramètres ADX affectent directement les résultats du timing de la stratégie. Les performances seront affectées si elles sont trop élevées ou trop basses.

  4. La facilité d'être arrêté dans une tendance haussière en progression rapide en raison de la méthode de l'arrêt linéaire.

Les risques peuvent être encore réduits grâce à l'ajustement des paramètres, à des pertes d'arrêt strictes, à l'optimisation de l'architecture du programme, etc.

Directions d'optimisation

Cette stratégie peut être optimisée sous plusieurs aspects:

  1. Utiliser d'autres indicateurs comme le MACD, le KDJ pour un jugement auxiliaire afin d'améliorer la stabilité de la stratégie.

  2. Testez différentes méthodes de stop loss telles que les stops de trail de courbe, les stops de trail de temps, etc.

  3. Ajouter des mécanismes de dimensionnement des positions pour construire progressivement des positions après la confirmation de la direction de la tendance, améliorant ainsi la rentabilité.

  4. Incorporer des facteurs de haute fréquence, l'apprentissage automatique, etc. pour optimiser dynamiquement les paramètres DMI et ADX pour une intelligence plus élevée.

  5. Ajouter des modules de contrôle des risques programmatiques utilisant la budgétisation des risques, etc., pour gérer de manière stricte le tirage maximum.

Divers moyens peuvent être combinés pour améliorer efficacement l'efficacité, la stabilité et la sécurité de la stratégie.

Résumé

La logique générale de cette stratégie est claire et facile à comprendre, en utilisant l'indicateur DMI pour déterminer la direction de la tendance des prix et l'indicateur ADX comme un indicateur auxiliaire de la force de la tendance, avec des arrêts linéaires de suivi contrôlant efficacement le risque.


/*backtest
start: 2023-02-13 00:00:00
end: 2024-02-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
//@version=5
//1.0 - 240202 @caddjax

strategy(title = "+DI Crossover", overlay=false)

//DMI + ADX Chart w/ overlay
// © jrregencia

lensig = input.int(14, title="ADX Smoothing", minval=1, maxval=50)
len = input.int(6, minval=1, title="DI Length")
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
trur = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / trur)
minus = fixnan(100 * ta.rma(minusDM, len) / trur)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), lensig)
adxmax = input.int(50, title="ADX Max Buying Area", minval=1, maxval=100)
adxmin = input.int(0, title="ADX Min Buying Area", minval=0, maxval=99)



//DI cross alert
DIPcross = ta.crossover(plus, minus) ? plus : na
plotshape(DIPcross, style = shape.cross , color=color.white, location=location.absolute)

plot(adx, color=color.rgb(255, 238, 0, 23), title="ADX", linewidth=2)
p1 = plot(plus, color=color.rgb(16, 137, 0, 31), title="+DI", linewidth=1)
p2 = plot(minus, color=color.rgb(143, 82, 255, 25), title="-DI", linewidth=1)
adxmaxl = hline(adxmax, title="ADX MaxLine", color=color.silver, linestyle=hline.style_solid)
adxminl = hline(adxmin, title="ADX MinLine", color=color.silver, linestyle=hline.style_solid)
fill(p1, p2, title="Cloud Fill", color = plus > minus ? color.teal : color.red, transp=50)
fill(adxmaxl, adxminl, title="ADX Fill", color=color.silver, transp=90)

// Configure trail stop level with input options (optional)
longTrailPerc = input.float(3, title="Trail Long Loss (%)",
     minval=0.0, step=0.1) * 0.01
// Determine trail stop loss prices
longStopPrice = 0.0

// Determine entry condition
enterLong = ta.crossover(plus, minus) ? plus : na

longStopPrice := if strategy.position_size > 0
    stopValue = high[1] * (1 - longTrailPerc)
    math.max(stopValue, longStopPrice[1])
else
    0
// Submit entry orders
if enterLong
    strategy.entry("EL", strategy.long)    
// Submit exit orders for trail stop loss price
if strategy.position_size > 0
    strategy.exit("XL TRL STP", stop=longStopPrice)    

Plus de