デュアルトレンドブレイクアウト戦略に基づく


作成日: 2024-02-19 11:52:40 最終変更日: 2024-02-19 11:52:40
コピー: 0 クリック数: 711
1
フォロー
1617
フォロワー

デュアルトレンドブレイクアウト戦略に基づく

概要

二重トレンドブレイク戦略は,トレンドライン,均線交差,価格チャネルブレイクを含む複数の技術指標を総合的に使用し,市場のトレンドの変化を認識し,トレンドの逆転の機会を捉えることを目的としています.この戦略は,トレンド追跡とブレイクシグナルを組み合わせて,ポジションの入出は比較的安定していますが,偽のブレイクのリスクもあります.

戦略原則

トレンドライン

この戦略は,まず,枢軸高点と枢軸低点を使って多空トレンドを区分し,価格がトレンドラインを突破すると,潜在的トレンドの逆転を示します.斜率を計算するには,ATRの方法を使用して,実際の波動により近いようにします.

均線交差

この戦略は,短期5日線と長期34日線を用いて,快速平均線交差戦略を構成する.短平均線上を長平均線に穿越して買入シグナル,下を穿越して売出シグナルとする.快速平均線を利用して短期トレンドを捕捉し,慢速平均線は長期トレンドを追跡する.

価格チャネル

この戦略はまた,5日間の価格チャネルを設定し,上線買取を突破し,下線販売を突破し,短期間の価格突破を捕捉する.

上記の3つの技術指標のシグナルの統合が,この戦略に用いられ,誤った取引を避けるため,堅固な二重判断の仕組みを形成する.

戦略的優位性

  1. 複数の技術指標が統合され,信号がより堅牢であると判断され,偽突破による損失が減少した.

  2. 急速な平均線と価格チャネルは,短期的な価格トレンドの変化をタイムリーに捉えることができる. 遅い平均線とトレンド線は,長期のトレンドを追跡し,市場への出入は比較的安定している.

  3. コード構造は明確で,指標パラメータは調整可能で,異なる周期,品種に対して調整・最適化が可能である.

  4. トレンド判断と突破シグナルを組み合わせると,トレンド牛市では,市場情勢がより激しく有利で,利益を得る.範囲整理では,突破シグナル取引頻度は低下し,大幅な揺れを回避するのに有利である.

戦略リスク

  1. 偽の突破のリスクは,特に価格の揺れが整理された状況で,損失を引き起こす可能性があります.

  2. 平均線交差は後退信号であり,大幅なトレンドの逆転が起こると,高買いを追求したり,低売りを追求するリスクがある.

  3. 複数の技術指標が統合され,パラメータを最適化する際に大量にテストと計算が必要になり,時間がかかります.

  • 偽の突破リスクに対して,取引量指標を追加してフィルタリングすることができます.例えば,突破時に取引量が拡大されるか,またはあるK線の閉盘価格が突破していない前高または前低など.

  • 高値の買い上げを狙うために,RSI指数などの過買過売のフィルター条件を設定できます. 過買を避ける. または,ストップラインを設定して,ストップを早める.

  • 参数最適化難題に対して,機械学習の方法を用いて最適化を補助し,大量の歴史的データから最適な参数組み合わせを探せます.

戦略の最適化

  1. 取引量指数または超買い超売り指数でトレンドの信頼性を判断し,偽突破による損失を防ぐために厳格なフィルタリング条件を設定します.

  2. 異なる取引品種に対して,平均線パラメータ設定と価格チャネルパラメータを調整して,その品種の特性に適したものにします.

  3. ストップ・ストラトジーを追加し,移動ストップ,ワンストップなどの手段によって単一損失を制御する.

  4. 適応的アプローチを採用し,市場が震動整理段階に入ると,ポジション開設頻度を下げ,トレンドが明らかなときに取引頻度を増やす.

  5. ディープ・ラーニングの手法でモデルを訓練し,買い売り点を判断し,従来の技術指標を補足または代替し,ディープ・ラーニングの汎用性を利用し,より効果的な取引戦略を探します.

要約する

この戦略は,複数の常用技術指標を統合して二重判断システムを形成し,トレンドの変化を効果的に識別し,反測で良好な安定性を表している.しかし,フィルタリング条件,止損策,パラメータ調整,機械学習方法の適用によって最適化される特定の偽突破リスクにも注意すべきであり,戦略の実盤パフォーマンスをさらに強化することができる.

ストラテジーソースコード
/*backtest
start: 2024-02-11 00:00:00
end: 2024-02-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © FinanceUpPvtLtd

//@version=5
strategy("FINANCE UP FREE STRATEGY (+919665229664)", overlay=true)

// Script 01 - Trendlines
length_tl = input.int(14, 'Swing Detection Lookback')
mult_tl = input.float(1., 'Slope', minval=0, step=.1)
calcMethod_tl = input.string('Atr', 'Slope Calculation Method', options=['Atr', 'Stdev', 'Linreg'])
backpaint_tl = input(true, tooltip='Backpainting offset displayed elements in the past. Disable backpainting to see real-time information returned by the indicator.')
upCss_tl = input(color.teal, 'Up Trendline Color', group='Style')
dnCss_tl = input(color.red, 'Down Trendline Color', group='Style')
showExt_tl = input(true, 'Show Extended Lines')

var upper_tl = 0.
var lower_tl = 0.
var slope_ph_tl = 0.
var slope_pl_tl = 0.
var offset_tl = backpaint_tl ? length_tl : 0
n_tl = bar_index
src_tl = close
ph_tl = ta.pivothigh(length_tl, length_tl)
pl_tl = ta.pivotlow(length_tl, length_tl)
slope_tl = switch calcMethod_tl
    'Atr'    => ta.atr(length_tl) / length_tl * mult_tl
    'Stdev'  => ta.stdev(src_tl, length_tl) / length_tl * mult_tl
    'Linreg' => math.abs(ta.sma(src_tl * n_tl, length_tl) - ta.sma(src_tl, length_tl) * ta.sma(n_tl, length_tl)) / ta.variance(n_tl, length_tl) / 2 * mult_tl
slope_ph_tl := ph_tl ? slope_tl : slope_ph_tl
slope_pl_tl := pl_tl ? slope_tl : slope_pl_tl
upper_tl := ph_tl ? ph_tl : upper_tl - slope_ph_tl
lower_tl := pl_tl ? pl_tl : lower_tl + slope_pl_tl
var upos_tl = 0
var dnos_tl = 0
upos_tl := ph_tl ? 0 : close > upper_tl - slope_ph_tl * length_tl ? 1 : upos_tl
dnos_tl := pl_tl ? 0 : close < lower_tl + slope_pl_tl * length_tl ? 1 : dnos_tl

// var uptl_tl = line.new(na, na, na, na, color=upCss_tl, style=line.style_dashed, extend=extend.right)
// var dntl_tl = line.new(na, na, na, na, color=dnCss_tl, style=line.style_dashed, extend=extend.right)
// if ph_tl and showExt_tl
//     uptl_tl.set_xy1(n_tl - offset_tl, backpaint_tl ? ph_tl : upper_tl - slope_ph_tl * length_tl)
//     uptl_tl.set_xy2(n_tl - offset_tl + 1, backpaint_tl ? ph_tl - slope_tl : upper_tl - slope_ph_tl * (length_tl + 1))
// if pl_tl and showExt_tl
//     dntl_tl.set_xy1(n_tl - offset_tl, backpaint_tl ? pl_tl : lower_tl + slope_pl_tl * length_tl)
//     dntl_tl.set_xy2(n_tl - offset_tl + 1, backpaint_tl ? pl_tl + slope_tl : lower_tl + slope_pl_tl * (length_tl + 1))

plot(backpaint_tl ? upper_tl : upper_tl - slope_ph_tl * length_tl, 'Upper', color=ph_tl ? na : upCss_tl, offset=-offset_tl)
plot(backpaint_tl ? lower_tl : lower_tl + slope_pl_tl * length_tl, 'Lower', color=pl_tl ? na : dnCss_tl, offset=-offset_tl)

plotshape(upos_tl > upos_tl[1] ? low : na, "Upper Break", shape.labelup, location.absolute, upCss_tl, text="B", textcolor=color.white, size=size.tiny)
plotshape(dnos_tl > dnos_tl[1] ? high : na, "Lower Break", shape.labeldown, location.absolute, dnCss_tl, text="B", textcolor=color.white, size=size.tiny)

alertcondition(upos_tl > upos_tl[1], 'Upward Breakout', 'Price broke the down-trendline upward')
alertcondition(dnos_tl > dnos_tl[1], 'Downward Breakout', 'Price broke the up-trendline downward')

// Script 02 - Channel Breakout
length_channel = input.int(title="Channel Length", minval=1, maxval=1000, defval=5)
upBound_channel = ta.highest(high, length_channel)
downBound_channel = ta.lowest(low, length_channel)
if (not na(close[length_channel]))
    strategy.entry("LE-LE", strategy.long, stop=upBound_channel + syminfo.mintick, comment="LE-LE")
strategy.entry("BECH-DE", strategy.short, stop=downBound_channel - syminfo.mintick, comment="BECH-DE")

// Script 03 - MA Cross
shortlen_ma = input.int(5, "Short MA Length", minval=1)
longlen_ma = input.int(34, "Long MA Length", minval=1)
short_ma = ta.sma(close, shortlen_ma)
long_ma = ta.sma(close, longlen_ma)
plot(short_ma, color=#FF6D00, title="Short MA")
plot(long_ma, color=#43A047, title="Long MA")
plot(ta.cross(short_ma, long_ma) ? short_ma : na, color=#2962FF, style=plot.style_cross, linewidth=4, title="Cross")