資源の読み込みに... 荷物...

トリプル・スーパートレンドとボリンジャー・バンド 多指標トレンド 戦略をフォローする

作者: リン・ハーンチャオチャン開催日:2024年12月20日 14:28:58
タグ:ボールSTATRSMABBマルチ

img

概要

この戦略は,ボリンジャーバンドとトリプルスーパートレンドインジケーターを組み合わせて取引を行う.ボリンジャーバンドを波動性範囲評価とトリプルスーパートレンドをトレンド確認に使用することで,強力なトレンドフォローシステムを作成する.ボリンジャーバンドは極端な価格動きを特定し,トリプルスーパートレンドは異なるパラメータ設定を通じてトレンド方向の複数の確認を提供します.すべての信号が一致するときにのみ取引が行われ,偽信号のリスクが軽減されます.この組み合わせはトレンドフォローの利点を維持し,取引の信頼性を向上させます.

戦略の原則

基本論理には次の主要な要素が含まれます.

  1. 波動性判断のために2.0標準偏差倍数を持つ20期ボリンジャー帯を使用する.
  2. 3つのスーパートレンドラインを期日10と因数3.0,4.0,5.0で実装する.
  3. ロングエントリー条件:ボリンジャーバンド上部以上の価格ブレイクと3つのスーパートレンドラインはすべて上昇傾向を示します
  4. 短期入場条件:ボリンジャー・バンドの下位値の下値値ブレイクと3つのスーパートレンド線がダウントレンドを示します.
  5. ポジションは,スーパートレンドラインが方向を変えるときに閉じます.
  6. 拡張可視化のための記入基準として,中間価格ラインを使用

戦略 の 利点

  1. 多重確認メカニズム:ボリンジャー帯と三重スーパートレンドの組み合わせにより,誤った信号が大幅に減少します.
  2. 強いトレンドフォロー能力: 進歩的なスーパートレンドパラメータは,さまざまなレベルのトレンドを効果的に捉える
  3. 総合的なリスク管理: トレンド逆転の兆候が現れたときに迅速にポジションを閉じる
  4. 高いパラメータ適応性: すべての指標パラメータは,異なる市場特性に最適化できます
  5. 高レベルの自動化: 明確な戦略論理は,体系的な実施を容易にする

戦略リスク

  1. 市場変動リスク:横向市場では頻繁に誤ったブレイクシグナルを生む可能性があります.
  2. 変動期間の間,大きな変動損失に直面する可能性があります.
  3. 遅延リスク:複数の確認メカニズムにより,入力が遅れる可能性があります.
  4. パラメータの感度: 異なるパラメータの組み合わせによって,戦略のパフォーマンスが異なる可能性があります.
  5. 市場環境依存: 戦略は傾向市場でよりうまく機能する

戦略の最適化方向

  1. 容量指標を組み込む: 容量分析を通じて価格ブレイクアウトの有効性を確認する
  2. ストップ・ロスのメカニズムを最適化: トレイリング・ストップまたはATRベースのダイナミック・ストップを追加
  3. 時間フィルターを追加: 不効率な変動を避けるため,特定の期間に取引を制限する
  4. 波動性フィルタを導入する: 過剰な波動性においてポジションサイズを調整するか,取引を一時停止する
  5. パラメータ調整メカニズムを開発する: 市場状況に基づいてパラメータを動的に調整する

概要

この戦略はトレンドフォロー戦略で,ボリンジャーバンドとトリプルスーパートレンドを組み合わせ,複数の技術指標の確認を通じて取引の信頼性を向上させる.この戦略は強いトレンドキャプチャ能力とリスク制御を示しているが,市場の状況が業績に影響を及ぼしている.継続的な最適化と精製を通じて,戦略は異なる市場状況で安定したパフォーマンスを維持することができる.ライブ取引の前に徹底的なバックテストとパラメータ最適化を行い,実際の市場状況に基づいて適切な調整を行うことが推奨される.


//@version=5
strategy("Demo GPT - Bollinger + Triple Supertrend Combo", overlay=true, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3)

// -------------------------------
// User Input for Date Range
// -------------------------------
startDate = input(title="Start Date", defval=timestamp("2018-01-01 00:00:00"))
endDate   = input(title="End Date",   defval=timestamp("2069-12-31 23:59:59"))

// -------------------------------
// Bollinger Band Inputs
// -------------------------------
lengthBB = input.int(20, "Bollinger Length")
multBB   = input.float(2.0, "Bollinger Multiplier")

// -------------------------------
// Supertrend Inputs for 3 lines
// -------------------------------
// Line 1
atrPeriod1 = input.int(10, "ATR Length (Line 1)", minval = 1)
factor1    = input.float(3.0, "Factor (Line 1)", minval = 0.01, step = 0.01)

// Line 2
atrPeriod2 = input.int(10, "ATR Length (Line 2)", minval = 1)
factor2    = input.float(4.0, "Factor (Line 2)", minval = 0.01, step = 0.01)

// Line 3
atrPeriod3 = input.int(10, "ATR Length (Line 3)", minval = 1)
factor3    = input.float(5.0, "Factor (Line 3)", minval = 0.01, step = 0.01)

// -------------------------------
// Bollinger Band Calculation
// -------------------------------
basis = ta.sma(close, lengthBB)
dev   = multBB * ta.stdev(close, lengthBB)
upperBand = basis + dev
lowerBand = basis - dev

// Plot Bollinger Bands
plot(upperBand, "Upper BB", color=color.new(color.blue, 0))
plot(basis,     "Basis",    color=color.new(color.gray, 0))
plot(lowerBand, "Lower BB", color=color.new(color.blue, 0))

// -------------------------------
// Supertrend Calculation Line 1
// -------------------------------
[supertrendLine1, direction1] = ta.supertrend(factor1, atrPeriod1)
supertrendLine1 := barstate.isfirst ? na : supertrendLine1

upTrend1   = plot(direction1 < 0 ? supertrendLine1 : na, "Up Trend 1",   color = color.green, style = plot.style_linebr)
downTrend1 = plot(direction1 < 0 ? na : supertrendLine1, "Down Trend 1", color = color.red,   style = plot.style_linebr)

// -------------------------------
// Supertrend Calculation Line 2
// -------------------------------
[supertrendLine2, direction2] = ta.supertrend(factor2, atrPeriod2)
supertrendLine2 := barstate.isfirst ? na : supertrendLine2

upTrend2   = plot(direction2 < 0 ? supertrendLine2 : na, "Up Trend 2",   color = color.new(color.green, 0), style = plot.style_linebr)
downTrend2 = plot(direction2 < 0 ? na : supertrendLine2, "Down Trend 2", color = color.new(color.red, 0),   style = plot.style_linebr)

// -------------------------------
// Supertrend Calculation Line 3
// -------------------------------
[supertrendLine3, direction3] = ta.supertrend(factor3, atrPeriod3)
supertrendLine3 := barstate.isfirst ? na : supertrendLine3

upTrend3   = plot(direction3 < 0 ? supertrendLine3 : na, "Up Trend 3",   color = color.new(color.green, 0), style = plot.style_linebr)
downTrend3 = plot(direction3 < 0 ? na : supertrendLine3, "Down Trend 3", color = color.new(color.red, 0),   style = plot.style_linebr)

// -------------------------------
// Middle line for fill (used as a reference line)
// -------------------------------
bodyMiddle = plot(barstate.isfirst ? na : (open + close) / 2, "Body Middle", display = display.none)

// Fill areas for each supertrend line
fill(bodyMiddle, upTrend1,   color.new(color.green, 90), fillgaps = false)
fill(bodyMiddle, downTrend1, color.new(color.red,   90), fillgaps = false)

fill(bodyMiddle, upTrend2,   color.new(color.green, 90), fillgaps = false)
fill(bodyMiddle, downTrend2, color.new(color.red,   90), fillgaps = false)

fill(bodyMiddle, upTrend3,   color.new(color.green, 90), fillgaps = false)
fill(bodyMiddle, downTrend3, color.new(color.red,   90), fillgaps = false)

// Alerts for the first line only (as an example)
alertcondition(direction1[1] > direction1, title='Downtrend to Uptrend (Line 1)', message='Supertrend Line 1 switched from Downtrend to Uptrend')
alertcondition(direction1[1] < direction1, title='Uptrend to Downtrend (Line 1)', message='Supertrend Line 1 switched from Uptrend to Downtrend')
alertcondition(direction1[1] != direction1, title='Trend Change (Line 1)', message='Supertrend Line 1 switched trend')

// -------------------------------
// Strategy Logic
// -------------------------------
inDateRange = true

// Long Conditions
longEntryCondition = inDateRange and close > upperBand and direction1 < 0 and direction2 < 0 and direction3 < 0
longExitCondition = direction1 > 0 or direction2 > 0 or direction3 > 0

// Short Conditions
shortEntryCondition = inDateRange and close < lowerBand and direction1 > 0 and direction2 > 0 and direction3 > 0
shortExitCondition = direction1 < 0 or direction2 < 0 or direction3 < 0

// Execute Long Trades
if longEntryCondition and strategy.position_size <= 0
    strategy.entry("Long", strategy.long)

if strategy.position_size > 0 and longExitCondition
    strategy.close("Long")

// Execute Short Trades
if shortEntryCondition and strategy.position_size >= 0
    strategy.entry("Short", strategy.short)

if strategy.position_size < 0 and shortExitCondition
    strategy.close("Short")


関連性

もっと