ロングオンリーのボリンジャーバンドブレイクアウト追跡戦略


作成日: 2024-01-29 11:05:29 最終変更日: 2024-01-29 11:05:29
コピー: 4 クリック数: 668
1
フォロー
1617
フォロワー

ロングオンリーのボリンジャーバンドブレイクアウト追跡戦略

概要

ブリン帯突破策は,多頭だけのモメンタムトラッキング策である. ブリン帯の上線と下線を利用して,価格動力を判断し,価格が上線突破する時に多頭を行い,価格が下線や移動平均線に転落するときに平仓する.

戦略原則

この戦略は,最初にN日移動平均を基准線として計算し,その後,基准線の各下にK倍標準差を加え,上線と下線を構成し,ブリン帯を形成する.価格が上線を突破すると,価格が上線を突破したことを示し,金叉信号に属し,このとき戦略は多額のポジションを開く.価格が下線または移動平均線を突破すると,価格が下方へ戻ったことを示し,死叉信号に属し,このとき戦略は平仓をクリアする.

ブリン帯の上線と下線は,価格データのほとんどの分布を動的に包含できるので,それらは現在の市場価格の合理的な変動範囲を代表する.価格が合理的な変動範囲を突破すると,市場が異常で,適切なタイミングでポジションを調整する必要があることを意味する.これは,この戦略の基本判断論理である.

優位分析

この戦略の利点は以下の通りです.

  1. 価格の動向を効果的に捉え,市場勢いをタイムリーに追跡する
  2. ブリン帯の判断により,異常突破は容易で偽突破は難しい.
  3. ルールが明確で実行しやすい.
  4. 市場変動に応じて適切なパラメータを選択し,戦略を最適化できます

リスク分析

この戦略にはいくつかのリスクがあります.

  1. 市場が急激に波動すると ブリン帯の判断は失効する.
  2. 市場動向を判断できず,上昇と低下を追う可能性もある.
  3. 遅延がある
  4. 取引コストを考慮せずに,実際の操作効果は割引されます.

これらのリスクを制御するために,MACDなどのトレンド判断指標を組み合わせることができます.また,誤信号を減らすためにブリン帯域を縮小してパラメータを適切に調整することもできます.

最適化の方向

この戦略は以下の方向から最適化できます.

  1. 取引量指数と組み合わせた 真の突破を判断する
  2. ブリン帯のリアルタイム最適化パラメータを利用する
  3. 単一損失をコントロールするストップ・ロズ戦略
  4. ポジションの最適化メカニズムを増やし,市場状況に応じてポジションを動的に調整する

戦略の安定性をさらに高め,取引リスクを減らすことができます.

要約する

ブリン帯突破策は全体的に比較して古典的なトレンド追跡策である.判断論理が明確で操作が容易な特質があり,量化取引に適している.しかし,一定の欠陥があり,複雑で変動する市場環境に対応するためにさらに最適化する必要がある.他の指標と策略機構と効果的に結合できれば,効果を大幅に向上させることができる.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Senthaamizh

//@version=4
strategy(title="Bollinger Band Breakout", shorttitle = "BB-BO", overlay=true)
source = close
length = input(20, minval=1, title = "Period") //Length of the Bollinger Band 
mult = input(1.5, minval=0.001, maxval=50, title = "Standard Deviation") // Use 1.5 SD for 20 period MA; Use 2 SD for 10 period MA 
exit = input(1, minval=1, maxval=2,title = "Exit Option") // Use Option 1 to exit using lower band; Use Option 2 to exit using moving average

basis = sma(source, length)
dev = mult * stdev(source, length)

upper = basis + dev
lower = basis - dev

if (crossover(source, upper))
    strategy.entry("Long", strategy.long, qty=1)

if(exit==1)
    if (crossunder(source, lower))
        strategy.close("Long")

if(exit==2) //basis is good for N50 but lower is good for BN (High volatility)
    if (crossunder(source, basis))
        strategy.close("Long")

plot(basis, color=color.red,title= "SMA")
p1 = plot(upper, color=color.blue,title= "UB")
p2 = plot(lower, color=color.blue,title= "LB")
fill(p1, p2)