Stratégie de négociation de tendance croisée ADX

Auteur:ChaoZhang est là., Date: 2023-12-08 15:49:12 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie combine l'indice de mouvement directionnel (ADX), l'indicateur de mouvement directionnel (DI +) et des moyennes mobiles rapides et lentes pour déterminer la direction du marché et la période de détention.

Principaux

La logique de base de cette stratégie est de générer des signaux d'achat lorsque la ligne +DI traverse au-dessus de la ligne ADX de bas en haut, et de générer des signaux de vente lorsque la ligne +DI traverse au-dessous de la ligne ADX de haut en bas. Par conséquent, cette stratégie repose sur le croisement entre DI et ADX pour déterminer les tendances du marché et les points d'inversion.

En particulier, un signal d'achat sera déclenché lorsque les conditions suivantes sont remplies:

  1. L'EMA rapide est supérieure à l'EMA lente
  2. La ligne +DI traverse la ligne ADX vers le haut
  3. La valeur ADX est inférieure au seuil de 30

Un signal de vente est déclenché lorsque les conditions suivantes sont remplies:

  1. La valeur ADX dépasse le seuil de 30
  2. La ligne +DI traverse la ligne ADX vers le bas

La stratégie intègre également une logique de stop loss pour quitter toutes les positions lorsque le prix tombe en dessous du niveau de stop loss.

Les avantages

La stratégie combine les indicateurs DI, ADX et moyennes mobiles pour déterminer efficacement les virages des tendances du marché.

  1. Utiliser les croisements DI et ADX pour déterminer avec précision les points d'entrée et de sortie
  2. Système de filtrage EMA rapide et lent pour déterminer la tendance globale du marché, évitant les mauvaises transactions
  3. Utilisez les valeurs ADX pour déterminer la force de la tendance, ne négociez que lorsque la tendance est faible, en évitant les fausses ruptures
  4. Incorporer un mécanisme de stop loss pour contrôler le risque à la baisse
  5. Conditions d'entrée strictes éviter d'acheter des tops et de vendre des bottes
  6. Des règles de sortie claires permettent de stopper les pertes et de réaliser des bénéfices en temps opportun

Les risques

Il y a quelques risques à prendre en compte avec cette stratégie:

  1. L'indicateur ADX a un effet de retard, pourrait manquer le meilleur moment pour les renversements de prix
  2. Plus de faux signaux peuvent se produire lorsque la volatilité du marché est élevée
  3. Les paramètres de l'EMA rapide et lente inappropriés pourraient entraîner des transactions manquantes ou filtrer des signaux valides
  4. Le niveau de stop loss trop élevé ne permet pas de contrôler efficacement le risque

Ces risques peuvent être résolus en optimisant les paramètres ADX et moyennes mobiles, en ajustant le niveau de stop loss, en ajoutant des filtres de confirmation, etc.

Des possibilités d'amélioration

Des améliorations supplémentaires sont possibles:

  1. Test ADX de différentes périodes de longueur pour trouver des combinaisons optimales
  2. Ajoutez d'autres indicateurs tels que le RSI, les bandes de Bollinger pour la confirmation du signal
  3. Utiliser des algorithmes d'apprentissage automatique pour optimiser automatiquement les paramètres et les règles
  4. Ajuster dynamiquement les niveaux de stop loss pour atténuer les risques au stade avancé
  5. Construire un modèle de notation multifactoriel pour renforcer les critères d'entrée et de sortie

Conclusion

En général, cette stratégie de tendance croisée ADX est assez stable, capable de capturer efficacement les renversements dès le début, mais le contrôle des risques est essentiel.


/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 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/
// © mohanee

//@version=4
//ADX strategy
SmoothedTrueRange=0.00
SmoothedDirectionalMovementPlus=0.00
SmoothedDirectionalMovementMinus=0.00


strategy(title="ADX strategy", overlay=false,pyramiding=3, default_qty_type=strategy.fixed, default_qty_value=3,    initial_capital=10000, currency=currency.USD)

len = input(11, title="ADX Length", minval=1)
threshold = input(30, title="threshold", minval=5)

fastEma=input(13, title="Fast EMA",minval=1, maxval=50)
slowEma=input(55, title="Slow EMA",minval=10, maxval=200)
stopLoss =input(8, title="Stop Loss",minval=1)   //


TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
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


SmoothedTrueRange:= nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange

SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus:= nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus

DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = sma(DX, len)

plot(DIPlus, color=color.green, title="DI+")
//plot(DIMinus, color=color.red, title="DI-")
plot(ADX, color=color.black, title="ADX")
hline(threshold, color=color.black, linestyle=hline.style_dashed)

fastEmaVal=ema(close,fastEma)
slowEmaVal=ema(close,slowEma)




//long condition
longCondition=  ADX < threshold  and crossover(DIPlus,ADX)  and fastEmaVal > slowEmaVal


barcolor(longCondition ? color.yellow: na)

strategy.entry(id="ADXLE", long=true,  when= longCondition  and strategy.position_size<1) 

barcolor(strategy.position_size>1 ? color.blue: na)
bgcolor(strategy.position_size>1 ? color.blue: na)



//Add
strategy.entry(id="ADXLE", comment="Add", long=true,  when= strategy.position_size>1 and close<strategy.position_avg_price and crossover(DIPlus,ADX) ) 


//calculate stop Loss
stopLossVal =  strategy.position_avg_price -  (strategy.position_avg_price*stopLoss*0.01)

strategy.close(id="ADXLE",comment="SL Exit",    when=close<stopLossVal)   //close all on stop loss


//exit condition
exitCondition=  ADX > threshold  and crossunder(DIPlus,ADX) // and fastEmaVal > slowEmaVal
strategy.close(id="ADXLE",comment="TPExitAll",    qty=strategy.position_size ,   when= exitCondition)   //close all     

Plus de