Stratégie des indicateurs de dynamique ADX、RSI

Auteur:ChaoZhang est là., Date: 2023-12-11 16h06 et 30 min
Les étiquettes:

img

Résumé

Cette stratégie utilise les indicateurs de dynamique ADX, RSI et Bollinger Bands pour déterminer les tendances du marché et les situations de surachat/survente, afin de mettre en œuvre un trading automatisé pour acheter à bas prix et vendre à haut prix.

Principes de stratégie

  1. L'indicateur ADX détermine la tendance.

  2. L'indicateur RSI détermine les niveaux de surachat/survente. Lorsque l'indicateur RSI dépasse 30, il indique un marché en survente. Lorsque l'indicateur RSI dépasse 70, il indique un marché en surachat.

  3. Les bandes de Bollinger déterminent la consolidation et la rupture. Lorsque le prix de clôture dépasse la bande supérieure, il indique la fin de la consolidation et la rupture à la hausse. Lorsque le prix de clôture dépasse la bande inférieure, il indique la fin de la consolidation et la rupture à la baisse.

Sur la base des indicateurs ci-dessus, la stratégie de négociation est définie comme suit:

Condition d' achat:

  1. ADX>32, dans la tendance
  2. Le RSI dépasse 30, survendu
  3. Prix de clôture inférieur à la bande inférieure de Bollinger, fin de la consolidation de la tendance à la baisse

Condition de vente:

  1. ADX>32, dans la tendance
  2. L'indice des taux de rebond est inférieur à 70, suracheté
  3. Prix de clôture au-dessus de la bande supérieure de Bollinger, fin de la consolidation de la tendance haussière

Analyse des avantages

Cette stratégie utilise plusieurs indicateurs pour déterminer les conditions du marché, évitant ainsi la probabilité d'erreur en s'appuyant sur un seul indicateur.

Comparée à l'utilisation d'indicateurs de tendance seuls, cette stratégie peut capturer les opportunités à court terme de manière plus rapide. Comparée à l'utilisation uniquement d'oscillateurs, cette stratégie peut mieux saisir la direction de la tendance. Par conséquent, elle conserve l'avantage de suivre les tendances, tout en ayant la flexibilité du trading de renversement moyen. C'est une stratégie quantitative potentiellement efficace.

Analyse des risques

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

  1. Risque de faux signaux émis par les indicateurs: les indicateurs peuvent échouer lorsque les marchés connaissent des événements extrêmes.

  2. Risque d'arrêt trop serré: les fluctuations à court terme du marché peuvent éliminer la position si les arrêts sont trop serrés.

  3. Risque de suradaptation: si les paramètres d'indicateurs sont simplement adaptés aux données historiques, la stabilité serait discutable et pourrait ne pas s'adapter à l'évolution de la dynamique du marché.

Mesures de gestion des risques:

  1. Intervenir manuellement dans des conditions de marché anormales pour mettre en pause la stratégie et éviter les pertes dues à de faux signaux.

  2. Définir une distance d'arrêt raisonnable, en combinant avec les moyennes mobiles pour déterminer les niveaux d'arrêt, éviter d'être arrêté prématurément.

  3. Introduire le module de réglage des paramètres, optimiser dynamiquement les paramètres en utilisant l'analyse de marche pour assurer la robustesse.

Directions d'optimisation

Les principaux aspects à améliorer pour cette stratégie sont les suivants:

  1. Optimiser les paramètres des indicateurs, en utilisant des algorithmes d'apprentissage automatique adaptés à chaque marché.

  2. L'ingénierie des fonctionnalités, l'introduction de plus d'indicateurs techniques et de modèles de formation tels que SVM pour améliorer la précision du signal.

  3. Incorporer des stratégies de rupture basées sur les caractéristiques de chaque marché en utilisant des canaux de prix, des supports/résistances, etc. pour renforcer la stabilité.

  4. Optimiser les mécanismes de prise de profit et de stop-loss en introduisant des trailing stops, des moving stops, etc., afin de maximiser les bénéfices et de contrôler efficacement les risques.

Conclusion

Cette stratégie de trading quantitative à moyen terme utilise plusieurs indicateurs techniques comme l'ADX, le RSI et les bandes de Bollinger pour déterminer les conditions du marché et effectuer des transactions lorsque des changements structurels importants sont identifiés.


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

//@version=4
strategy("DAX Shooter 5M Strategy", overlay=true)

//Creo ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
th = input(title="threshold", type=input.integer, defval=20)
dirmov(len) =>
    up = change(high)
    down = -change(low)
    plusDM = na(up) ? na : up > down and up > 0 ? up : 0
    minusDM = na(down) ? na : down > up and down > 0 ? down : 0
    truerange = rma(tr, len)

    plus = fixnan(100 * rma(plusDM, len) / truerange)
    minus = fixnan(100 * rma(minusDM, len) / truerange)

    [plus, minus]

adx(dilen, adxlen) =>
    [plus, minus] = dirmov(dilen)
    sum = plus + minus
    adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
    adx


[plus, minus] = dirmov(dilen)
sig = adx(dilen, adxlen)

//Creo RSI

src = close
len = input(7, minval=1, title="Periodo RSI")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)
bandainf = input(30, title="Livello Ipervenduto")
bandasup = input(70, title="Livello Ipercomprato")


//Creo Bande di Bollinger

source = close
length = input(50, minval=1, title="Periodo BB")
mult = input(2.0, minval=0.001, maxval=50, title="Dev BB")

basis = sma(source, length)
dev = mult * stdev(source, length)

upper = basis + dev
lower = basis - dev

plot(basis, color=color.white)
p1 = plot(upper, color=color.aqua)
p2 = plot(lower, color=color.aqua)
fill(p1, p2)

//Stabilisco regole di ingresso

if crossover(rsi, bandainf) and adx(dilen, adxlen) > 32 and low < lower
    strategy.entry("COMPRA", strategy.long, limit=upper, oca_name="DaxShooter", comment="COMPRA")
else
    //strategy.exit("exit", "COMPRA", loss = 90) 
    strategy.cancel(id="COMPRA")

if crossunder(rsi, bandasup) and adx(dilen, adxlen) > 32 and high > upper
    strategy.entry("VENDI", strategy.short, limit=lower, oca_name="DaxShooter",comment="VENDI")
else
    //strategy.exit("exit", "VENDI", loss = 90)
    strategy.cancel(id="VENDI")

//Imposto gli alert
buy= crossover(rsi, bandainf) and adx(dilen, adxlen) > 32 and low < lower
sell= crossunder(rsi, bandasup) and adx(dilen, adxlen) > 32 and high > upper
alertcondition(buy, title='Segnale Acquisto', message='Compra DAX')
alertcondition(sell, title='Segnale Vendita', message='Vendi DAX')

//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)


Plus de