볼링거 밴드 피보나치 리트랙먼트 거래 전략

저자:차오장, 날짜: 2023-09-27 16:52:05
태그:

전반적인 설명

이 전략은 볼링거 밴드를 사용하여 가격 채널을 식별하고 알고리즘 거래를 위해 피보나치 리트레이싱 비율을 기반으로 지원 / 저항 수준을 결정합니다. 볼링거 밴드 브레이크를 감지하고 리트레이싱 수준을 추적하고 높은 확률의 리트레이킹 구역 주위에 긴 / 짧은 포지션을 입력합니다.

전략 논리

  1. 볼링거 밴드의 중간, 상부 및 하부 밴드를 계산합니다.

    • 중단역은 SMA이고, 상단/하단역은 SMA +/- ATR의 배수

    • 볼링거 밴드는 시장 변동성에 따라 확장 및 수축

  2. 비율을 기반으로 피보나치 리트레이싱 레벨을 계산

    • 리트레이싱 비율은 ATR * 피보나치 비율의 배수입니다.

    • 여러 Fib 레벨은 중간 대역을 기준으로 계산됩니다.

  3. 볼링거 밴드 (Bollinger Bands) 의 가격 유출을 모니터링합니다.

    • 가격이 상위 범위를 넘을 때 긴 거리를 고려하십시오.

    • 가격이 하위 범위를 넘어갈 때 짧은 것을 고려하십시오.

  4. 트레이드를 시작하고 Fib retracement 영역 주위 SL/TP를 설정합니다.

    • 가격이 Fib 구역으로 다시 끌 때 트레이드를 입력

    • 손해를 멈추고 다른 쪽에서 이익을 취하십시오.

이점 분석

  • 볼링거 밴드는 시장 변동성 범위와 동향을 명확하게 식별합니다.

  • 피보나치 비율은 주요 지지 및 저항 수준을 파악합니다.

  • 지표를 결합하면 알고리즘 거래가 가능합니다.

  • 백 엔트리는 성공 가능성을 높이고 추격을 피합니다.

  • 조정 가능한 매개 변수

위험 분석

  • 볼링거 밴드 브레이크는 잘못된 신호일 수 있습니다.

  • 가격이 언제 Fib 수준으로 다시 돌아갈지 정확히 예측하기 어렵습니다.

  • 잘못된 스톱 로스 투입이 손실을 증가시킬 수 있습니다.

  • 불충분하거나 과도한 인회 규모는 전략에 영향을 미칩니다.

  • 비효율적인 매개 변수 또는 지속적인 트렌드 시장은 전략을 무효화 할 수 있습니다.

  • 볼링거 밴드 논리를 개선하고, 부피, 동적 구역 조정 등을 고려합니다.

최적화 방향

  • 더 나은 트렌드 및 S/R 판단을 위해 볼링거 밴드 매개 변수를 최적화

  • 브레이크오웃 신호를 검증하기 위해 볼륨 표시기를 추가합니다.

  • 추락 확률 예측을 위해 기계 학습을 활용합니다.

  • 신호 검증을 위한 더 많은 기술 지표를 포함

  • 제품 특성 및 거래 세션에 기초한 합리적인 매개 변수를 선택

  • 변동성 변화에 따라 적시에 회전 구역 강도를 조정합니다.

결론

이 전략은 볼링거 밴드와 피보나치 리트레이싱의 강점을 결합하여 트렌드를 식별하고 높은 확률의 풀백 수준으로 진입합니다. 위험은 매개 변수 최적화, 추가 신호 검증, 동적 구역 조정 등으로 감소하고 결과를 향상시킬 수 있습니다. 볼륨, 머신 러닝 모델 등을 통합하여 확장 할 여지가 있습니다. 전략은 지속적인 최적화로 더 정교 할 수 있습니다.


/*backtest
start: 2023-08-27 00:00:00
end: 2023-09-26 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(shorttitle="BBands Fibo", title="Bollinger Bands Fibonacci Ratios", overlay=true)

length      =   input(20, minval=1, type=input.integer, title="Length")
src         =   input(close, title="Source")
offset      =   input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
fibo1       =   input(defval=1.618, title="Fibonacci Ratio 1")
fibo2       =   input(defval=2.618, title="Fibonacci Ratio 2")
fibo3       =   input(defval=4.236, title="Fibonacci Ratio 3")

fiboBuyReverse = input(false, title = "Use Reverse Buy?")
fiboBuy       =   input(options = ["Fibo 1", "Fibo 2", "Fibo 3"],defval = "Fibo 1", title="Fibonacci Buy")
fiboSellReverse = input(false, title = "Use Reverse Sell?")
fiboSell       =   input(options = ["Fibo 1", "Fibo 2", "Fibo 3"],defval = "Fibo 1", title="Fibonacci Sell")

sma = sma(src, length)
atr = atr(length)

ratio1 = atr * fibo1
ratio2 = atr * fibo2
ratio3 = atr * fibo3

upper3 = sma + ratio3
upper2 = sma + ratio2
upper1 = sma + ratio1

lower1 = sma - ratio1
lower2 = sma - ratio2
lower3 = sma - ratio3

plot(sma, style=0, title="Basis", color=color.orange, linewidth=2, offset = offset)

upp3 = plot(upper3, transp=90, title="Upper 3", color=color.teal, offset = offset)
upp2 = plot(upper2, transp=60, title="Upper 2", color=color.teal, offset = offset)
upp1 = plot(upper1, transp=30, title="Upper 1", color=color.teal, offset = offset)

low1 = plot(lower1, transp=30, title="Lower 1", color=color.teal, offset = offset)
low2 = plot(lower2, transp=60, title="Lower 2", color=color.teal, offset = offset)
low3 = plot(lower3, transp=90, title="Lower 3", color=color.teal, offset = offset)

fill(upp3, low3, title = "Background", color=color.new(color.teal, 95))

targetBuy = fiboBuy == "Fibo 1" ? upper1 : fiboBuy == "Fibo 2" ? upper2 : upper3
targetBuy := fiboBuyReverse == false ? targetBuy : fiboBuy == "Fibo 1" ? lower1 : fiboBuy == "Fibo 2" ? lower2 : lower3
buy = low < targetBuy and high > targetBuy

targetSell = fiboSell == "Fibo 1" ? lower1 : fiboSell == "Fibo 2" ? lower2 : lower3
targetSell := fiboSellReverse == false ? targetSell : fiboSell == "Fibo 1" ? upper1 : fiboSell == "Fibo 2" ? upper2 : upper3
sell = low < targetSell and high > targetSell

strategy.entry("Buy", true, when = buy)
strategy.entry("Sell", false, when = sell)


더 많은