ボリンガー帯とフィボナッチ取引戦略

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

概要

この戦略は,ボリンジャーバンドとフィボナッチリトレースメントインジケーターを組み合わせ,マルチインジケーターアプローチを展開する.典型的な組み合わせインジケーター戦略タイプに属している.ボリンジャーバンドはトレンド方向を決定し,フィボナッチレベルは取引信号を生成するための主要なサポートとレジスタンスゾーンを識別する.

戦略の論理

この戦略は2つの主要指標に基づいています.

  1. ボリンジャー・バンド

    上位,中位,下位帯を計算します.下位帯を超える価格は長い信号で,上位帯以下に入る価格は短い信号です.

  2. フィボナッチリトレース

    歴史的な高値と低値に基づいて 0% と 100% のリトラクションレベルを計算します.これらは主要なサポートとレジスタンスレベルとして機能します.

具体的な取引論理は:

長信号:価格が上部帯を突破し,フィボナッチサポートの0%を超えています.

ショート信号: 価格が下帯を下回り,フィボナッチ抵抗の100%を下回る.

中央帯の周りの出口で 利益を得たり 損失を止めたりできます

利点

  • ボリンジャー帯とフィボナッチ指標を組み合わせる
  • バンドはトレンドを判断し,フィボナッチはキーレベルを特定します
  • 誤った信号の総確率が低い
  • 中間帯の出口制御減量
  • 明確な入国・退出規則,実行が簡単

リスク

  • MA ベースの指標は 最適水準を欠いているため遅れている可能性があります
  • 純粋に指標を駆使し,大きな出来事に対する反応が遅い
  • 2つのフィルターで取引頻度を制限する
  • 不適切なパラメータは,帯域とリトレースに悪影響を及ぼします
  • パラメータは異なる製品に最適化する必要があります

リスクは以下によって軽減できます.

  • 最適なパラメータ組み合わせの最適化
  • キャンドルスタイクパターンを追加するような 入場基準を緩和する
  • トラールストップによる出口の改善
  • 製品別のパラメータ試験
  • 位置サイズ調整システム

改善の方向性

戦略は以下によって改善できます.

  1. ボリンジャー・バンドのパラメータを最適化

    上部/下部帯の最適な比率を見つける

  2. フィボナッチリトレース期間の最適化

    リトラセージのための異なるバックバック期間をテストする

  3. 入国条件を緩和する

    バンドの断片でキャンドルスタイクパターンを観察

  4. 出口の改善

    トレイリングストップメカニズムを検討する

  5. 製品特異パラメータ試験

    パラメータは異なる製品に調整する必要があります

概要

この戦略は,ボリンジャーバンドとフィボナッチリトラセメントの強みを組み合わせて,より高い品質のシグナルを実現する.しかし,難しいパラメータ最適化のような課題は存在している.パラメータ調整,エントリー基準の緩和,出口の強化などを通じて戦略を精製し,その利点を保持することができる.バックテスト結果に基づく継続的な調整も強固性の鍵である.


/*backtest
start: 2023-09-13 00:00:00
end: 2023-09-20 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bollinger Bands & Fibonacci Strategy", shorttitle="BB & Fib Strategy", overlay=true)

// Initialize position variables
var bool long_position = false
var bool short_position = false

// Bollinger Bands settings
length = input.int(20, title="Bollinger Bands Length")
src = input(close, title="Source")
mult = input.float(2.0, title="Standard Deviation Multiplier")

basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)

upper_band = basis + dev
lower_band = basis - dev

// Fibonacci retracement levels
fib_0 = input.float(0.0, title="Fibonacci 0% Level", minval=-100, maxval=100) / 100
fib_100 = input.float(1.0, title="Fibonacci 100% Level", minval=-100, maxval=100) / 100

// Plotting Bollinger Bands
plot(upper_band, color=color.red, title="Upper Bollinger Band")
plot(lower_band, color=color.green, title="Lower Bollinger Band")

// Calculate Fibonacci levels
fib_range = ta.highest(high, 50) - ta.lowest(low, 50)
fib_high = ta.highest(high, 50) - fib_range * fib_0
fib_low = ta.lowest(low, 50) + fib_range * fib_100

// Plot Fibonacci retracement levels
plot(fib_high, color=color.blue, title="Fibonacci High")
plot(fib_low, color=color.orange, title="Fibonacci Low")

// Entry conditions
long_condition = ta.crossover(close, upper_band) and low > fib_low
short_condition = ta.crossunder(close, lower_band) and high < fib_high

// Plot arrows on the chart
plotshape(series=long_condition, title="Long Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=short_condition, title="Short Entry", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)

// Entry and exit logic
if long_condition and not short_position
    strategy.entry("Long", strategy.long)
    long_position := true
    short_position := false

if short_condition and not long_position
    strategy.entry("Short", strategy.short)
    short_position := true
    long_position := false

// Exit conditions (you can customize these)
long_exit_condition = ta.crossunder(close, basis)
short_exit_condition = ta.crossover(close, basis)

if long_exit_condition
    strategy.close("Long")
    long_position := false

if short_exit_condition
    strategy.close("Short")
    short_position := false



もっと