マルチレベルボリンジャーバンド回帰取引戦略

BB SMA stdev TP SL
作成日: 2025-02-21 13:06:24 最終変更日: 2025-02-21 13:06:24
コピー: 1 クリック数: 463
2
フォロー
319
フォロワー

マルチレベルボリンジャーバンド回帰取引戦略 マルチレベルボリンジャーバンド回帰取引戦略

概要

これはブリン帯平均回帰原理に基づいた取引戦略で,複数のストップ・レベルによって分期利益を実現する.この戦略は,価格がブリン帯を破った後に戻ったときに取引し,5つの異なるストップ・レベルを設定して,ポジションを徐々に減らせます.同時に,リスクを制御するためにダイナミックなストップ・ロスを設定します.この戦略は,カスタマイズされた取引時間内で動作し,ポジションアップ操作をサポートします.

戦略原則

策略は20周期のブリン帯指数に基づいており,2倍標準差を波動区間として使用する.価格が下から下線を突破し,帯内で閉店したとき,多信号を触発する.価格が上から上線を突破し,帯内で閉店したとき,空信号を触発する.入場後,策略は5段階のストップメカニズムを採用し,それぞれ0.5%,1% ,1.5%,2%および2.5%の位置にストップを設定し,各ストップポイントはポジションの20%を平らにする.最後のストップは相対的なブリン帯の位置に設定する.同時に,リスクを制御するために1%のストップを設定する.

戦略的優位性

  1. 多層のストップ・メカニズムにより,トレンドが続くとより多くの利益を得ることができ,同時に,利益の一部を確保できます.
  2. 取引方向が正しいときに加仓し,収益性を高めるための支援
  3. ブリン帯を動的支柱の抵抗点として利用し,市場の変動に対応する
  4. 取引の時間帯をカスタマイズして,非取引の時間帯の干渉を避ける
  5. リスクのコントロールに効果的

戦略リスク

  1. 高波動の市場では,しばしば偽の突破シグナルを誘発する可能性がある.
  2. 急速なトレンドで,より大きな利益の機会を逃す可能性
  3. 市場が逆転すると,加仓制度はさらに大きな損失をもたらす可能性があります.
  4. 複数のストップオーダーが,流動性の不足により完全に実行できない場合 ブリン帯のパラメータとストップ・ストップ・ロスの比率を調整することで,異なる市場環境に対応することを推奨する.

戦略最適化の方向性

  1. 信号フィルタリング条件として交差量指標を導入し,突破の信頼性を向上させる
  2. ストップ・ストップ・損失の位置を変動に応じて動的に調整する
  3. トレンドフィルタリングの指数を増やして,強気なトレンドの逆転を避ける
  4. ポジションを最大限持てる制限を設定する.
  5. 収益を保護するために,モバイル・ストップ・ロスを追加することを検討

要約する

この戦略はブリン帯指数によって平均値回帰の機会を捕捉し,多層のストップとダイナミックストップを使用してリスクを管理する.戦略の優点は,その柔軟なポジション管理とリスク制御機構にあるが,使用する際は,市場環境の適応性に注意する必要がある.追加のフィルタリング指数を追加し,ストップストップのパラメータを最適化することで,戦略の安定性と収益性をさらに向上させることができる.

ストラテジーソースコード
/*backtest
start: 2025-02-19 10:00:00
end: 2025-02-20 00:00:00
period: 5m
basePeriod: 5m
exchanges: [{"eid":"Binance","currency":"BNB_USDT"}]
*/

//@version=5
strategy("Bollinger Band Reentry Strategy", overlay=true)

// Inputs
bbLength = input.int(20, title="Bollinger Band Length")
bbMult = input.float(2.0, title="Bollinger Band Multiplier")
stopLossPerc = input.float(1.0, title="Stop Loss (%)") / 100
tp1Perc = input.float(0.5, title="Take Profit 1 (%)") / 100
tp2Perc = input.float(1.0, title="Take Profit 2 (%)") / 100
tp3Perc = input.float(1.5, title="Take Profit 3 (%)") / 100
tp4Perc = input.float(2.0, title="Take Profit 4 (%)") / 100
tp5Perc = input.float(2.5, title="Take Profit 5 (%)") / 100
allowAddToPosition = input.bool(true, title="Allow Adding to Position")
customSession = input.timeframe("0930-1600", title="Custom Trading Session")

// Calculate Bollinger Bands
basis = ta.sma(close, bbLength)
dev = ta.stdev(close, bbLength)
upperBB = basis + bbMult * dev
lowerBB = basis - bbMult * dev

// Plot Bollinger Bands
plot(upperBB, color=color.red, title="Upper Bollinger Band")
plot(lowerBB, color=color.green, title="Lower Bollinger Band")
plot(basis, color=color.blue, title="Bollinger Band Basis")

// Entry Conditions
longCondition = (ta.crossover(close, lowerBB) or (low < lowerBB and close > lowerBB)) and time(timeframe.period, customSession)
shortCondition = (ta.crossunder(close, upperBB) or (high > upperBB and close < upperBB)) and time(timeframe.period, customSession)

// Execute Trades
if (longCondition)
    strategy.entry("Long", strategy.long, when=allowAddToPosition or strategy.position_size == 0)
if (shortCondition)
    strategy.entry("Short", strategy.short, when=allowAddToPosition or strategy.position_size == 0)

// Take-Profit and Stop-Loss Levels for Long Trades
if (strategy.position_size > 0)
    strategy.exit("TP1", "Long", limit=strategy.position_avg_price * (1 + tp1Perc), qty=strategy.position_size * 0.2) // Take 20% profit
    strategy.exit("TP2", "Long", limit=strategy.position_avg_price * (1 + tp2Perc), qty=strategy.position_size * 0.2)
    strategy.exit("TP3", "Long", limit=strategy.position_avg_price * (1 + tp3Perc), qty=strategy.position_size * 0.2)
    strategy.exit("TP4", "Long", limit=strategy.position_avg_price * (1 + tp4Perc), qty=strategy.position_size * 0.2)
    strategy.exit("TP5", "Long", limit=upperBB, qty=strategy.position_size * 0.2) // Take final 20% at opposite band
    strategy.exit("Stop Loss", "Long", stop=strategy.position_avg_price * (1 - stopLossPerc))

// Take-Profit and Stop-Loss Levels for Short Trades
if (strategy.position_size < 0)
    strategy.exit("TP1", "Short", limit=strategy.position_avg_price * (1 - tp1Perc), qty=strategy.position_size * 0.2)
    strategy.exit("TP2", "Short", limit=strategy.position_avg_price * (1 - tp2Perc), qty=strategy.position_size * 0.2)
    strategy.exit("TP3", "Short", limit=strategy.position_avg_price * (1 - tp3Perc), qty=strategy.position_size * 0.2)
    strategy.exit("TP4", "Short", limit=strategy.position_avg_price * (1 - tp4Perc), qty=strategy.position_size * 0.2)
    strategy.exit("TP5", "Short", limit=lowerBB, qty=strategy.position_size * 0.2)
    strategy.exit("Stop Loss", "Short", stop=strategy.position_avg_price * (1 + stopLossPerc))

// Alerts
alertcondition(longCondition, title="Long Signal", message="Price closed inside Bollinger Band from below.")
alertcondition(shortCondition, title="Short Signal", message="Price closed inside Bollinger Band from above.")