ボリンジャーバンドベースの平均回帰戦略


作成日: 2024-03-08 14:46:15 最終変更日: 2024-03-08 14:46:15
コピー: 0 クリック数: 797
1
フォロー
1617
フォロワー

ボリンジャーバンドベースの平均回帰戦略

概要

ブリン帯平均回帰戦略は,ブリン帯指数に基づく量化取引戦略である.この戦略は,平均線を中心に価格が変動する統計法則を利用し,ブリン帯から価格が偏移して下落した時に逆操作することによって,価格が平均回帰したときに利益を得ることを期待する.

戦略原則

ブリン帯は3つの線で構成される.中線は移動平均線であり,上下線は中線に基づいて一定倍数の標準差を加減する.統計学原理によれば,正規分布の場合,約95%の値は距離平均の正負2標準差の範囲に分布する.

ブリン帯平均回帰戦略は,この原理を利用している. 上値がブリン帯を突破して軌道上になると,価格が高すぎる可能性があることを示す,回落のリスクがある; 下値がブリン帯を突破して軌道下になると,価格が低すぎる可能性があることを示す,反発のチャンスがある. したがって,この戦略は,価格がブリン帯を軌道上に触ったときに空きをする,下線に触ったときに多めにし,価格が平均回帰の利得スペースを捕捉する.

政策のコードの主要な論理は以下の通りです.

  1. 指定周期の移動平均を計算し,ブリン帯の中道として. SMA,EMA,SMMA,WMA,VWMAなどの異なるタイプの平均線を選択できます.

  2. この周期内の標準差を計算し,ユーザが設定した倍数パラメータと組み合わせて,ブリン帯の上下軌道が得られる.

  3. 閉盤価格の上を通過してブリン帯を軌道に乗せるときは,売り信号を触発する.閉盤価格下を通過してブリン帯を軌道に乗せるときは,買い信号を触発する.

  4. 戦略的な取引実行:買入シグナルが誘発されたときに多ポジションを開き,売出シグナルが出現するまで平ポジションを保つ.

戦略は,価格が平均線から大きく外れたときに逆転ポジションを確立し,価格が平均値に戻ったときに利益を得ることができます.

優位分析

ブリン帯平均回帰策には以下の利点がある.

  1. 論理はシンプルで,理解し,実行しやすい.この戦略は,統計学の基本原理に基づいて,ブリン帯によって価格の波動範囲を刻画し,入場と出場条件を明確に明確にします.

  2. 適応性強で,複数の市場と品種に適用できる.ブリン帯は普遍性の高い技術指標であり,傾向性のある市場と不安定な市場の両方に一定の適応力を有する.ユーザーは,異なる市場特性に合わせてパラメータを柔軟に調整することができる.

  3. 価格の波動を捉える機会.ブリン帯の拡大と収縮は,価格の波動を反映し,この戦略は,価格が相対的に高い値または低い値に達したときにポジションを構え,価格の回帰平均の利益を得ようとします.

  4. ストップ・ストップ・ロスは比較的明確である.ブリン帯は一定の信頼区間に対応するため,この戦略のストップ・ストップ・ロスの位置は比較的容易に決定され,リスクを制御するのに役立ちます.

リスク分析

ブリン帯平均回帰の戦略には利点があるものの,リスクもあります.

  1. トレンド市場での不良なパフォーマンス. 市場が連続した一方的な傾向を示し,価格がブリン帯の上線線または下線近くで継続的に動作する場合は,この戦略は頻繁に損なわれた取引が起こる可能性があります.

  2. パラメータ設定は敏感である.ブリン帯の周期と倍数パラメータは,戦略のパフォーマンスに顕著な影響を及ぼし,異なるパラメータの組み合わせは,非常に異なる結果をもたらす可能性がある.パラメータ設定が不適切である場合,戦略の有効性は大きく割引される.

  3. 頻繁に波動するリスクがある.市場波動が大きい場合,ブリン帯の上下線の間に価格が頻繁に波動すると,この戦略は,小額の損失が連続して発生し,全体的な収益率が低下する可能性があります.

  4. 取引コストは考慮されていません. このサンプルコードは,点差,手数料などの取引コスト要因を考慮していません. 実用化では,これらの要因は,戦略の純利益に一定程度に影響します.

リスクに対する戦略の最適化には,以下の措置を考慮すべきです.

  1. トレンド指標と組み合わせてフィルタリングを行う. 信号を判断する際には,移動平均などのトレンド指標を補助的に使用することができます.

  2. 最適化パラメータの選択。歴史データへの反省を行い,異なるパラメータの組み合わせの下で戦略のパフォーマンスを分析し,現在の市場に適した最適なパラメータを選択。定期的にパラメータの評価と調整を行う。

  3. 他のフィルタリング条件を導入する.例えば,ATRなどの波動率指標を考慮し,波動率が高すぎると取引を一時停止する.または,取引量などの他の指標を参照し,信号の信頼性をさらに確認する.

  4. 取引コストの要素を含める.反測と実盤では,点差,手数料などの取引コストを計算し,戦略の実際のパフォーマンスをより正確に評価する.

最適化の方向

上述のリスク対策に加えて,ブリン帯平均回帰戦略を以下のように最適化できます.

  1. 動的調整パラメータ。市場の変化に応じて,ブリン帯の周期と倍数パラメータを動的に調整する。適応平均線 (KAMAなど) を中道として使用することを考えることができる,またはATRなどの指標に基づいて動的に倍数パラメータを調整し,現在の市場リズムに適合させる。

  2. 多空ポジション管理を導入する. ポジション開設時に,価格とブリン帯の中軌道との距離に応じて,ポジションサイズを動的に調整することができる. 中軌道から遠く離れたところに,開設比率はリスクを制御するために適切に小さくすることができる. 中軌道から近いところに,開設比率はより多くの機会を掴むために適切に増加することができる.

  3. 他の技術指標と組み合わせる. ブリン帯は他の技術指標 (RSI,MACDなど) と組み合わせて使用され,より堅牢な信号確認機構を形成する. 複数の指標が共鳴するときにのみ取引され,信号の信頼性が向上する.

  4. 複数のポジションの管理を考慮する.適切な条件下で,複数のポジションを同時に保持し,リスクを分散する.例えば,異なる時間周期でこの戦略を適用するか,異なる取引品種で同時にポジションを開き,より安定した利益を得る.

これらの最適化の目的は,戦略の適応性,安定性,収益性を向上させることです. ダイナミックな調整,多指標結合,ポジション管理などの手段により,市場変化にうまく対応し,リスクを制御し,より多くの取引機会を捉えることができます.

要約する

ブリン帯平均回帰戦略は,統計学原理に基づく定量取引戦略で,ブリン帯によって価格の波動範囲を刻み,価格が上下軌道から偏移したときに逆操作して平均回帰の利益を得ることを目指しています. この戦略の論理はシンプルで,適応性が強く,価格変動の機会を捉えることができますが,同時に,トレンド性市場の不良パフォーマンス,センシティブなパラメータ設定,頻繁な震動などのリスクにも直面しています.

これらのリスクに対して,トレンド指標,最適化パラメータ選択,その他のフィルタリング条件の導入,取引コストの組み込みなどの措置を組み合わせて最適化することができる.さらに,パラメータの動的調整,多空位ポジション管理,その他の技術指標,多取引管理などの組み合わせによって,戦略の適応性と安定性をさらに向上させることができる.

全体として,ブリン帯平均回帰戦略は,量化取引のためのシンプルで効果的な考え方を提供します.実際のアプリケーションでは,特定の市場特性と取引のニーズに応じて,戦略に適切な最適化と改善が必要になります.継続的なテストと調整によって,自分に最も適した取引方法を探し出すことで,量化取引の道で長期的な成功を収めることができます.

ストラテジーソースコード
/*backtest
start: 2023-03-02 00:00:00
end: 2024-03-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("BB Strategy", shorttitle="BB", overlay=true)

length = input.int(20, minval=1)
maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")

// Calculate moving average based on selected type
ma(source, length, _type) =>
    switch _type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

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

// Plot Bollinger Bands
plot(basis, "Basis", color=#FF6D00)
p1 = plot(upper, "Upper", color=#2962FF)
p2 = plot(lower, "Lower", color=#2962FF)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))

// Buy condition: Price below lower Bollinger Band
buy_condition = close < lower
// Sell condition: Price above upper Bollinger Band
sell_condition = close > upper

// Execute trades
strategy.entry("Buy", strategy.long, when=buy_condition)
strategy.close("Buy", when=sell_condition)