Les ressources ont été chargées... Je charge...

Stratégie de rejet de la MA avec filtre ADX

Auteur:ChaoZhang est là., Date: 2024-05-17 10h35 et 58 min
Les étiquettes:ADX- Je vous en prie.La WMA

img

Résumé

Cette stratégie utilise plusieurs moyennes mobiles (MA) comme principaux signaux de négociation et intègre l'indice de direction moyen (ADX) comme filtre. L'idée principale derrière la stratégie est d'identifier les opportunités potentielles longues et courtes en comparant les relations entre le MA rapide, le MA lent et le MA moyen. Simultanément, l'indicateur ADX est utilisé pour filtrer les environnements de marché avec une force de tendance suffisante, améliorant la fiabilité des signaux de négociation.

Principe de stratégie

  1. Calculez la moyenne de la vitesse, la moyenne de la vitesse et la moyenne de la vitesse.
  2. Identifier les niveaux longs et courts potentiels en comparant le prix de clôture avec le MA lent.
  3. Confirmer les niveaux longs et courts en comparant le prix de clôture avec le MA rapide.
  4. Calculer manuellement l'indicateur ADX pour mesurer la force de la tendance.
  5. Générer un signal d'entrée long lorsque le MA rapide dépasse le MA moyen, que l'ADX dépasse un seuil fixé et qu'un niveau long est confirmé.
  6. Générer un signal d'entrée court lorsque le MA rapide dépasse le MA moyen, que l'ADX dépasse un seuil fixé et qu'un niveau court est confirmé.
  7. Générer un signal de sortie long lorsque le prix de clôture dépasse le niveau de l'AM lent; générer un signal de sortie court lorsque le prix de clôture dépasse le niveau de l'AM lent.

Les avantages de la stratégie

  1. L'utilisation de plusieurs indicateurs de marché permet une capture plus complète des tendances du marché et des changements de dynamique.
  2. En comparant les relations entre l'AM rapide, l'AM lent et l'AM moyen, les opportunités commerciales potentielles peuvent être identifiées.
  3. L'utilisation de l'indicateur ADX comme filtre permet d'éviter la génération de faux signaux excessifs sur les marchés agités, améliorant ainsi la fiabilité des signaux de négociation.
  4. La logique de la stratégie est claire et facile à comprendre et à mettre en œuvre.

Risques stratégiques

  1. Dans les situations où la tendance n'est pas claire ou où le marché est instable, la stratégie peut générer de nombreux faux signaux, conduisant à des transactions et des pertes fréquentes.
  2. La stratégie repose sur des indicateurs à la traîne tels que le MA et l'ADX, qui pourraient manquer des opportunités de formation de tendances précoces.
  3. Le rendement de la stratégie est fortement influencé par les paramètres définis (par exemple, longueur des MA et seuil ADX), ce qui nécessite une optimisation en fonction des différents marchés et instruments.

Directions d'optimisation de la stratégie

  1. Considérez l'incorporation d'autres indicateurs techniques, tels que le RSI et le MACD, afin d'améliorer la fiabilité et la diversité des signaux de trading.
  2. Définir différentes combinaisons de paramètres pour différents environnements de marché afin de s'adapter aux changements du marché.
  3. Mettre en place des mesures de gestion des risques, telles que le stop-loss et le dimensionnement des positions, pour contrôler les pertes potentielles.
  4. Combiner l'analyse fondamentale, telle que les données économiques et les changements de politique, pour obtenir une perspective de marché plus complète.

Résumé

La stratégie de rejet de MA avec le filtre ADX utilise plusieurs MA et l'indicateur ADX pour identifier les opportunités de trading potentielles et filtrer les signaux de trading de mauvaise qualité.


/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © gavinc745

//@version=5
strategy("MA Rejection Strategy with ADX Filter", overlay=true)

// Input parameters
fastMALength = input.int(10, title="Fast MA Length", minval=1)
slowMALength = input.int(50, title="Slow MA Length", minval=1)
averageMALength = input.int(20, title="Average MA Length", minval=1)
adxLength = input.int(14, title="ADX Length", minval=1)
adxThreshold = input.int(20, title="ADX Threshold", minval=1)

// Calculate moving averages
fastMA = ta.wma(close, fastMALength)
slowMA = ta.wma(close, slowMALength)
averageMA = ta.wma(close, averageMALength)

// Calculate ADX manually
dmPlus = high - high[1]
dmMinus = low[1] - low
trueRange = ta.tr

dmPlusSmoothed = ta.wma(dmPlus > 0 and dmPlus > dmMinus ? dmPlus : 0, adxLength)
dmMinusSmoothed = ta.wma(dmMinus > 0 and dmMinus > dmPlus ? dmMinus : 0, adxLength)
trSmoothed = ta.wma(trueRange, adxLength)

diPlus = dmPlusSmoothed / trSmoothed * 100
diMinus = dmMinusSmoothed / trSmoothed * 100
adx = ta.wma(math.abs(diPlus - diMinus) / (diPlus + diMinus) * 100, adxLength)

// Identify potential levels
potentialLongLevel = low < slowMA and close > slowMA
potentialShortLevel = high > slowMA and close < slowMA

// Confirm levels
confirmedLongLevel = potentialLongLevel and close > fastMA
confirmedShortLevel = potentialShortLevel and close < fastMA

// Entry signals
longEntry = confirmedLongLevel and ta.crossover(fastMA, averageMA) and adx > adxThreshold
shortEntry = confirmedShortLevel and ta.crossunder(fastMA, averageMA) and adx > adxThreshold

// Exit signals
longExit = ta.crossunder(close, slowMA)
shortExit = ta.crossover(close, slowMA)

// Plot signals
plotshape(longEntry, title="Long Entry", location=location.belowbar, style=shape.triangleup, size=size.small, color=color.green)
plotshape(shortEntry, title="Short Entry", location=location.abovebar, style=shape.triangledown, size=size.small, color=color.red)

// Plot moving averages and ADX
plot(fastMA, title="Fast MA", color=color.blue)
plot(slowMA, title="Slow MA", color=color.red)
plot(averageMA, title="Average MA", color=color.orange)
// plot(adx, title="ADX", color=color.purple)
// hline(adxThreshold, title="ADX Threshold", color=color.gray, linestyle=hline.style_dashed)

// Execute trades
if longEntry
    strategy.entry("Long", strategy.long)
else if longExit
    strategy.close("Long")

if shortEntry
    strategy.entry("Short", strategy.short)
else if shortExit
    strategy.close("Short")

Relationnée

Plus de