볼링거 밴드 및 피보나치 거래 전략

저자:차오장, 날짜: 2023-09-21 21:04:38
태그:

전반적인 설명

이 전략은 볼링거 밴드 (Bollinger Bands) 와 피보나치 리트레이스먼트 (Fibonacci retracement) 인디케이터를 결합하여 멀티 인디케이터 접근 방식을 제공합니다. 전형적인 결합된 인디케이터 전략 유형에 속합니다. 볼링거 밴드는 트렌드 방향을 결정하고 피보나치 레벨은 거래 신호를 생성하기위한 주요 지원 및 저항 구역을 식별합니다.

전략 논리

이 전략은 두 가지 주요 지표에 기반합니다.

  1. 볼링거 밴드

    상단, 중단 및 하단 밴드를 계산합니다. 하단 밴드 위의 가격 파업은 긴 신호이며 상단 밴드 아래로 파업하는 것은 짧은 신호입니다.

  2. 피보나치 리트레이싱

    0% 및 100% 리트레이싱 레벨을 계산합니다. 역사적인 최고와 최저를 기반으로 합니다. 이들은 주요 지원 및 저항 레벨로 작용합니다.

구체적인 거래 논리는 다음과 같습니다.

긴 신호: 가격이 상단 범위를 넘어서 0% 피보나치 지지율을 넘습니다.

짧은 신호: 가격이 하위 범위를 넘어 100% 피보나치 저항보다 낮습니다.

출구는 중간에 위치하고 있습니다.

장점

  • 볼링거 밴드와 피보나치 지표를 결합합니다.
  • 띠는 트렌드를 판단하고 피보나치는 주요 수준을 식별합니다.
  • 거짓 신호가 발생할 확률이 더 낮습니다.
  • 중위 대역 출구 제어 마감
  • 명확한 입국 및 출입 규칙, 쉽게 실행

위험성

  • MA 기반의 지표는 최상위 수준을 놓치면서 뒤쳐질 수 있습니다.
  • 순수적으로 지표에 의해 움직이고 주요 사건에 대한 느린 반응
  • 이중 필터는 거래 빈도를 제한합니다.
  • 부적절한 매개 변수들은 폭과 리트레이싱에 부정적인 영향을 미칩니다.
  • 매개 변수는 다양한 제품에 최적화가 필요합니다.

위험은 다음과 같이 감소 할 수 있습니다.

  • 가장 좋은 매개 변수 조합에 최적화
  • 촛불 패턴을 추가하는 것과 같은 입시 기준을 완화합니다.
  • 후속 정류로 출구 개선
  • 제품별로 별도의 매개 변수 테스트
  • 위치 크기를 조절하는 시스템

개선 방향

이 전략은 다음과 같이 개선될 수 있습니다.

  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



더 많은