Drei Drachen-System

Schriftsteller:ChaoZhang, Datum: 21.12.2023 11:56:31
Tags:

img

Übersicht

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.

Strategieprinzip

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.

Analyse der Vorteile

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.

  1. EPVT kann mit guten Fundamentaldaten Trendveränderungspunkte und Trendstärke genau ermitteln;
  2. Donchian Channels kann die Trendrichtung eindeutig bestimmen und Trends gut erfassen;
  3. Parabolische SAR können in Kombination mit Trendindikatoren Eingangs- und Ausstiegspunkte genauer identifizieren.

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.

Risikoanalyse

Als Indikatorportfoliostrategie weist das Triple Dragon System insgesamt kontrollierte Risiken auf, aber es gibt noch einige Risiken, die zu beachten sind:

  1. EPVT birgt die Gefahr, dass falsche Ausbrüche und große Umkehrungen falsch beurteilt werden;
  2. Die Donchian-Kanäle können sich bei seitlichen Konsolidierungen verengen, wodurch die Wahrscheinlichkeit eines Fehlersignals steigt.
  3. Eine unsachgemäße Einstellung der Parabolischen SAR-Parameter kann auch die Identifizierung des Kauf-/Verkaufspunkts in gewissem Maße beeinträchtigen.

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.

Optimierung der Strategie

Es gibt Raum für weitere Optimierungen des Triple Dragon Systems:

  1. Maschinelle Lernalgorithmen können für die automatisierte Parameteroptimierung eingeführt werden;
  2. Es können Volatilitätsindikatoren zur Steigerung der Stabilität in Betracht gezogen werden.
  3. Um die Stimmungsschwankungen der Öffentlichkeit zu ermitteln, können Stimmungsindizes eingesetzt werden.

Durch algorithmische Parameteroptimierung, Multi-Indikatoren-Kombinationsurteile und Verhaltensquantifizierungsanalyse besteht das Potenzial, die Rentabilität und Stabilität des Triple Dragon-Systems weiter zu verbessern.

Schlussfolgerung

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 ///////////

Mehr