Bollinger Band Mean リバーション トレーディング 戦略

作者: リン・ハーンチャオチャン, 日付: 2023年12月27日 17:18:26
タグ:

img

概要

Bollinger Bands をベースにした平均逆転取引戦略です.トレンド市場における短期逆転機会を把握するために,平均逆転取引とリスク管理メカニズムを組み合わせます.

戦略の論理

この戦略は,過度に拡張された価格領域を特定するために20日ボリンジャー帯を使用する.価格は上部帯に近づくと短く,価格が下部帯に近づくと長くなり,最終的に逆転を利益とする.

ストップ・ロストとテイク・プロフィートをATRに基づいて設定する.ストップ・ロスは移動平均をマイナス2倍ATRで割る価格で設定される.テイク・プロフィートは価格プラス3倍ATRで設定される.これは取引ごとにリスクを効果的に制御する.

具体的には,この戦略には以下の内容が含まれます.

  1. 20日間のボリンジャー・バンドの上帯,下帯,移動平均を計算する
  2. 14日間のATRを計算する
  3. 価格が下帯を超えるとロング; 上帯を超えるとショート
  4. 価格でストップ・ロスを設定し,価格を2倍 ATRをマイナスし,価格を3倍 ATRをマイナスします.
  5. ストップ・ロスを価格+2×ATRで設定し,ショートで価格−3×ATRで利益を取ります.

利点分析

主な利点は以下の通りです.

  1. ボリンガー帯は,過度に拡大した価格領域を効果的に識別します.
  2. 平均逆転による逆転からの利益
  3. ATRはリスク管理を停止する
  4. 複数の収益性の高い取引で ポジティブなバックテスト結果

リスク分析

潜在的リスクは以下のとおりです.

  1. 価格の傾向が続く場合,逆転の失敗リスク
  2. ストップ・ロスは価格格差によるリスクを回避する
  3. 変化する市場のために必要なパラメータ最適化

解決策:

  1. ストップ・ロスのルールを厳格に遵守し,取引ごとに損失を制限する.
  2. 現在の市場に対応するパラメータを最適化
  3. オプションまたは他のツールを使用してギャップリスクをカバーする

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

戦略は以下によってさらに最適化できます.

  1. 最適パラメータの異なる移動平均値のテスト
  2. トレンド決定を改善するためにフィルターを追加する
  3. ATR 倍数を停止と制限値に調整する
  4. 市場制度に基づく動的退出メカニズムの導入

安定性や収益性をさらに高めます

概要

概要すると,トレンドフィルターとリスクマネジメントのボリンジャーバンド平均逆転戦略は,ポジティブな結果を示しています.継続的な最適化と改善により,安定した高品質の過剰収益の可能性があります.


/*backtest
start: 2022-12-20 00:00:00
end: 2023-08-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Mean Reversion with Risk Management", overlay=true)

// Inputs for Bollinger Bands and Risk Management
length = input(20, minval=1, title="Bollinger Bands Length")
mult = input(2.0, title="Bollinger Bands Multiplier")
stopLossATRMult = input(2.0, title="Stop Loss ATR Multiplier")
takeProfitATRMult = input(3.0, title="Take Profit ATR Multiplier")

// Bollinger Bands Calculation
src = close
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
plot(upper, "Upper Band", color=color.red)
plot(lower, "Lower Band", color=color.green)

// ATR for Stop Loss and Take Profit
atr = atr(14)

// Trading Conditions
longCondition = crossover(src, lower)
shortCondition = crossunder(src, upper)

// Order Execution with Stop Loss and Take Profit
if (longCondition)
    sl = src - stopLossATRMult * atr
    tp = src + takeProfitATRMult * atr
    strategy.entry("Long", strategy.long, stop=sl, limit=tp)

if (shortCondition)
    sl = src + stopLossATRMult * atr
    tp = src - takeProfitATRMult * atr
    strategy.entry("Short", strategy.short, stop=sl, limit=tp)


もっと