長期取引戦略 ボリンジャー帯 %B インディケーター

作者: リン・ハーンチャオチャン,日付: 2024-02-01 11:15:44
タグ:

img

概要

この戦略は,ボリンジャーバンド%B指標に基づいて取引信号を生成する.%B値が既定の値を下回ると長くなって,トレンドをフォローするために動的ポジション平均化アプローチを採用し,利益を取るかストップロスを引き起こすまで.この戦略は,ボリンジャーバンドの下部のサポートが破られた後に引き下げ機会を特定するのに適しています.

戦略の論理

  1. N日ボリンジャー帯の中帯,上帯,下帯を計算する
  2. %B値を計算する: (%B = (Close - LowerBB) /(UpperBB - LowerBB)
  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)


もっと