Stratégie de trading avec filtre ADX pour rupture de tendance


Date de création: 2024-01-04 17:12:30 Dernière modification: 2024-01-04 17:12:30
Copier: 0 Nombre de clics: 924
1
Suivre
1621
Abonnés

Stratégie de trading avec filtre ADX pour rupture de tendance

Aperçu

Cette stratégie est une stratégie de négociation en ligne courte qui utilise l’indicateur ADX pour filtrer les signaux de rupture. Lorsque le prix franchit la bande de Bollinger Bollinger et que l’ADX est en baisse, vide; lorsque le prix franchit la bande de Bollinger Bollinger et que l’ADX est en hausse, faites plus.

Principe de stratégie

Cette stratégie utilise la Bollinger Bollinger Band comme principal signal de rupture. La descente de la Bollinger Band représente deux fois le décalage standard du prix, et la rupture de la Bollinger Band représente généralement l’entrée du prix dans une phase de forte tendance. De plus, afin d’éviter les fausses ruptures, la stratégie ajoute l’indicateur ADX comme condition de filtrage.

En particulier, cette stratégie utilise la courbe de Brin pour calculer le prix de clôture de 33 cycles de longueur. La courbe de Brin est la moyenne mobile simple de 33 cycles du prix de clôture, la courbe supérieure et la courbe inférieure étant respectivement les deux écarts standards de la courbe moyenne.

Analyse des avantages

Il s’agit d’une stratégie innovante qui combine des signaux de filtrage de tendance et de fréquence avec les avantages suivants:

  1. L’utilisation de la courbe de Brin pour déterminer les points de rupture de tendance est plus conforme aux habitudes de la plupart des traders.
  2. L’ajout d’un filtre conditionnel ADX peut réduire les pertes causées par les fausses ruptures pendant les chocs de tendance.
  3. La stratégie est simple, facile à comprendre et à optimiser.
  4. Le stop-loss est automatiquement réglé, sans intervention humaine, et convient aux transactions algorithmiques.

Analyse des risques

Cette stratégie présente aussi des risques:

  1. Une mauvaise configuration des paramètres de la bande de Bryn peut entraîner une surfréquence des signaux et une augmentation des coûts de transaction.
  2. Une mauvaise configuration de l’ADX peut également filtrer certains signaux valides.
  3. La distance d’arrêt peut être trop grande et les pertes individuelles augmenter.

Pour réduire ces risques, nous pouvons ajuster les paramètres de la bande de Brin, réduire la portée de la bande de Brin; ajuster les paramètres de la période ADX, éviter les signaux de défilement excessifs; réduire de manière appropriée la distance d’arrêt, contrôler les pertes individuelles. Bien sûr, ces optimisations doivent être vérifiées par des tests de rétroaction, afin d’éviter une suradaptation.

Direction d’optimisation

Il y a encore de la place pour optimiser cette stratégie:

  1. Il est possible de tester les données de différents marchés pour trouver la combinaison optimale de paramètres.
  2. Les signaux peuvent être filtrés en combinaison avec d’autres indicateurs, tels que le volume des transactions, la moyenne mobile, etc.
  3. L’optimisation automatique des paramètres peut être réalisée par des méthodes d’apprentissage automatique.
  4. On peut considérer les stop-loss et les stops dynamiques.

Résumer

Cette stratégie est globalement une stratégie de filtrage de rupture simple et pratique. En jugeant la tendance par la courbe de Bryn, le signal de filtrage ADX peut éviter le bruit du marché oscillant dans une certaine mesure et saisir les opportunités de tendance. Il y a encore beaucoup de place pour l’optimisation et cela mérite d’être testé et amélioré.

Code source de la stratégie
/*backtest
start: 2023-12-27 00:00:00
end: 2024-01-03 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Hizbullah XAUUSD Sniper", overlay=true)

Price = close

Length = input(33)
Mult = input(2)
Basis = sma(Price, Length)
StdDev = Mult * stdev(Price, Length)
Upper = Basis + StdDev
Lower = Basis - StdDev

ADX_Length = input(4)
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
SmoothedTrueRange = sma(TrueRange, ADX_Length)
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0
SmoothedDirectionalMovementPlus = sma(DirectionalMovementPlus, ADX_Length)
SmoothedDirectionalMovementMinus = sma(DirectionalMovementMinus, ADX_Length)
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus - DIMinus) / (DIPlus + DIMinus)*100
SmoothedADX1 = ema(DX, input(8))
SmoothedADX2 = ema(DX, input(15))

Condition1 = crossunder(Price, Upper) and SmoothedADX1 < SmoothedADX2

Take_Profit = input(800)
Stop_Loss = input(400)

strategy.entry("ShortEntry", true, when = Condition1)
strategy.exit("ShortExit", "ShortEntry", profit = Take_Profit, loss = Stop_Loss)