ボリンジャー・バンドス ブレイクアウト再入場取引戦略

作者: リン・ハーンチャオチャン開催日:2024-03-08 14:08:53
タグ:

img

概要

この戦略は,ボリンジャーバンド指標に基づいている.主なアイデアは,価格が上または下帯から突破した後,ボリンジャーバンドに戻るのを待つこと,そして再入口点でのブレイクと同じ方向にポジションを確立することです.この戦略は,価格が極端な領域にいるときにしばしば逆転する特性を利用しています.ボリンジャーバンドブレイクと再入口の条件を組み合わせることで,市場のターニングポイントを把握し,より高い勝利率を達成することを目指しています.

戦略の原則

  1. ボリンジャー帯の中,上,下帯を計算する.中帯は移動平均線で,上,下帯は中帯で,一定の標準偏差をプラスまたはマイナスする.
  2. 価格がボリンジャーバンド上位または下位を突破するかどうかを決定する.閉値が上位帯を超えると,上向きの突破とみなされ,閉値が下位帯を下回ると,下向きの突破とみなされる.
  3. 上昇ブレイクが発生した場合,そのブレイクキャンドルの最高価格をピークとして記録する.下降ブレイクが発生した場合,そのブレイクキャンドルの最低価格をピークとして記録する.ピークは,価格が後に再入ったかどうかを決定するために使用される.
  4. ブレイクが発生した後,価格がボリンジャー帯に再入るのを待つ.もしこの時点で閉じる価格が上位と下位帯の間にある場合,価格は再入ると考えられます.
  5. 価格が再入ったとき,前回のキャンドルが上向きブレイク (break_up[1]と内側) だった場合,ロング;前回のキャンドルが下向きブレイク (break_down[1]と内側) だった場合,ショート.
  6. ポジション管理: ロングポジションで閉じる価格が中間帯を超えるとロングポジションを閉じる.ショートポジションで閉じる価格が中間帯を下るとショートポジションを閉じる.

利点分析

  1. ボリンジャー帯は高度な適応力があり,価格変動に応じて動的に調整することができ,トレンドと変動を把握するのに役立ちます.
  2. シンプルなボリンジャー・バンド・ブレイクアウト戦略と比較して,再入場条件を追加することで,一定程度に高値を追いかけて低値を売ることは避けることができ,入場品質も改善できます.
  3. アクシッド条件は,中間帯を基準として使用し,シンプルで使いやすいので,利益は比較的保護できます.
  4. 長さや偏差倍数などのボリンジャー帯のパラメータは,高度な柔軟性を備えてカスタマイズできます.

リスク分析

  1. ボリンジャー帯のパラメータの不適切な選択は,戦略のパフォーマンスに影響を与える早期または遅刻入入入につながる可能性があります.パラメータを最適化することでこれを緩和することができます.
  2. 価格がボリンジャー帯の近くで振動すると,ポジションの頻繁な開閉が起こり,取引コストが上昇する可能性があります.
  3. トレンドが非常に強く,価格がボリンジャー帯に長く戻らない場合,トレンド利益が見逃される可能性があります.
  4. ボリンジャー・バンド指標を単独で使うことは,一部の楽器や市場条件では効果的ではなく,他のシグナルと併用する必要がある場合があります.

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

  1. より多くのフィルタリング条件を導入することを検討する.例えば,価格がボリンジャー帯をしばらく上回っている場合,ブレイクアウトはより信頼性があり,MA角度やADXなどのトレンド決定指標をサポートするために使用する.
  2. 変動する市場では,盲目エントリを避けるために,制限オーダーとタイマーを追加できます.
  3. 出口の場合,出口タイミングを制御するために,ATRまたは移動平均をさらに組み合わせることができます.
  4. 適切な取引目標と時間枠を選択するために,異なる裏付け資産と時間枠のパラメータ最適化と特徴分析を行う.
  5. ポジション管理を追加することを検討する.例えば,波動性が縮小するときにポジションサイズを増やし,波動性が拡大するときにポジションサイズを減らす.

概要

ボリンジャーバンドス・ブレイクアウト・リエントリー・トレーディング・ストラテジー (Bollinger Bands Breakout Reentry Trading Strategy) は,シンプルで実用的な定量的なトレーディング・ストラテジーである.極端な状況に対する価格の反応を利用し,ボリンジャーバンドス・ツールを通じてエントリー・エグジット条件を構築し,トレンド開始・終了点を一定程度に把握し,頻繁な取引を制御することができる.同時に,この戦略にはパラメータ選択,振動する市場でのパフォーマンス不良,トレンドキャプチャ不足などの問題もある.詳細を最適化し,他のシグナルと組み合わせることで,この戦略の適応性と強度をさらに向上させることが期待されている.


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

//@version=5
strategy(shorttitle="BB", title="Bollinger Bands", 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(1.7, minval=0.001, maxval=50, title="StdDev")

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)

basis = ma(src, length, maType)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))

break_up = close > upper
break_down = close < lower
inside = close > lower and close < upper

sell_condition = break_up[1] and inside
buy_condition = break_down[1] and inside

// Conditions to close trades
close_sell_condition = close > basis
close_buy_condition = close < basis

trade_condition = sell_condition or buy_condition

// Tracking the high of the breakout candle
var float peak = na

if (not trade_condition)
    peak := close
if (break_up and peak < high)
    peak := high
if (break_down and peak > low)
    peak := low

// Entering positions
if (buy_condition)
    strategy.entry("Buy", strategy.long)
if (sell_condition)
    strategy.entry("Sell", strategy.short)

// Exiting positions when close crosses the basis
if (strategy.position_size > 0 and close_sell_condition) // If in a long position and close crosses above basis
    strategy.close("Buy")
if (strategy.position_size < 0 and close_buy_condition) // If in a short position and close crosses below basis
    strategy.close("Sell")

もっと