볼린저 밴드와 피보나치 수정 비율을 기반으로 한 거래 전략


생성 날짜: 2023-09-27 16:52:05 마지막으로 수정됨: 2023-09-27 16:52:05
복사: 0 클릭수: 1125
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이 전략은 부린띠를 사용하여 가격 통로를 결정하고 피보나치 회귀 비율을 결합하여 지지 저항 수준을 판단하여 자동 거래를 구현합니다. 이 전략은 부린띠의 돌파구를 식별하고 회귀 지점을 추적하여 높은 확률 회귀 지역에서 구매 또는 판매 조작을 수행합니다.

전략 원칙

  1. 브린 벨트에서 중간, 상단, 하단 레일을 계산한다

    • SMA와 ATR을 이용하여 중간선, 상단선, 하단선을 계산

    • 시장의 변동에 따라 부린 벨트 통로가 확장되고 수축합니다.

  2. 피보나치 회수율을 계산해

    • ATR과 피보나치 수열의 비율의 곱셈을 회수 비율로

    • 중궤도에 따라 여러 피보나치 회전 위치를 계산한다

  3. 감시 가격이 브린을 뚫고 오르락 내리락

    • 가격 부진이 발생하면 더 많은 것을 고려해야 합니다.

    • 가격 하락 시 공백을 고려하라

  4. 피포나치 회수점 근처에 입점 및 중지 스톱을 설정

    • 피포나치 철수 구역으로 환불

    • 다른 쪽으로 스톱 스톱을 설정합니다

우위 분석

  • 브린 띠는 시장의 변동 범위와 동향을 명확하게 식별합니다.

  • 피보나치 후퇴는 저항의 핵심 지지를 장악하는 것보다 낫습니다.

  • 지표 신호와 결합하여 자동 거래가 가능합니다.

  • 다시 복귀하면 성공률이 높아지고, 추종을 피할 수 있다.

  • 매개 변수를 조정하여 다른 주기 및 품종에 적응할 수 있다

위험 분석

  • 브린 벨트 돌파구가 가짜 돌파구일 수도 있고, 잘못된 신호를 만들어 낼 수도 있다.

  • “비포나 합의”로 언제 다시 돌아올지 정확히 예측할 수 없습니다.

  • 스톱포인트 선택이 잘못되면 손실이 커질 수 있습니다.

  • 너무 크고 작은 회귀가 전략에 영향을 미칠 수 있습니다.

  • 변수가 불합리하거나 시장의 방향성이 지속될 때 전략이 실패

  • 브린 띠 판단 논리를 최적화하고, 양력 지표, 역동적인 회수 영역 조정 등을 고려합니다.

최적화 방향

  • 트렌드 및 지원 저항에 대한 판단을 높이기 위해 브린 대역을 최적화합니다.

  • 양을 증가시키는 것은 돌파 신호의 효능을 판단하는 지표이다.

  • 기계학습을 통해 회귀 확률을 판단합니다.

  • 더 많은 기술 지표와 함께 거래 신호를 검증합니다.

  • 품종 특성과 거래시기에 따라 합리적인 매개 변수를 선택합니다.

  • 철수 구역의 강도와 변동성에 대한 적시 조정

요약하다

이 전략은 브린띠와 피보나치 회귀비 지표의 장점을 통합하여 트렌드 방향을 식별하고 높은 확률 회귀 포인트를 입력한다. 파라미터 최적화, 검증 지표를 추가, 회귀 지역을 동적으로 조정하는 등의 방법으로 위험 증진 효과를 줄일 수 있다. 전략 공간은 여전히 확장 가능하며, 양자 에너지 지표, 기계 학습 등의 증진 효과를 추가하는 등 지속적인 최적화에서 성숙되고 있다.

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