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

アダプティブ・ボリンジャー・ブレイクと移動平均量的な戦略システム

作者: リン・ハーンチャオチャン開催日:2024年11月27日 15:55:28
タグ:BBマルチSMA

img

概要

この戦略は,ボリンジャーバンドのブレイクアウトと移動平均トレンドを組み合わせた定量的な取引システムである.システムは,トレンド確認のために100日移動平均を使用しながら,ボリンジャーバンドとの価格関係を監視することによって市場機会を自動的に把握する.自動リスク管理のために,口座資本に基づいて動的なポジションサイズを実装する.

戦略の原則

基本論理は次の主要な要素に基づいています

  1. 2つの標準偏差を持つ波動性チャネルとして20期ボリンジャー帯を使用する.
  2. 中期から長期間の傾向確認として100日間の移動平均値を使用する.
  3. 価格が上位帯を突破し,前期には上位ではなかったとき,ロング信号を生成します.
  4. 価格が下帯を下回り,前期には下回りではなかったとき,ショートシグナルを生成します.
  5. 現金口座の自己資本に基づいて動的にポジションサイズを計算する.
  6. リスク管理のために,反発信号でポジションを自動的に閉じる.

戦略 の 利点

  1. 高い適応性 - ボリンガー帯は,市場の変動に基づいてチャネル幅を自動的に調整します.
  2. 管理されたリスク - ポジションのダイナミックサイズ化により,リスクが口座サイズと一致することを保証する
  3. トレンド確認 - 移動平均値との統合は信号の信頼性を向上させる
  4. タイムリーストップ損失 - 明確な退出条件は過度の損失を防ぐ
  5. 二国間取引 - 資本効率の向上と低下の両方の傾向を把握する
  6. クリーンコード - 簡単な保守と最適化のための明確な戦略論理

戦略リスク

  1. 変動市場における偽のブレイクが連続した損失につながる可能性があります
  2. 固定ボリンジャー帯のパラメータは,すべての市場条件に適合しない可能性があります.
  3. トレーリングストップがないと,利益は効率的に確保できない.
  4. 長移動平均期間の信号が遅れる可能性があります.
  5. トレーディングコストは考慮されていない. ライブパフォーマンスとバックテストは異なるかもしれない.

オプティマイゼーションの方向性

  1. 低変動環境での取引頻度を減らすため,変動フィルターを追加する.
  2. 市場変動に基づく動的ストップ・ロスのメカニズムを導入する
  3. 適応期間のボリンジャー帯のパラメータを最適化
  4. 音量および保持時間フィルターを追加する
  5. シグナル確認のための追加的な技術指標を含める
  6. 強化されたリスク管理のための最大引き上げ制限を設定する

概要

この戦略は,ボリンジャーバンドと移動平均を組み合わせて完全な定量的な取引システムを構築する.単純な論理を維持しながら,信号生成,ポジション管理,リスク管理を含むコア機能を実装する.最適化のための領域があるにもかかわらず,全体的なデザインは健全で,実践的な応用価値があります.特定の市場特性に合わせて調整を行うことで,ライブ実装の前にパラメータを徹底的に最適化し,バックテストを通じて検証することをお勧めします.


/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("BB Breakout with MA 100 Strategy", overlay=true)

// Parameter Bollinger Bands
length = input(20, title="BB Length")
stdDev = input(2.0, title="BB Standard Deviation")

// Hitung Bollinger Bands
basis = ta.sma(close, length)
dev = stdDev * ta.stdev(close, length)
upperBB = basis + dev
lowerBB = basis - dev

// Hitung Moving Average 100
ma100 = ta.sma(close, 100)

// Logika untuk sinyal beli dan jual
longCondition = close > upperBB and close[1] <= upperBB[1]
shortCondition = close < lowerBB and close[1] >= lowerBB[1]

// Menentukan ukuran posisi (jumlah lot)
size = strategy.equity / close // Menentukan ukuran posisi berdasarkan ekuitas saat ini

// Eksekusi order
if (longCondition)
    strategy.entry("Long", strategy.long, qty=size)

if (shortCondition)
    strategy.entry("Short", strategy.short, qty=size)

// Menutup posisi ketika kondisi terbalik
if (longCondition and strategy.position_size < 0)
    strategy.close("Short")

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

// Plotting
plot(upperBB, color=color.red, title="Upper BB")
plot(lowerBB, color=color.green, title="Lower BB")
plot(basis, color=color.blue, title="Basis BB")
plot(ma100, color=color.orange, title="MA 100")

// Menambahkan informasi ke grafik
bgcolor(longCondition ? color.new(color.green, 90) : na, title="Buy Signal Background")
bgcolor(shortCondition ? color.new(color.red, 90) : na, title="Sell Signal Background")


関連性

もっと