ボリンジャー・ブレークアウト戦略

作者: リン・ハーンチャオチャン, 日付: 2023-09-21 10:38:13
タグ:

概要

この戦略は,ボリンジャー・バンドの指標に基づい,価格がボリンジャー・バンドの上または下線を突破したとき,ロングまたはショートポジションを取ります.これは突破動きを捕獲して利益を得ることを目的としています.

戦略の論理

  1. Bollinger 中間線,上下線の計算
  2. 下線ブレイクでロング,上線ブレイクでショート
  3. 取引時間を定義する開始時と終了時間を設定する
  4. 保持時間を設定し,デフォルトで日内出口

特に,最初に長さの長さの中間線SMAと,標準偏差の複数倍の上下線を計算する. 閉じるが下線から上へと突破すると,ロングに行く. 閉じるが上線から突破すると,ショートに行く. また,取引時間を制限するために開始と終了時間を設定する. 日常開業前に退出する.

この戦略は,価格がバンドを突破した後,拡大する動きを捕捉しようとしています. 下帯を突破すると上昇力強化が示されます.上帯を突破すると下降力強化が示されます. したがって,ブレイクラインに沿った取引は有利です.

利点分析

  1. シンプルで直感的で 理解し実行しやすい
  2. トレンドブレイクを判断するためにボリンガー帯を使用します.
  3. 異なるサイクルと製品に対する柔軟なパラメータ調整
  4. 日中出口管理 オブナイトリスク
  5. 長期または短期取引のみを可能にします

リスク分析

  1. 偽の脱出リスクです 初期脱出後 価格が戻る可能性があります
  2. パラメータを調整し 異なるサイクルに合わせて調整する必要があります
  3. 潜在的損失拡大リスク より大きなブレイク範囲は損失を拡大する可能性があります
  4. トランザクションコスト増加 頻繁に取引すると,トランザクションコストが上昇する可能性があります

エントリールールを最適化したり,ストップ・ロスを追加したり,トレンドフィルターを導入したりすることでリスクを減らすことができます.

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

  1. 異なるサイクルのためのパラメータを最適化
  2. トレンドをフォローするために再入国とピラミッド規則を追加します
  3. リスク管理にストップロスを導入する
  4. 重要なニュースイベントを避けるために取引時間を設定します
  5. 価格変動を避けるためにトレンドフィルターをテストする
  6. 異なる保持期間を評価し,結果を比較する

概要

これはボリンジャーバンドに基づいたブレイクアウト戦略である.ブレイクアウト動きから利益を得る.利点はシンプルな論理と簡単な実装である.デメリットは偽ブレイクアウトへの易感性である.リスクはパラメータ最適化,ストップ損失,取引時間制御などによって管理することができる.トレーダーは指標と取引ブレイクアウトの使用の基礎を理解することができます.


/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy("Noro's Bollinger Strategy v1.0", shorttitle = "Bollinger str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")

length = input(20, minval=1)
mult = input(1.0, minval=0.001, maxval=50)

fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")

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

upper = basis + dev
lower = basis - dev

up = close < lower
dn = close > upper
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)

if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00)))
    
if time > timestamp(toyear, tomonth, 31, 00, 00) or exit
    strategy.close_all()

もっと