볼린저 밴드와 피보나치 트레이딩 전략


생성 날짜: 2023-09-21 21:04:38 마지막으로 수정됨: 2023-09-21 21:04:38
복사: 2 클릭수: 1261
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이 전략은 브린띠 지표와 피보나치 회귀 지표를 결합하여 다중 지표 포트폴리오 거래를 구현한다. 전형적인 포트폴리오 지표 전략 유형에 속한다. 전략은 브린띠를 통해 트렌드 방향을 판단하고 피보나치 회귀는 중요한 지원 저항치를 결정하여 거래 신호를 생성한다.

전략 원칙

이 전략은 다음과 같은 두 가지 지표에 기초하여 판단됩니다.

  1. 브린 벨트

부린 벨트에서의 상반, 중반, 하반을 계산한다. 가격이 하반을 돌파할 때 더 많은 신호를 하고, 상반을 돌파할 때 빈 신호를 한다.

  1. 피보나치 후퇴

역사적인 고위점과 낮점을 기준으로 0%와 100%를 계산하여 두 가지 중요한 피보나치 회귀 지점을 계산한다. 이 두 지점은 중요한 지원과 저항 지점으로 사용될 수 있다.

거래 논리는 다음과 같습니다.

더 많은 신호: 가격이 브린 띠를 통과하고 0% 피포나치 지원 상단에 있습니다.

공백 신호: 가격이 브린을 통과하고 100% 피보나치 저항 아래로

평상지는 중궤도를 기준으로 중궤도 근처에 정지하거나 상실을 한다.

전략적 이점

  • 브린 벨트와 피보나치 두 지표의 조합
  • 브린은 트렌드 방향을 판단하고, 피보나치는 핵심 지점을 결정합니다.
  • 둘을 조합하면 필터링 오류 신호의 확률이 낮습니다.
  • 중간 궤도 근처의 정지 손해, 후퇴 제어 위치
  • 입출입 규칙이 명확하고, 작동하기 쉽습니다.

전략적 위험

  • 평균선 지표가 지연되기 쉽고, 최적의 지점을 놓칠 수 있습니다.
  • 지표만으로는 중대한 사고에 대한 대응이 충분하지 않습니다.
  • 이중 필터링 조건이 거래 빈도를 제한합니다.
  • 변수 설정을 잘못하면 브린밴드 및 철회 효과에 영향을 미칩니다.
  • 다른 품종은 개별적으로 최적화 매개 변수를 테스트합니다.

위험은 다음과 같은 방법으로 줄일 수 있습니다.

  • 최적화 매개 변수, 최적의 매개 변수 조합
  • K선 형태를 추가하는 것과 같은 적절한 허용 조건의 완화
  • 정지 손실 메커니즘을 최적화합니다. 예를 들어, 정지 손실을 추적합니다.
  • 각 종별로 테스트하는 최적의 변수
  • 포지션 관리 시스템을 적절하게 조정합니다.

최적화 방향

이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.

  1. 브린 밴드 변수를 최적화

오프-오프 레일을 계산하는 최적의 변수 비율을 찾습니다.

  1. 피보나치 회수주기를 최적화

테스트 계산 회수에서 다른 주기 변수

  1. 입학 조건의 완화

예를 들어, 브린 띠가 뚫렸을 때 K선 형태를 관찰한다.

  1. 정지 손실 메커니즘을 최적화

추적 기능이 있는 손해 방지 방법을 고려하세요.

  1. 다른 품종에 따라 개별적으로 테스트

다른 품종의 변수는 반드시 동일하지 않으며, 조정할 필요가 있습니다.

요약하다

이 전략은 브린띠와 피보나치 회수 지표를 조합하여 각자의 기술적 장점을 발휘하여 거래 신호의 품질을 향상시킵니다. 그러나 파라미터를 최적화하는 데 어려움이 있으며, 입시 조건이 너무 엄격합니다. 우리는 최적화 파라미터를 설정하고, 입시 조건을 적절하게 넓히고, 손실 제도를 개선하는 방법을 통해 전략 시스템을 개선하여 기술적 장점을 유지하면서 더 많은 거래 기회를 얻을 수 있습니다.

전략 소스 코드
/*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