Das Triple Dragon System ist eine zusammengesetzte technische Handelsstrategie, die den Extended Price Volume Trend (EPVT) -Indikator, den Donchian Channels-Indikator und den Parabol SAR-Indikator kombiniert.
Diese Strategie verwendet zunächst EPVT und Donchian Channels, um die Markttrendrichtung zu bestimmen. Wenn EPVT über seiner Basislinie liegt und der Preis über dem oberen Donchian Channel liegt, deutet dies auf einen Aufwärtstrend hin. Umgekehrt, wenn EPVT unter seiner Basislinie liegt und der Preis unter dem unteren Donchian Channel liegt, deutet es auf einen Abwärtstrend hin.
Nach der Identifizierung der Trendrichtung führt diese Strategie den Parabolischen SAR-Indikator ein, um bestimmte Ein- und Ausstiegspunkte zu identifizieren. Wenn der Parabolische SAR unter den Preis geht, erzeugt er ein Kaufsignal. Wenn der Parabolische SAR über den Preis geht, erzeugt er ein Verkaufssignal.
Um die Signale weiter zu validieren, bestätigt diese Strategie auch die Trendrichtung über mehrere Zeitrahmen hinweg, um den Markteintritt in Zeiten hoher Volatilität zu vermeiden.
Der größte Vorteil des Triple Dragon-Systems ist die kombinierte Verwendung von drei verschiedenen Arten von stark komplementären Indikatoren, um Markttrends umfassender und genauer zu bestimmen.
Durch die organische Kombination von Indikatoren kann das Triple Dragon-System die Vorteile jedes Indikators voll ausnutzen, was zu einer hohen Genauigkeit bei der Beurteilung langfristiger, mittelfristiger und langfristiger Trends, einer genaueren Identifizierung von Einstiegs- und Ausstiegspunkten sowie zu einem höheren Risiko-Rendite-Verhältnis führt.
Als Indikatorportfoliostrategie weist das Triple Dragon System insgesamt kontrollierte Risiken auf, aber es gibt noch einige Risiken, die zu beachten sind:
Um den oben genannten Risiken entgegenzuwirken, empfehlen wir, die Einstellungen der Indikatorparameter angemessen anzupassen und andere Indikatoren zur ergänzenden Beurteilung zu verwenden, um die Wahrscheinlichkeit eines Ausfalls eines einzelnen Indikators zu verringern.
Es gibt Raum für weitere Optimierungen des Triple Dragon Systems:
Durch algorithmische Parameteroptimierung, Multi-Indikatoren-Kombinationsurteile und Verhaltensquantifizierungsanalyse besteht das Potenzial, die Rentabilität und Stabilität des Triple Dragon-Systems weiter zu verbessern.
Das Triple Dragon System ist eine technische Indikatorportfolio-Strategie, die die komplementären Stärken von EPVT, Donchian Channels und Parabolic SAR nutzt, um Markttrends zu bestimmen und Handelsmöglichkeiten zu identifizieren. Diese Strategie hat genaue Urteile, kontrollierbare Risiken, mehrere Validierungsschichten und ist ein effektives System, das für mittelfristige und langfristige Investoren geeignet ist. Wir werden das Triple Dragon System weiterhin für überlegene Risiko-Rendite-Verhältnisse optimieren.
/*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 ///////////