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

Le système du Triple Dragon

Auteur:ChaoZhang est là., Date: 21 décembre 2023 à 11h56
Les étiquettes:

img

Résumé

Le système Triple Dragon est une stratégie de trading technique composite combinant l'indicateur Extended Price Volume Trend (EPVT), l'indicateur Donchian Channels et l'indicateur Parabolic SAR. Cette stratégie utilise les forces complémentaires de trois indicateurs pour identifier la direction de la tendance du marché et les signaux d'achat et de vente potentiels.

Principe de stratégie

Cette stratégie utilise d'abord l'EPVT et les canaux de Donchian pour déterminer la direction de la tendance du marché. Lorsque l'EPVT est au-dessus de sa ligne de base et que le prix est au-dessus du canal supérieur de Donchian, il suggère une tendance haussière. Inversement, lorsque l'EPVT est en dessous de sa ligne de base et que le prix est en dessous du canal inférieur de Donchian, il suggère une tendance à la baisse.

Après avoir identifié la direction de la tendance, cette stratégie introduit l'indicateur SAR parabolique pour identifier des points d'entrée et de sortie spécifiques.

Pour valider davantage les signaux, cette stratégie confirme également la direction de la tendance sur plusieurs délais afin d'éviter d'entrer sur le marché pendant les périodes de forte volatilité.

Analyse des avantages

Le plus grand avantage du système Triple Dragon est l'utilisation combinée de trois types différents d'indicateurs hautement complémentaires pour déterminer de manière plus complète et précise les tendances du marché.

  1. L'EPVT peut identifier avec précision les points de changement de tendance et la force de la tendance avec de bons fondamentaux;
  2. Les canaux de Donchian peuvent déterminer clairement la direction de la tendance et capter les tendances bien;
  3. Le SAR parabolique, lorsqu'il est combiné avec des indicateurs de tendance, permet d'identifier plus précisément les points d'entrée et de sortie.

En combinant les indicateurs de manière organique, le système Triple Dragon peut tirer pleinement parti des avantages de chaque indicateur, ce qui permet d'évaluer avec une grande précision les tendances à long, moyen et long terme, d'identifier plus précisément les points d'entrée et de sortie et d'obtenir des ratios risque-rendement supérieurs.

Analyse des risques

En tant que stratégie de portefeuille d'indicateurs, le système Triple Dragon présente des risques globaux maîtrisables, mais il y a encore quelques risques à noter:

  1. L'EPVT comporte des risques d'une mauvaise appréciation des fausses fuites et d'énormes revers;
  2. Les canaux de Donchian peuvent se rétrécir lors de consolidations latérales, ce qui augmente la probabilité d'un signal d'erreur;
  3. Les paramètres de paramètre SAR parabolique incorrects peuvent également avoir une incidence sur l'identification des points d'achat/de vente dans une certaine mesure.

Pour faire face aux risques susmentionnés, nous recommandons d'ajuster de manière appropriée les paramètres des indicateurs et d'utiliser d'autres indicateurs à des fins de jugement supplémentaire afin de réduire la probabilité d'échec d'un seul indicateur.

Optimisation de la stratégie

Il y a de la place pour une optimisation supplémentaire du système Triple Dragon:

  1. Des algorithmes d'apprentissage automatique peuvent être introduits pour l'optimisation automatisée des paramètres;
  2. Les indicateurs de volatilité peuvent être considérés comme améliorant la stabilité;
  3. Les indicateurs de sentiment peuvent être incorporés pour déterminer les fluctuations du sentiment public.

Grâce à l'optimisation algorithmique des paramètres, aux jugements combinés de plusieurs indicateurs et à l'analyse quantitative comportementale, il est possible d'améliorer encore la rentabilité et la stabilité du système Triple Dragon.

Conclusion

Le système Triple Dragon est une stratégie de portefeuille d'indicateurs techniques qui tire parti des forces complémentaires de l'EPVT, des canaux Donchian et du SAR parabolique pour déterminer les tendances du marché et identifier les opportunités de trading. Cette stratégie a des jugements précis, des risques contrôlables, plusieurs couches de validation et est un système efficace adapté aux investisseurs à moyen et long terme.


/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="TRIPLE DRAGON SYSTEM", overlay=true,default_qty_type = strategy.percent_of_equity,default_qty_value=100,initial_capital=1000,pyramiding=0,commission_value=0.01)
/////////////// DRAG-ON ///// EMA'S /////////////// 
emar = ta.ema(close,5)
plot(emar, color=color.blue, title="S-Fast EMA")
//EMAlengthTRF = input.int(200, minval=1,title = "EMA Filter")
//ematrf = ta.ema(close,EMAlengthTRF)
//plot(ematrf, "EMA-TREND FILTER", color=color.red,linewidth = 4)
/////////////// 1-DRAG-ON /////EXTENDED PRICE VOLUME TREND /////////////// 
lenght = input(200,"EPVT - Trend Lenght")   
var cumVol = 0.
cumVol += nz(volume)
if barstate.islast and cumVol == 0
    runtime.error("No volume is provided by the data vendor.")
src = close

vt = ta.cum(ta.change(src)/src[1]*volume)
upx = ta.highest(vt,lenght)
downx = ta.lowest(vt,lenght)
basex = (upx +downx)/2
VTX = vt - basex

/////////////// 2-DRAG-ON ///// DON TREND /////////////// 

length = input.int(200, minval=1, title = "Donchian Lenght")
lower = ta.lowest(length)
upper = ta.highest(length)
basis = math.avg(upper, lower)

updiff = upper - close
downdiff = lower - close
dontrend = -(updiff + downdiff)   

xupx = ta.highest(dontrend,length) >0 ? ta.highest(dontrend,length) : 0 

xdownx = ta.lowest(dontrend,length) < 0 ?ta.lowest(dontrend,length) :0 
xxbasisxx = math.avg(xdownx, xupx)

inversedragup = xupx[1]  
inversedragdown = xdownx[1]  
inversedragon = (inversedragup+inversedragdown)/2

/////////////// 3-DRAG-ON ///// SUPER SAR-X /////////////// 
start = input(0.02)
increment = input(0.02)
maximum = input(0.8)
entry_bars = input(1, title='Entry on Nth trend bar')

atr = ta.atr(14)

atr := na(atr) ? ta.tr : atr

psar = 0.0  // PSAR
af = 0.0  // Acceleration Factor
trend_dir = 0  // Current direction of PSAR
ep = 0.0  // Extreme point
trend_bars = 0

sar_long_to_short = trend_dir[1] == 1 and close <= psar[1]  // PSAR switches from long to short
sar_short_to_long = trend_dir[1] == -1 and close >= psar[1]  // PSAR switches from short to long

trend_change = barstate.isfirst[1] or sar_long_to_short or sar_short_to_long

// Calculate trend direction
trend_dir := barstate.isfirst[1] and close[1] > open[1] ? 1 : barstate.isfirst[1] and close[1] <= open[1] ? -1 : sar_long_to_short ? -1 : sar_short_to_long ? 1 : nz(trend_dir[1])

trend_bars := sar_long_to_short ? -1 : sar_short_to_long ? 1 : trend_dir == 1 ? nz(trend_bars[1]) + 1 : trend_dir == -1 ? nz(trend_bars[1]) - 1 : nz(trend_bars[1])

// Calculate  Acceleration Factor
af := trend_change ? start : trend_dir == 1 and high > ep[1] or trend_dir == -1 and low < ep[1] ? math.min(maximum, af[1] + increment) : af[1]

// Calculate extreme point
ep := trend_change and trend_dir == 1 ? high : trend_change and trend_dir == -1 ? low : trend_dir == 1 ? math.max(ep[1], high) : math.min(ep[1], low)

// Calculate PSAR
psar := barstate.isfirst[1] and close[1] > open[1] ? low[1] : barstate.isfirst[1] and close[1] <= open[1] ? high[1] : trend_change ? ep[1] : trend_dir == 1 ? psar[1] + af * atr : psar[1] - af * atr

//////////////// MELODY ///////////////////
VTY = ta.valuewhen(ta.cross(VTX,0),close,0)
//plot(VTY, color=color.black, title="Extended-PVT")

//DONTRENDX = ta.valuewhen(ta.cross(dontrend,0),close,0)
//plot(DONTRENDX, color=color.red, title="DONCHIAN TREND")

SSARX = ta.valuewhen(ta.cross(psar,close),close,0)
//plot(SSARX, color=color.black, title="SSAR-X")

MAXDRAG = math.max(SSARX,VTY)
//plot(MAXDRAG, color=color.black, title="MAX DRAG")
MINDRAG = math.min(SSARX,VTY)
//plot(MINDRAG, color=color.black, title="MIN DRAG")
BASEDRAG = math.avg(MAXDRAG,MINDRAG)
//plot(BASEDRAG, color=color.red, title="BASE DRAG")


/////BUY AND SELL LOGIC ///////////
DRAGONBUY = (ta.crossover(close,MAXDRAG) or ta.crossover(close,MINDRAG) )
DRAGONBUYSTOP = (ta.crossunder(close,MAXDRAG) or ta.crossunder(close,MINDRAG)) 
DRAGONBUYPLOT = ta.valuewhen(DRAGONBUY==true,close,0)
plot(DRAGONBUYPLOT, color=color.red, title="BUY LINE")

DRAGONSELL = (ta.crossunder(close,MAXDRAG) or ta.crossunder(close,MINDRAG) ) 
DRAGONSELLSTOP = (ta.crossover(close,MAXDRAG) or ta.crossover(close,MINDRAG))
DRAGONSELLPLOT = ta.valuewhen(DRAGONSELL==true,close,0)
plot(DRAGONSELLPLOT, color=color.red, title="SELL LINE")

/////TAKE PROFIT LOGIC ///////////
tp1 = input.int(5, minval=1,title = "TP-1")
tp2 = input.int(10, minval=1,title = "TP-2")
tp3 = input.int(15, minval=1,title = "TP-3")

TPTAKA1B = DRAGONBUYPLOT*(1+tp1/100)
//plot(TPTAKA1B, "BUY-TP1", color=color.red,linewidth = 1)
TPTAKA2B = DRAGONBUYPLOT*(1+tp2/100)
//plot(TPTAKA2B, "BUY-TP2", color=color.red,linewidth = 1)
TPTAKA3B = DRAGONBUYPLOT*(1+tp3/100)
//plot(TPTAKA3B, "BUY-TP3", color=color.red,linewidth = 1)

TPTAKA1S = DRAGONSELLPLOT*(1-tp1/100)
//plot(TPTAKA1S, "SELL-TP1", color=color.red,linewidth = 1)
TPTAKA2S = DRAGONSELLPLOT*(1-tp2/100)
//plot(TPTAKA2S, "SELL-TP2", color=color.red,linewidth = 1)
TPTAKA3S = DRAGONSELLPLOT*(1-tp3/100)
//plot(TPTAKA3S, "SELL-TP3", color=color.red,linewidth = 1)


BUYTP = ta.crossunder(emar,TPTAKA1B) or ta.crossunder(emar,TPTAKA2B) or ta.crossunder(emar,TPTAKA3B) 
SELLTP = ta.crossover(emar,TPTAKA1B) or ta.crossover(emar,TPTAKA2B) or ta.crossover(emar,TPTAKA3B)

/////STRATEGY ///////////
// Enter condition 
longCondition = DRAGONBUY==true 
if longCondition
    strategy.entry('Long', strategy.long, comment = "ENTER-LONG")

// Exit condition 
strategy.close('Long', when=DRAGONBUYSTOP, comment = "EXIT-LONG")

// Enter condition 
ShortCondition = DRAGONSELL  
if ShortCondition
    strategy.entry('Short', strategy.short, comment = "ENTER-SHORT")

// Exit condition 
strategy.close('Short', when=DRAGONSELLSTOP, comment = "EXIT-SHORT")
///// END OF STRATEGY ///////////

Plus de