Sistem Tiga Naga

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

img

Ringkasan

Sistem Tiga Naga adalah strategi perdagangan teknikal komposit yang menggabungkan penunjuk Trend Volume Harga Terpanjang (EPVT), penunjuk Saluran Donchian dan penunjuk SAR Parabolik. Strategi ini menggunakan kekuatan pelengkap tiga penunjuk untuk mengenal pasti arah trend pasaran dan isyarat beli dan jual yang berpotensi.

Prinsip Strategi

Strategi ini mula-mula menggunakan EPVT dan Saluran Donchian untuk menentukan arah trend pasaran. Apabila EPVT berada di atas garis asasnya dan harga berada di atas Saluran Donchian atas, ia mencadangkan aliran menaik. Sebaliknya, apabila EPVT berada di bawah garis asasnya dan harga berada di bawah Saluran Donchian bawah, ia mencadangkan aliran menurun.

Selepas mengenal pasti arah trend, strategi ini memperkenalkan indikator Parabolic SAR untuk mengenal pasti titik masuk dan keluar tertentu. Apabila Parabolic SAR melintasi harga di bawah, ia menghasilkan isyarat beli. Apabila Parabolic SAR melintasi harga di atas, ia menghasilkan isyarat jual.

Untuk mengesahkan isyarat lebih lanjut, strategi ini juga mengesahkan arah trend dalam pelbagai jangka masa untuk mengelakkan memasuki pasaran semasa tempoh turun naik yang tinggi.

Analisis Kelebihan

Kelebihan terbesar Sistem Triple Dragon adalah penggunaan gabungan tiga jenis penunjuk yang sangat saling melengkapi untuk menentukan trend pasaran dengan lebih komprehensif dan tepat.

  1. EPVT boleh mengenal pasti dengan tepat titik perubahan trend dan kekuatan trend dengan asas yang baik;
  2. Saluran Donchian dapat menentukan arah trend dengan jelas dan menangkap trend dengan baik;
  3. Parabolik SAR, apabila digabungkan dengan penunjuk trend, boleh mengenal pasti titik masuk dan keluar dengan lebih tepat.

Dengan menggabungkan penunjuk secara organik, Sistem Tiga Naga dapat memanfaatkan sepenuhnya kelebihan setiap penunjuk, menghasilkan ketepatan tinggi dalam menilai trend jangka panjang, sederhana dan panjang, pengenalan titik masuk dan keluar yang lebih tepat, dan nisbah risiko-balasan yang lebih tinggi.

Analisis Risiko

Sebagai strategi portfolio penunjuk, Triple Dragon System mempunyai risiko yang boleh dikawal secara keseluruhan, tetapi masih ada beberapa risiko yang perlu diperhatikan:

  1. EPVT mempunyai risiko salah menilai pelarian palsu dan pembalikan besar;
  2. Saluran Donchian boleh menyempitkan semasa penyatuan sisi, meningkatkan kebarangkalian isyarat ralat;
  3. Tetapan parameter SAR Parabolik yang tidak betul juga boleh memberi kesan kepada pengenalan titik beli/jual dalam beberapa tahap.

Untuk menangani risiko di atas, kami mengesyorkan menyesuaikan tetapan parameter penunjuk dengan sewajarnya dan menggunakan penunjuk lain untuk penilaian tambahan untuk mengurangkan kebarangkalian kegagalan penunjuk tunggal.

Pengoptimuman Strategi

Terdapat ruang untuk pengoptimuman sistem Triple Dragon:

  1. Algoritma pembelajaran mesin boleh diperkenalkan untuk pengoptimuman parameter automatik;
  2. Penunjuk turun naik boleh dianggap untuk meningkatkan kestabilan;
  3. Penunjuk sentimen boleh dimasukkan untuk menentukan turun naik sentimen awam.

Melalui pengoptimuman parameter algoritma, penilaian gabungan pelbagai penunjuk, dan analisis kuantiti tingkah laku, terdapat potensi untuk meningkatkan lagi keuntungan dan kestabilan Sistem Tiga Naga.

Kesimpulan

Triple Dragon System adalah strategi portfolio penunjuk teknikal yang memanfaatkan kekuatan pelengkap EPVT, Saluran Donchian dan Parabolic SAR untuk menentukan trend pasaran dan mengenal pasti peluang perdagangan. Strategi ini mempunyai penilaian yang tepat, risiko yang boleh dikawal, pelbagai lapisan pengesahan, dan merupakan sistem yang berkesan yang sesuai untuk pelabur jangka menengah dan panjang. Kami akan terus mengoptimumkan Triple Dragon System untuk nisbah risiko-balasan 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 lanjut