ボリンジャーバンド%B指標に基づく長期取引戦略


作成日: 2024-02-01 11:15:44 最終変更日: 2024-02-01 11:15:44
コピー: 0 クリック数: 567
1
フォロー
1617
フォロワー

ボリンジャーバンド%B指標に基づく長期取引戦略

概要

この戦略は,ブリン帯%B指標をベースに取引シグナルを設計し,%B値が設定された値より低くなるときに多額の取引を行い,動的加仓の方法でトレンドを追跡し,預設のストップ・ロスの条件に達した後に平仓する.この戦略は,下行ブリン帯のサポート値を突破した後の反発状況を識別するために適用されます.

戦略原則

  1. N日ブリン帯の中線,上線,下線を計算する
  2. %B値の計算: ((閉盘価格 - 下軌道) / ((上軌道 - 下軌道)
  3. %B値が設定の値 (デフォルト0) よりも低い場合は,追加します.
  4. ポジション開設価格を基準として,ストップライン ((デフォルト開設価格の105%) とストップライン ((デフォルト開設価格の95%) を計算します.
  5. ポジションを開設した後は,条件を満たす限り,さらにポジションを入れ続けます.
  6. ストップ・ストップ・ロスの条件が最初に発動され,平定が決定されます.

優位分析

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

  1. %B指標を用いてブリン帯下線支柱反発点を識別し,高効率である
  2. ダイナミックな加仓法でトレンドをたどって利益を得ることができます.
  3. ストップ・ストップ・損失条件が明確で,リスク管理に有利

リスク分析

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

  1. %Bは偽信号を発する可能性が高いので,他の指標と組み合わせて確認する必要があります.
  2. 震災の停止はより頻繁に起こる可能性がある
  3. 過剰な急進はより大きなリスクをもたらす

対応方法:

  1. KD,MACDなどの指標の組み合わせを使用して,取引信号の信頼性を確保する
  2. 停止位置を調整し,震動を耐えられるスペースを拡大する
  3. リスクの制御を妨げないため,単発加減率を合理的に制御する

最適化の方向

この戦略は,以下の点で最適化できます.

  1. 異なるパラメータの組み合わせをテストし,最適なパラメータを探します.
  2. ポジションの論理を最適化して,収益の一定比率に達した後にポジションを停止する
  3. 流動性の高い株の不正取引を防ぐため,流動性の高いフィルターを追加する

要約する

この戦略は,全体として,より堅牢な長線取引戦略である.識別能力とパラメータ最適化には,さらに向上する余地がある.他の指標のフィルター信号と組み合わせて,ポジション管理をコントロールすれば,この戦略は,トレンドの状況でより良いリターンを得ることができる.

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

//@version=5
strategy("Bollinger Bands %B Long Strategy", shorttitle="BB %B Long Strategy", overlay=true)

// Girdiler
length = input.int(20, title="BB Length")
src = input(close, title="Source")
dev = input.float(2.0, title="Deviation")
kar_hedefi = input(5, title="Take Profit")
zarar_durumu = input(100, title="Stop Loss")
start_date = input(timestamp("01 Jan 2023 00:00 +0000"), "Start Date")
end_date = input(timestamp("01 Jan 2024 00:00 +0000"), "End Date")
altinda_kalirsa_long = input.float(0, title="hangi degerin altinda long alsin")

// Bollinger Bantları %B göstergesi
basis = ta.sma(src, length)
stdDev = ta.stdev(src, length)
upperBand = basis + dev * stdDev
lowerBand = basis - dev * stdDev
percentB = (src - lowerBand) / (upperBand - lowerBand)

// Alım-Satım Sinyalleri
longCondition = percentB < altinda_kalirsa_long

// Kar/Zarar Hesaplama
takeProfit = strategy.position_avg_price * (1 + kar_hedefi / 100)
stopLoss = strategy.position_avg_price * (1 - zarar_durumu / 100)

// Long (Alım) İşlemi
if (longCondition )
    strategy.entry("Long", strategy.long)
    strategy.exit("Take Profit/Stop Loss", "Long", limit=takeProfit, stop=stopLoss)

// Take Profit Seviyesi Çizgisi
plot(takeProfit, title="Take Profit", color=color.green, linewidth=1, style=plot.style_linebr)