トリプルタッチボリンジャーバンドトレンドフォロー定量取引戦略

BB SMA SD CROSS
作成日: 2024-12-11 11:01:52 最終変更日: 2024-12-11 11:01:52
コピー: 2 クリック数: 351
1
フォロー
1617
フォロワー

トリプルタッチボリンジャーバンドトレンドフォロー定量取引戦略

概要

この戦略は,ブリン帯の指標に基づいた改良版のトレンド追跡戦略である.これは,価格とブリン帯の連続3回の接触を監視することで,トレンドの信頼性を確認し,それにより高い勝率で取引する.この戦略は,20周期の移動平均を中道として使用し,上下線の計算基準として標準差の2倍を使用する.価格とブリン帯の境界との関係を深く分析することで,独特の優位性を有する取引システムを実現する.

戦略原則

策略の核心的な論理は,計数機構によって,価格がブリン帯の境界に継続的に触れていることを認識することです.価格が連続して3回下線を突破すると,システムは複数の信号を発信します.価格が連続して3回上線を突破すると,システムは空の信号を発信します.このメカニズムは,偽の突破を効果的にフィルターし,取引の信頼性を高めます.策略はブリン帯の中央軌道 (20期移動平均線) を平仓信号として使用し,価格が中央軌道に戻ると取引を完了します.この設計は,トレンドの把握を保証するだけでなく,利益を間に合わせてロックすることができます.

戦略的優位性

  1. 高信頼性:取引信号の確認のためにブリン帯域の境界に連続して3回触れるように要求することで,偽突破の影響を大幅に軽減します.
  2. リスク管理: 移動平均を平衡点として使用し,トレンドが逆転した時に時効的に止まる.
  3. 適応性:戦略のパラメータは,異なる市場条件に応じて調整され,普遍性が良好である.
  4. 取引頻度: 厳格な入場条件を設定したため,過度な取引は避けられた.
  5. 資金管理は合理的:口座総額のパーセントをポジション管理に用い,リスクは制御できる.

戦略リスク

  1. 振動市場リスク:横盤振動市場では頻繁に偽信号が生じることがあります.
  2. スライドリスク: 市場が激しく波動する時には,大きなスライド損失に直面する可能性があります.
  3. パラメータの感受性: ブリン帯のパラメータの設定は,戦略のパフォーマンスに大きな影響を与える.
  4. トレンド反転リスク: 強いトレンドが突然反転した場合,大きな損失を負う可能性があります.

戦略最適化の方向性

  1. 交差量指標の導入:交差量分析を組み合わせて信号の信頼性を高めることができる.
  2. 動的調整パラメータ:市場の変動率に応じて自律的に調整するブリン帯パラメータ。
  3. トレンド確認指標を追加: トレンドの方向を確認するために,他の技術指標を追加できます.
  4. 最適化した止損策:異なる市場環境に対応するために,より柔軟な止損策を設計する.
  5. ポジション管理の改善:信号強度に応じてポジション保持比率を動的に調整する.

要約する

この戦略は,従来のブリン帯取引システムを改良することで,より高い信頼性を有するトレンド追跡戦略を実現した.その独特のトリプルタッチ確認機構は,取引の勝率を効果的に高め,移動平均に基づく平仓機構は,合理的な利益を得た結末方案を提供した.戦略には依然としていくつかの固有のリスクがあるが,最適化方向を提供することで,戦略の安定性と収益性をさらに向上させることができる.

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

//@version=6
strategy("Bollinger Bands Strategy - 3 Crossings", overlay=true)

// Input Parameters
length = input.int(20, title="Bollinger Bands Length", minval=1)
src = input(close, title="Source")
mult = input.float(2.0, title="Multiplier", step=0.1)

// Calculate Bollinger Bands
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev

// Plot Bollinger Bands
plotBasis = plot(basis, color=color.blue, title="Basis")
plotUpper = plot(upper, color=color.red, title="Upper Band")
plotLower = plot(lower, color=color.green, title="Lower Band")
fill(plot1=plotUpper, plot2=plotLower, color=color.new(color.blue, 90), title="Band Fill")

// Counter Variables
var int longCrossCount = 0
var int shortCrossCount = 0

// Detect Crossings
longCondition = close < lower  // Price closes below the lower band
shortCondition = close > upper  // Price closes above the upper band

if longCondition
    longCrossCount += 1  // Increment the counter for long
    shortCrossCount := 0  // Reset the short counter

if shortCondition
    shortCrossCount += 1  // Increment the counter for short
    longCrossCount := 0  // Reset the long counter

if not longCondition and not shortCondition
    longCrossCount := 0  // Reset if no crossing
    shortCrossCount := 0

// Entry and Exit Rules
if longCrossCount >= 3 and strategy.position_size <= 0
    strategy.entry("Long", strategy.long)
    longCrossCount := 0  // Reset the counter after entering

if shortCrossCount >= 3 and strategy.position_size >= 0
    strategy.entry("Short", strategy.short)
    shortCrossCount := 0  // Reset the counter after entering

// Exit Condition (When Price Returns to the Middle Band)
exitCondition = ta.crossover(src, basis) or ta.crossunder(src, basis)

if exitCondition and strategy.position_size > 0
    strategy.close("Long")
if exitCondition and strategy.position_size < 0
    strategy.close("Short")