ボリンジャーバンドス振動突破戦略

作者: リン・ハーンチャオチャン, 日付: 2023年11月1日 16時45分54秒
タグ:

img

概要

この戦略は,ボリンジャーバンドとアロン指標を組み合わせて,不安定な市場の振動と突破から利益を得ます.これは振動傾向の市場でうまく機能し,突破後に間に合ってストップロスを設定し,ポジションを適切に終了するために利益条件を設定することができます.

戦略の論理

この戦略は主に2つの指標を用いて,取引機会と出口点を特定します.

まず,ボリンジャー帯. 中帯,上帯,下帯から構成される. 中帯は,n期間の閉値の単純な移動平均である. 上帯は中帯+k標準偏差である. 下帯は中帯−k標準偏差である. 中帯の上向き突破は下帯から長いエントリをシグナルする. 中帯の下向き突破は上層帯から短いエントリをシグナルする. 戦略は,波動傾向の中,中帯の突破周りを入力する機会点を識別するためにボリンジャー帯を使用する.

2つ目は,アルーン指標です.これは,n期間の最高値と最低値の相対的な強さを反映しています.アルーンはトレンドと機会を決定することができます.アルーンアップラインが限界値を超えると,上向き傾向を示します.アルーンダウンラインが限界値を超えると,下向き傾向を示します.この戦略は,上昇傾向を確認するためにアルーンアップとストップ損失を決定するためにアルーンダウンを使用します.

この2つの指標を組み合わせると,ボリンジャー突破が起き,アロンアップが限界値を超えるとロングになります.ストップ損失が引き起こすか,アロンアップが設定値を下回るとポジションを閉じます.

利点

  1. 複数の指標を組み合わせることで精度が向上します.単一の指標は市場の騒音に敏感です.ボリンジャー帯とアルーンの組み合わせは,誤った信号をフィルターすることができます.

  2. Bollinger Bands は,強いトレンド識別能力を持ち,短期的な突破の機会を検知することができる.Aroon は,長期的トレンドを判断し,範囲の市場で過剰な取引を避ける.

  3. 適切なリスク管理.ストップ・ロストとアルーン・ダウンはダウンサイドリスクを制御する.ポジションサイズも取引損失ごとに制限する.

  4. この戦略は,トレンドフォローする戦略と比較して,振動する市場でよりうまく機能します.

リスク

  1. ボリンジャー・バンドは不正確であり,突然の市場の出来事はボリンジャー・バンドを無効にすることができます.

  2. Aroon パラメータは最適化が必要です. 異なる市場では最高の結果のために調整されたAroon パラメータが必要です.

  3. ストップ・ロッドが太りすぎると繰り返し触れる. ストップ・ロッドの範囲は,繰り返し触れるのを避けるために適切にリラックスする必要があります.

  4. 強いトレンド市場を避ける. 戦略は振動する市場に適している. 強いトレンド市場でうまくいかない.

最適化

  1. ボリンジャーパラメータを最適化し,適応性ボリンジャーバンドを使用します.より柔軟性のためにパラメータを動的に調整することができます.

  2. ダイナミックなAroonパラメータを最適化する. 異なる資産とタイムフレームには異なるAroonパラメータが必要です. ダイナミックな最適化を研究します.

  3. RSI のようなフィルターを追加することで,買い過ぎ/売過ぎを避ける.戦略信号の精度をさらに向上させる.

  4. ストップ損失を最適化するために機械学習を使用します.アルゴリズムトレーニングは,繰り返しトリガーを最小限に抑えるためにより良いストップ損失方法を見つけることができます.

  5. OBV のようなボリュームと組み合わせると,偽のブレイクアウトを避けることができます.ボリューム指標は偽のボリンジャーブレイクアウト信号を防ぐことができます.

結論

一般的には,これは典型的な振動トレード戦略である.ボリンジャーバンドとアルーンを組み合わせて,短期間の市場振動をキャピタライズできる取引機会を特定する.適切なストップ損失,リスク管理,パラメータ最適化により,市場範囲に適している.しかし,トレンドする市場でそれを適用しないために最適化とリスク制御が必要です.さらなる改善により,非常に実践的な量戦略になることができます.


/*backtest
start: 2023-10-24 00:00:00
end: 2023-10-28 21:00:00
period: 1m
basePeriod: 1m
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/
// © relevantLeader16058

//@version=4
// strategy(shorttitle='Bollinger bands And Aroon Scalping',title='Bollinger bands And Aroon Scalping (by Coinrule)', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 30, commission_type=strategy.commission.percent, commission_value=0.1)

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"


// BB inputs and calculations
lengthBB = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(src, lengthBB)
dev = mult * stdev(src, lengthBB)
upper = basis + dev
lower = basis - dev
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)


lengthAr = input(288, minval=1)
AroonUP = 100 * (highestbars(high, lengthAr+1) + lengthAr)/lengthAr
AroonDown = 100 * (lowestbars(low, lengthAr+1) + lengthAr)/lengthAr


Confirmation = input(90, "Aroon Confirmation")
Stop = input(70, "Aroon Stop")

Bullish = crossunder (close, basis)
Bearish = crossunder (close, upper)

//Entry 

strategy.entry(id="long", long = true, when = Bullish and AroonUP > Confirmation and window())

//Exit

strategy.close("long", when = Bearish or AroonUP < Stop and window())




もっと