二重トレンドのブレークアウト戦略

作者: リン・ハーンチャオチャン, 日付: 2024-02-19 11:52:40
タグ:

img

概要

ダブルトレンドブレークアウト戦略は,トレンドライン,移動平均クロスオーバー,価格チャネルブレークアウトを含む複数の技術指標を統合し,市場の潜在的なターニングポイントを特定することを目的としています.この戦略は,トレンド追跡とブレークアウトシグナルを組み合わせて,比較的強固なエントリーと出口を実現しますが,偽ブレークアウトのリスクも伴います.

戦略の論理

トレンドライン

この戦略は,まずピボット・ハイズと・ローズを使用して,バリーッシュ・トレンドとバリーッシュ・トレンドを区切る.価格がトレンドラインを突破すると,潜在的なトレンド逆転をシグナル化する.傾斜は,実際の変動に合わせてATR方法を使用して計算される.

移動平均のクロスオーバー

ストラテジーは,5日間の短期移動平均と34日間の長期移動平均を採用し,高速かつ遅いクロスオーバー取引を行う.長いMAを超える短いMAは購入信号を与え,下を横切ると販売信号を与える.高速MAは短期的なトレンドを捉え,遅いMAは長期的なトレンドを追跡する.

価格チャネル

この戦略には5日間の価格チャネルも設定されている.上帯の上を突破するとロングエントリー,下帯下を突破するとショートエントリーが発生し,短期的な価格ブレイクを捕捉する.ブレイクシグナルの信頼性を決定するためにMAクロスオーバーで動作する.

この3種類の技術指標は1つの戦略に統合され,強力な二重確認メカニズムを形成し,偽取引を回避する.

利点

  1. 比較的信頼性の高いシグナルのための複数の指標を統合し 誤ったブレイクによる損失を削減します

  2. 急速なMAと価格チャネルは短期的なトレンドの変化を迅速に捉える.ゆっくりしたMAとトレンドラインは安定したエントリーとアウトリースのための長期的トレンドを追跡する.

  3. クリーンなコード構造で 調整可能なパラメータで 異なる製品とタイムフレームに最適化できます

  4. トレンド追跡とブレイクアウト信号を組み合わせ 強いトレンドで収益性を高め レンジ・バインド市場でのウイプソウを回避します

リスク

  1. 誤ったブレイクが起こり得るリスクはあるが,特に範囲限定のシナリオでは損失につながる可能性がある.

  2. 低迷傾向の横断は,大きなトレンド逆転後,上位値の購入や下位値の販売のリスクを伴います.

  3. 複数のインテグレートインジケーターには 重大なバックテストとパラメータ調整の計算が必要です

  • ブレイクアウトの検証のために,例えばブレイクアウトのボリューム拡張を必要とするボリューム指標を追加できます.

  • 過剰販売/過剰購入の指標は,購入/売却の枯渇シナリオを防ぐ.

  • 偽取引の損失を制御するストップ損失です

  • 膨大な歴史的データを通して 最適なパラメータを迅速に見つけることができます

強化

  1. 信頼性の高いトレンド変化を確認するためにボリュームまたはRSIフィルターを追加し,誤ったブレイクによる損失を避けるために厳格なフィルターを設定します.

  2. 異なる製品の MA とチャネルパラメータを,その特徴に合わせて調整する.

  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")


もっと