Stratégie de reprise des canaux de la moyenne mobile ADX EFI 50

Auteur:ChaoZhang est là., Date: 19 septembre 2023 à 17h10
Les étiquettes:

Résumé

Cette stratégie utilise une combinaison du canal de moyenne mobile à 50 périodes, de l'indice directionnel ADX et de l'indice d'énergie EFI pour le trading de tendance.

La logique de la stratégie

  1. Calculer le canal de la moyenne mobile sur 50 périodes, la bande supérieure étant la moyenne mobile des prix élevés et la bande inférieure la moyenne mobile des prix bas.

  2. Calculer l'indice directionnel de l'ADX pour déterminer la force de la tendance, et ne considérer que les transactions pendant les tendances fortes (ADX>20).

  3. Calculer les indices énergétiques EFI à long terme (120 périodes) et à court terme (15 périodes). L'indice à long terme supérieur à 0 indique une tendance globale à la hausse de l'énergie, tandis que l'indice à court terme inférieur à 0 indique une baisse de la tendance à la hausse à court terme.

  4. Lorsque les indices EFI à long terme et à court terme donnent un signal d'achat et que le prix revient au canal de 50 MA, une position longue est prise.

  5. Lorsque les indices EFI à long et à court terme donnent un signal de vente et que le prix retombe sur le canal de 50 MA, une position courte est prise.

Analyse des avantages

Cette stratégie combine les signaux de tendance, d'élan et de recul pour filtrer efficacement la plupart des fausses ruptures.

  1. Le canal de 50 MA détermine clairement la direction principale de la tendance.

  2. L'indice ADX garantit que les échanges ne se déroulent que pendant les tendances claires, évitant ainsi les sautes d'humeur sur les marchés variés.

  3. L'indice EFI capture les surtensions énergétiques tendancielles pour les points d'entrée à faible risque.

  4. Attendre les retraits permet de meilleurs ratios risque-rendement.

  5. Les combinaisons d'indicateurs multiples filtrent efficacement les risques de fausse rupture.

Analyse des risques

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

  1. Les tendances fortes peuvent également avoir des retraits plus importants, ce qui nécessite des plages d'arrêt-perte plus larges.

  2. Dans les marchés à fourchette, l'IFI peut donner de faux signaux, ce qui nécessite une combinaison avec des indicateurs de filtrage des tendances tels que l'ADX.

  3. Les retraits trop profonds peuvent manquer les points d'entrée, nécessitant éventuellement un réglage MA.

  4. Un seul instrument de négociation ne permet pas de diversifier les risques systématiques du marché.

Directions d'optimisation

Cette stratégie peut être améliorée sous plusieurs aspects:

  1. Testez sur plus d'instruments pour trouver des paramètres universels optimaux.

  2. Ajouter la prise de profit via les pertes de stop-loss.

  3. Optimisation des paramètres des paramètres ADX, EFI et plus encore.

  4. Incorporer l'apprentissage automatique pour une détection de tendance robuste contre une fausse rupture.

  5. Ajouter une analyse multi-temporelle avec dimensionnement de la position entre les périodes.

  6. Évaluer davantage d'indicateurs de filtrage des tendances pour améliorer la qualité du signal.

Résumé

Dans l'ensemble, il s'agit d'une excellente stratégie de retrait de tendance pour les débutants, combinant les signaux de tendance, d'élan et de retrait pour filtrer les fausses ruptures.


/*backtest
start: 2023-08-19 00:00:00
end: 2023-09-18 00:00:00
period: 1h
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/
// © trent777brown

//@version=5
// strategy("adx efi 50 ema channel, trend pullback", overlay=true, margin_long=100, margin_short=100, currency=currency.USD, initial_capital= 100000, close_entries_rule="ANY")

//bollingerbands
[basis, upperband, lowerband]= ta.bb(ohlc4, 50, 3) 
[basis2, upperband2, lowerband2]= ta.bb(ohlc4, 50, 2)
psar= ta.sar(.1, .1, .09)
ema50= ta.ema(hlc3, 50) 
ema50hi= ta.ema(high, 50) 
ema50lo= ta.ema(low, 50) 
ema18= ta.wma(hlc3, 15)
wma9= ta.wma(open, 9) 
wma5= ta.wma(ohlc4, 5) 
ema34= ta.rma(hlc3, 10)
[macdline, signalline, histline]= ta.macd(hlc3, 5, 34, 5) 
[macdline2, signalline2, histline2]= ta.macd(hlc3, 15,70, 24) 
[diplus, diminus, adx]= ta.dmi(20, 20) 
[diplus2, diminus2, adx2]= ta.dmi(12, 12)
rsi= ta.rsi(hlc3, 14)
rsisma= ta.sma(rsi, 10) 
stoch= ta.stoch(close, high, low, 21)
k= ta.wma(stoch, 3)
d= ta.wma(k, 3)
trendline5= ta.wma(hlc3, 300) 
trendline9= ta.wma(open, 540) 
trendline18= ta.wma(open, 1080)
atr=ta.atr(14)
plot(psar, color=color.red, style=plot.style_circles)
plot(ema50, color=color.white, linewidth=4) 
plot(ema50hi, color=color.yellow, linewidth=4)
plot(ema50lo, color=color.yellow, linewidth=4)
plot(ema34, color=color.aqua, linewidth=4)
plot(wma9, color=color.gray, linewidth=4) 
plot(wma5, color=color.lime, linewidth=4) 
plot(trendline18, color=color.orange, linewidth=4) 
plot(upperband, color=color.navy, linewidth=4) 
plot(lowerband, color=color.navy, linewidth=4)
plot(upperband2, color=color.navy, linewidth=4)
plot(lowerband2, color=color.navy, linewidth=4)
plot(trendline9, color=color.maroon, linewidth=4)
plot(trendline5, color=color.yellow, linewidth=4)


efi = ta.rma(ta.change(close) * volume, 15)
efi2= ta.rma(ta.change(close) * volume, 120)

buy= efi2 > 0 and efi < 0 and efi[1] < efi  and adx >= 20 and open < ema50hi
sell= efi2 < 0 and efi > 0 and efi[1] > efi and adx >= 20 and open > ema50lo

//ell= rsi > 50 and ta.crossunder(wma5, wma9) and psar > high and ema18 <= ema50hi and macdline > 0 and macdline < signalline
//buy= ta.crossunder(close, ema50) and rsi < 50 and adx2 < adx2[1] and k < 25 and psar > high
//uy= rsi < 60 and ta.crossover(wma5, wma9)  and psar < low and ema18 >= ema50 and macdline2 > 0 and diplus2 < 30 // and histline2 < 0  
//buy=  ema18 > ema50 and ta.crossunder(rsi, 45) and open < ema50hi and adx2[3] < adx2 and diplus2 < 25 and macdline < 0  and adx < 10
//sell= ta.crossover(close, ema50) and rsi > 50 and adx2 < adx2[1] and k > 75 and psar < low
//ell= ema18 < ema50 and ta.crossover(rsi, 60) and open > ema50lo and diminus2 < 30 and macdline2 < 0 and adx2[2] < adx2 
//buy sell conditions 1
//buy= ta.crossover(wma5, ema18) and ema18 > ema50lo and diplus > 22 and diminus < 22 and adx > 15
//ell= ta.crossover(psar, high) and macdline2 < signalline2 and rsi < rsisma
//when conditions
buytrig= ema34 >= ema50lo
selltrig= ema34 <= ema50hi
//strategy
sl= low - atr * 8
tp= high +  atr * 4
sellsl= high + atr * 8
selltp= low - atr * 4
if(buy)
    strategy.entry("buy", strategy.long, when= buytrig)
    strategy.exit("exit buy", "buy", limit= tp, stop= sl)
    strategy.close("close", when= ta.crossunder(ema34, ema50lo))
if(sell)
    strategy.entry("sell", strategy.short, when= selltrig)
    strategy.exit("exit sell", "sell", limit= selltp, stop= sellsl)


Plus de