Hệ thống ba con rồng là một chiến lược giao dịch kỹ thuật tổng hợp kết hợp chỉ số xu hướng khối lượng giá mở rộng (EPVT), chỉ số kênh Donchian và chỉ số Parabolic SAR. Chiến lược này sử dụng các điểm mạnh bổ sung của ba chỉ số để xác định hướng xu hướng thị trường và tín hiệu mua và bán tiềm năng.
Chiến lược này đầu tiên sử dụng EPVT và kênh Donchian để xác định hướng xu hướng thị trường. Khi EPVT nằm trên đường cơ sở và giá trên kênh Donchian phía trên, nó gợi ý xu hướng tăng. Ngược lại, khi EPVT nằm dưới đường cơ sở và giá dưới kênh Donchian phía dưới, nó gợi ý xu hướng giảm.
Sau khi xác định hướng xu hướng, chiến lược này giới thiệu chỉ số Parabolic SAR để xác định các điểm vào và ra cụ thể. Khi Parabolic SAR vượt dưới giá, nó tạo ra tín hiệu mua. Khi Parabolic SAR vượt trên giá, nó tạo ra tín hiệu bán.
Để xác nhận thêm các tín hiệu, chiến lược này cũng xác nhận hướng xu hướng trên nhiều khung thời gian để tránh tham gia thị trường trong thời gian biến động cao.
Ưu điểm lớn nhất của Hệ thống ba con rồng là việc sử dụng kết hợp ba loại chỉ số khác nhau bổ sung cao để xác định toàn diện và chính xác hơn xu hướng thị trường.
Bằng cách kết hợp các chỉ số một cách hữu cơ, Hệ thống ba con rồng có thể tận dụng đầy đủ những lợi thế của mỗi chỉ số, dẫn đến độ chính xác cao trong việc đánh giá xu hướng dài hạn, trung bình và dài hạn, xác định chính xác hơn các điểm nhập và thoát và tỷ lệ rủi ro-lợi nhuận cao hơn.
Là một chiến lược danh mục đầu tư chỉ số, Triple Dragon System có rủi ro tổng thể có thể kiểm soát được, nhưng vẫn có một số rủi ro cần lưu ý:
Để giải quyết các rủi ro trên, chúng tôi khuyên bạn nên điều chỉnh thích hợp các thiết lập tham số chỉ số và sử dụng các chỉ số khác để đánh giá bổ sung để giảm xác suất thất bại chỉ số duy nhất.
Có chỗ cho việc tối ưu hóa hệ thống ba con rồng:
Thông qua tối ưu hóa tham số thuật toán, đánh giá kết hợp nhiều chỉ số và phân tích định lượng hành vi, có tiềm năng để cải thiện hơn nữa lợi nhuận và sự ổn định của Hệ thống Ba Rồng. Chúng tôi sẽ theo kịp sự phát triển tiên tiến của ngành để liên tục tối ưu hóa và tinh chỉnh hệ thống chiến lược.
Hệ thống ba con rồng là một chiến lược danh mục đầu tư chỉ số kỹ thuật sử dụng các điểm mạnh bổ sung của EPVT, kênh Donchian và Parabolic SAR để xác định xu hướng thị trường và xác định cơ hội giao dịch. Chiến lược này có đánh giá chính xác, rủi ro có thể kiểm soát được, nhiều lớp xác thực và là một hệ thống hiệu quả phù hợp với các nhà đầu tư trung dài hạn. Chúng tôi sẽ tiếp tục tối ưu hóa hệ thống ba con rồng để có tỷ lệ rủi ro-lợi nhuận vượt trội.
/*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 ///////////