ダブルB 知的追跡戦略

作者: リン・ハーンチャオチャン,日付: 2024-01-18 15:41:20
タグ:

img

これは,ボリンジャーバンドを使用する取引戦略である.この戦略は,ボリンジャーバンドを使用して価格が激しく変動するときの機会を特定し,それに応じて購入または販売の決定を下すことを目的としている.

戦略原則

戦略は,現在の価格が波動範囲内にあるかどうかを決定し,したがって,ポジションを開くか閉じるかの決定を下すために,ボリンガーバンドの上帯,中帯,下帯を計算する.価格が上帯に近づくと,それはロングの極端なポイントとみなされ,戦略はロングのポジションを閉じる.価格が下帯に近いときに,それはショートの極端なポイントとみなされ,戦略はロングのポジションを開くことを選択する.

また,戦略にはトレンド逆転要因も導入されている.逆転信号がある場合,対応する購入または販売決定も引き起こす.具体的には,戦略の論理は以下のとおりである.

  1. 上,中,下ボリンジャー帯を計算する
  2. 価格がバンドと逆転信号を突破した場合を判断します
    1. 中央帯を突破してトレンド信号として
    2. 逆転信号として上または下帯の近く
  3. 購入,販売,または閉じる注文を送信する

上記は,この戦略の基本的な取引論理である.ボリンジャー帯の特徴を活用し,トレンドと逆転要因を組み合わせることで,戦略は波動性が増加するときに逆転点を捕捉しようとします.

戦略 の 利点

通常の移動平均戦略と比較して,この戦略には以下の利点があります.

  1. より敏感で,価格が急激に変動する際の機会を把握できる
  2. トレンドと逆転の要素を組み合わせて,早急な逆転による損失を回避する
  3. 非不安定な領域で不要な買取/売却を避けるため,ある種のフィルター効果があります.
  4. 取引頻度を減らすために中央帯を通って主要なトレンド方向を判断する
  5. 誤った判断を減らすため,逆転フィルター条件を増やす

一般的には,この戦略はボリンジャーバンドと価格バーを比較的うまく組み合わせます.リスクをコントロールしながら一定の利益を確保するために,合理的な逆転点で取引します.

リスク と 最適化

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

  1. BBのパラメータが不適切で,価格変動を完全に把握できない
  2. 誤った逆転信号判断,逆転が欠落したり,逆転を誤って判断したり
  3. 傾向が不明である場合,中間帯の信号の低効率性

したがって,将来の最適化は以下の点に焦点を当てることができます.

  1. BBパラメータを異なる製品に基づいて適応的に最適化
  2. 逆転確率を判断するための機械学習モデルを増やす
  3. 傾向が不明である場合,他の指標に切り替える
  4. 取引信号をフィルターするためにより多くの価格パターンを組み合わせる

結論

結論として,これは典型的なボリンジャーバンドの取引戦略テンプレートです.これは,シグナルをフィルタリングするためにトレンド逆転判断を導入することによって,ボリンジャーバンドのみを使用する際の過剰な非効率な取引を避ける.理論的には良い戦略パフォーマンスにつながる可能性があります. しかし,パラメータとシグナルフィルタリングは,強度のためにさらに最適化および改善が必要であり,誤った判断を減らす必要があります.


/*backtest
start: 2023-12-18 00:00:00
end: 2024-01-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy("Noro's Bollinger Strategy v1.2", shorttitle = "Bollinger str 1.2", overlay = true )

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

length = input(20, defval = 20, minval = 1, maxval = 1000, title = "Bollinger Length")
mult = input(2.0, defval = 2.0, minval = 0.001, maxval = 50, title = "Bollinger Mult")
source = input(ohlc4, defval = ohlc4, title = "Bollinger Source")

uset = input(true, defval = true, title = "Use trend entry")
usect = input(true, defval = true, title = "Use counter-trend entry")

fromyear = input(2018, defval = 2018, 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")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
showbands = input(true, defval = true, title = "Show Bollinger Bands")

//Bollinger Bands
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev

//Lines
col = showbands ? black : na 
plot(upper, linewidth = 1, color = col)
plot(basis, linewidth = 1, color = col)
plot(lower, linewidth = 1, color = col)

//Body
body = abs(close - open)
abody = ema(body, 30)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0 
up1 = bar == -1 and close >= basis and close < upper and (close < strategy.position_avg_price or strategy.position_size == 0) and uset
dn1 = bar == 1 and close <= basis and close > lower and (close > strategy.position_avg_price or strategy.position_size == 0) and uset
up2 = close <= lower and usect
dn2 = close >= upper and usect
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open) and body > abody / 2

//Trading
if up1 or up2
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

if dn1 or dn2
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    
if exit
    strategy.close_all()

もっと