Sistem Tiga Naga

Penulis:ChaoZhang, Tanggal: 2023-12-21 11:56:31
Tag:

img

Gambaran umum

Triple Dragon System adalah strategi perdagangan teknis komposit yang menggabungkan indikator Extended Price Volume Trend (EPVT), indikator Donchian Channels dan indikator Parabolic SAR. Strategi ini memanfaatkan kekuatan komplementer dari tiga indikator untuk mengidentifikasi arah tren pasar dan sinyal beli dan jual potensial.

Prinsip Strategi

Strategi ini pertama-tama menggunakan EPVT dan Saluran Donchian untuk menentukan arah tren pasar. Ketika EPVT berada di atas garis dasar dan harga berada di atas Saluran Donchian atas, itu menunjukkan tren naik. Sebaliknya, ketika EPVT berada di bawah garis dasar dan harga berada di bawah Saluran Donchian bawah, itu menunjukkan tren menurun.

Setelah mengidentifikasi arah tren, strategi ini memperkenalkan indikator Parabolic SAR untuk mengidentifikasi titik masuk dan keluar tertentu. Ketika Parabolic SAR melintasi di bawah harga, itu menghasilkan sinyal beli. Ketika Parabolic SAR melintasi di atas harga, itu menghasilkan sinyal jual.

Untuk lebih memvalidasi sinyal, strategi ini juga mengkonfirmasi arah tren di beberapa kerangka waktu untuk menghindari masuk ke pasar selama periode volatilitas tinggi.

Analisis Keuntungan

Keuntungan terbesar dari Triple Dragon System adalah penggunaan gabungan tiga jenis indikator yang sangat saling melengkapi untuk menentukan tren pasar secara lebih komprehensif dan akurat.

  1. EPVT dapat secara akurat mengidentifikasi titik perubahan tren dan kekuatan tren dengan fundamental yang baik;
  2. Saluran Donchian dapat dengan jelas menentukan arah tren dan menangkap tren dengan baik;
  3. Parabolic SAR, bila dikombinasikan dengan indikator tren, dapat lebih akurat mengidentifikasi titik masuk dan keluar.

Dengan menggabungkan indikator secara organik, Sistem Tiga Naga dapat memanfaatkan sepenuhnya keuntungan dari setiap indikator, menghasilkan akurasi tinggi dalam menilai tren jangka panjang, menengah dan panjang, identifikasi titik masuk dan keluar yang lebih tepat, dan rasio risiko-manfaat yang lebih tinggi.

Analisis Risiko

Sebagai strategi portofolio indikator, Triple Dragon System memiliki risiko yang dapat dikendalikan secara keseluruhan, tetapi masih ada beberapa risiko yang perlu dicatat:

  1. EPVT memiliki risiko salah menilai kebocoran palsu dan pembalikan besar;
  2. Saluran Donchian dapat menyempit selama konsolidasi sisi, meningkatkan kemungkinan sinyal kesalahan;
  3. Pengaturan parameter Parabolic SAR yang tidak benar juga dapat mempengaruhi identifikasi titik beli/jual sampai batas tertentu.

Untuk mengatasi risiko di atas, kami merekomendasikan penyesuaian pengaturan parameter indikator dengan tepat dan menggunakan indikator lain untuk penilaian tambahan untuk mengurangi kemungkinan kegagalan indikator tunggal.

Optimasi Strategi

Ada ruang untuk optimasi lebih lanjut dari Sistem Tiga Naga:

  1. Algoritma pembelajaran mesin dapat diperkenalkan untuk optimasi parameter otomatis;
  2. Indikator volatilitas dapat dipertimbangkan untuk meningkatkan stabilitas;
  3. Indikator sentimen dapat dimasukkan untuk menentukan fluktuasi sentimen publik.

Melalui optimasi parameter algoritmik, penilaian kombinasi multi-indikator, dan analisis kuantifikasi perilaku, ada potensi untuk meningkatkan lebih lanjut profitabilitas dan stabilitas Sistem Triple Dragon.

Kesimpulan

Triple Dragon System adalah strategi portofolio indikator teknis yang memanfaatkan kekuatan pelengkap EPVT, Donchian Channels dan Parabolic SAR untuk menentukan tren pasar dan mengidentifikasi peluang perdagangan. Strategi ini memiliki penilaian yang tepat, risiko yang dapat dikendalikan, beberapa lapisan validasi, dan merupakan sistem yang efektif yang cocok untuk investor jangka menengah dan panjang. Kami akan terus mengoptimalkan Triple Dragon System untuk rasio risiko-manfaat yang unggul.


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

Lebih banyak