Stratégie de filtre ADX EMA Triple Super Trend


Date de création: 2023-09-18 14:02:12 Dernière modification: 2023-09-18 14:02:12
Copier: 1 Nombre de clics: 1696
1
Suivre
1617
Abonnés

Aperçu

Il s’agit d’une stratégie de trading quantitative qui combine la triple hypertrend et les indicateurs EMA et ADX. Elle utilise le système de la triple hypertrend pour émettre des signaux de trading et combine EMA et ADX comme conditions de filtrage pour contrôler la fréquence des transactions et améliorer la qualité des signaux de trading.

Principe de stratégie

  • Un système hypertrend utilisant trois groupes de paramètres différents génère un signal de transaction lorsque les trois groupes de hypertrends sont alignés.
  • Utilisez l’EMA comme filtre de tendance, ne faites plus que lorsque le prix de clôture est supérieur à l’EMA et faites moins que lorsque le prix de clôture est inférieur à l’EMA.
  • Utilisez l’ADX comme un filtre de tendance forte et faible, et ne négociez que lorsque l’ADX est supérieur à la limite définie.
  • La possibilité de choisir de réintégrer ou non, de contrôler la rentabilité et de réduire le risque de perte.

Plus précisément, les conditions d’entrée longues pour une triple tendance supérieure sont converties en haussiers, le prix de clôture est supérieur à l’EMA, l’ADX est supérieur à la valeur définie et les positions ouvertes sont plus élevées; les conditions d’entrée courtes pour une triple tendance supérieure sont converties en négatives, le prix de clôture est inférieur à l’EMA, l’ADX est supérieur à la valeur définie et les positions ouvertes sont vides. Les conditions de position de plage sont converties en positions négatives pour chaque tendance supérieure et la position actuelle est levée.

La stratégie consiste à tracer simultanément les lignes de résistance de soutien de trois groupes de tendances hypertrend, afin de déterminer la direction de la tendance.

Analyse des avantages

  • Le triple système de super-trend permet de filtrer les fausses percées et d’améliorer la précision d’entrée.
  • Le double filtrage EMA et ADX réduit les pertes causées par le whipsaw et améliore la capacité d’arrêt des pertes.
  • La rentabilité de la stratégie peut être adaptée en fonction des préférences de risque individuelles.
  • Les lignes de résistance, en combinaison avec les lignes de résistance visuelles, permettent de déterminer la direction de la tendance.

Analyse des risques

  • Il y a un retard dans les indicateurs comme la tendance hyper, et il peut y avoir des entrées tardives et des sorties anticipées.
  • Les conditions de filtrage trop strictes peuvent entraîner des opportunités manquées.
  • Dans les marchés à volume réduit, il est facile de se forger une whipsaw et de perdre.
  • L’accès à la réinitialisation augmenterait la fréquence des transactions et le coût des points de glissement.

Il est possible de réduire ces risques en ajustant les combinaisons de paramètres, en optimisant les conditions de filtrage, etc. En même temps, il est nécessaire de contrôler la taille de la position et de fermer strictement les pertes pour faire face à des conditions de marché incertaines.

Direction d’optimisation

Cette stratégie peut être optimisée dans les domaines suivants:

  • Testez différentes combinaisons de paramètres pour trouver les meilleurs paramètres de super-tendance et d’EMA
  • Optimiser le seuil de l’ADX pour réduire le faux signal.
  • Ajouter des filtres sur d’autres indicateurs tels que le taux de volatilité, le volume des transactions, etc.
  • Optimiser les paramètres pour les différentes variétés afin d’améliorer l’adaptabilité.
  • Créer des mécanismes d’arrêt des pertes dynamiques et de contrôle actif des risques
  • Pour trouver de meilleures règles d’entrée et de sortie, essayez l’apprentissage automatique.

Résumer

Cette stratégie exploite pleinement les avantages du triple système de super-trend et est complétée par un double filtrage EMA et ADX, ce qui permet d’améliorer efficacement la qualité du signal de négociation et de contrôler le risque. La robustesse et l’adaptabilité de la stratégie peuvent être encore améliorées par des méthodes telles que l’optimisation des paramètres, l’augmentation des conditions de filtrage et l’arrêt dynamique.

Code source de la stratégie
/*backtest
start: 2023-08-18 00:00:00
end: 2023-09-17 00:00:00
period: 2h
basePeriod: 15m
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/
// ©kunjandetroja


//@version=5
strategy('Triple Supertrend with EMA and ADX', overlay=true)

m1 = input.float(1,"ATR Multi",minval = 1,maxval= 6,step=0.5,group='ST 1')
m2 = input.float(2,"ATR Multi",minval = 1,maxval= 6,step=0.5,group='ST 2')
m3 = input.float(3,"ATR Multi",minval = 1,maxval= 6,step=0.5,group='ST 3')
p1 = input.int(10,"ATR Multi",minval = 5,maxval= 25,step=1,group='ST 1')
p2 = input.int(15,"ATR Multi",minval = 5,maxval= 25,step=1,group='ST 2')
p3 = input.int(20,"ATR Multi",minval = 5,maxval= 25,step=1,group='ST 3')
len_EMA = input.int(200,"EMA Len",minval = 5,maxval= 250,step=1)
len_ADX = input.int(14,"ADX Len",minval = 1,maxval= 25,step=1)
len_Di = input.int(14,"Di Len",minval = 1,maxval= 25,step=1)
adx_above = input.float(25,"adx filter",minval = 1,maxval= 50,step=0.5)
var bool long_position = false
adx_filter = input.bool(false, "Add Adx & EMA filter")
renetry = input.bool(true, "Allow Reentry")

f_getColor_Resistance(_dir, _color) =>
    _dir == 1 and _dir == _dir[1] ? _color : na
f_getColor_Support(_dir, _color) =>
    _dir == -1 and _dir == _dir[1] ? _color : na

[superTrend1, dir1] = ta.supertrend(m1, p1)
[superTrend2, dir2] = ta.supertrend(m2, p2)
[superTrend3, dir3] = ta.supertrend(m3, p3)
EMA = ta.ema(close, len_EMA)
[diplus,diminus,adx] = ta.dmi(len_Di,len_ADX)

// ADX Filter
adxup = adx > adx_above and close > EMA
adxdown = adx > adx_above and close < EMA

sum_dir = dir1 + dir2 + dir3

dir_long = if(adx_filter == false)
    sum_dir == -3
else
    sum_dir == -3 and adxup
dir_short = if(adx_filter == false)
    sum_dir == 3
else
    sum_dir == 3 and adxdown
Exit_long = dir1 == 1 and dir1 != dir1[1]
Exit_short = dir1 == -1 and dir1 != dir1[1]

// BuySignal = dir_long and dir_long != dir_long[1]
// SellSignal = dir_short and dir_short != dir_short[1]
// if BuySignal
//     label.new(bar_index, low, 'Long', style=label.style_label_up)
// if SellSignal
//     label.new(bar_index, high, 'Short', style=label.style_label_down)

longenter = if(renetry == false)
    dir_long and long_position == false
else
    dir_long
shortenter = if(renetry == false)
    dir_short and long_position == true
else
    dir_short
if longenter
    long_position := true
if shortenter
    long_position := false

strategy.entry('BUY', strategy.long, when=longenter)
strategy.entry('SELL', strategy.short, when=shortenter)   
strategy.close('BUY', Exit_long)
strategy.close('SELL', Exit_short)

buy1 = ta.barssince(dir_long)
sell1 = ta.barssince(dir_short)

colR1 = f_getColor_Resistance(dir1, color.red)
colS1 = f_getColor_Support(dir1, color.green)

colR2 = f_getColor_Resistance(dir2, color.orange)
colS2 = f_getColor_Support(dir2, color.yellow)

colR3 = f_getColor_Resistance(dir3, color.blue)
colS3 = f_getColor_Support(dir3, color.maroon)

plot(superTrend1, 'R1', colR1, linewidth=2)
plot(superTrend1, 'S1', colS1, linewidth=2)

plot(superTrend2, 'R1', colR2, linewidth=2)
plot(superTrend2, 'S1', colS2, linewidth=2)

plot(superTrend3, 'R1', colR3, linewidth=2)
plot(superTrend3, 'S1', colS3, linewidth=2)

// // Intraday only
// var int new_day = na
// var int new_month = na
// var int new_year = na
// var int close_trades_after_time_of_day = na

// if dayofmonth != dayofmonth[1]
//     new_day := dayofmonth
// if month != month[1]
//     new_month := month
// if year != year[1]
//     new_year := year
// close_trades_after_time_of_day := timestamp(new_year,new_month,new_day,15,15)

// strategy.close_all(time > close_trades_after_time_of_day)