トリプルドラゴンシステムは,拡張価格ボリュームトレンド (EPVT) インジケーター,ドンチアンチャネルインジケーター,パラボリックSAR インジケーターを組み合わせた複合的な技術取引戦略である.この戦略は,3つの指標の補完的な強みを利用し,市場のトレンド方向と潜在的な買い売り信号を特定する.
この戦略は,まずEPVTとドンキアンチャネルを使用して市場のトレンド方向を決定する.EPVTがベースラインの上,価格が上部ドンキアンチャネル上にある場合,上昇傾向を示唆する.逆に,EPVTがベースライン下,価格が下部ドンキアンチャネル下にある場合,ダウントレンドを示唆する.
トレンド方向を特定した後,この戦略は,特定のエントリー&エグジットポイントを特定するためにパラボリックSARインジケーターを導入します.パラボリックSARが価格を下回ると,購入信号を生成します.パラボリックSARが価格を下回ると,販売信号を生成します.
この戦略は,シグナルをさらに検証するために,多期間のトレンド方向性を確認し,高変動期間の市場への参入を避ける.さらに,多重のテイク・プロフィートレベルは,利益とリスクを制御するために設定されています.
トリプルドラゴンシステムの最大の利点は,市場動向をより包括的かつ正確に決定するために,高度に互いを補完する3種類の異なる指標の組み合わせ使用である.具体的には,主な利点は以下のとおりである.
インディケーターを有機的に組み合わせることで トリプルドラゴンシステムは各インディケーターの利点を最大限に活用し,長期,中期,長期の動向を判断する高精度,より正確なエントリー・アウトプット識別,より優れたリスク・リターン比率を実現します.
インディケーターポートフォリオ戦略として トリプル・ドラゴン・システムには 全体的に制御可能なリスクがありますが,それでも注意すべきリスクがあります:
上記のリスクに対処するために,指標パラメータ設定を適切に調整し,単一の指標の失敗の可能性を減らすために補足的な判断のために他の指標を使用することを推奨します. さらに,適切なストップ・ロストとポジションサイズ化も,全体的な戦略リスク管理に不可欠です.
トリプルドラゴンシステムのさらなる最適化のための余地があります:
アルゴリズムのパラメータ最適化,マルチインジケーターの組み合わせ判断,行動量化分析を通じて,トリプルドラゴンシステムの収益性と安定性をさらに向上させる可能性があります.戦略システムを継続的に最適化し,精製するために,業界の最先端の発展に追随します.
トリプルドラゴンシステムは,市場動向を決定し,取引機会を特定するためにEPVT,ドンチアンチャネル,パラボリックSARの補完的な強みを活用する技術指標ポートフォリオ戦略です.この戦略には正確な判断,制御可能なリスク,複数のバリアレーション層があり,中長期投資家に適した効果的なシステムです.我々は優れたリスク・リターン比率のためにトリプルドラゴンシステムを最適化し続けます.
/*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 ///////////