BB%B 전략

저자:차오장, 날짜: 2023-09-25 17:53:36
태그:

전반적인 설명

BB%B 전략은 투자 결정을 내리기 위해 볼링거 밴드의 B 비율 가치를 활용하는 양적 거래 전략이다. 가격이 볼링거 밴드의 상부 또는 하부 레일로 접근할 때 구매 및 판매 신호를 생성 할 수 있으며 트렌드 다음 전략에 속한다.

전략 논리

이 전략은 먼저 지정된 기간 동안 폐쇄 가격의 SMA와 표준편차를 계산하여 볼링거 밴드의 상부 및 하부 레일을 얻습니다. BB%B 지표는 공식 (현재 가격 - 하부 레일) / (상부 레일 - 하부 레일) 으로 계산된 볼링거 밴드 내의 현재 가격 위치를 나타냅니다. BB%B가 과판 한계 이하로 떨어지면 구매 신호가 생성됩니다. BB%B가 과판 한계 이상으로 상승하면 판매 신호가 생성됩니다. 거래 신호가 활성화 된 후 BB%B가 반대 한계까지 물러나면 포지션은 닫을 것입니다.

구체적으로, 전략은 먼저 21일 SMA와 2x 표준편차를 계산하여 볼링거 밴드의 상부 및 하부 레일을 얻습니다. 그 다음 현재 폐쇄 가격의 BB%B 값을 계산합니다. BB%B가 -0.2 (구성) 이하이고 현재 포지션이 없다면, 긴 거리로 가십시오. BB%B가 1.2 (구성) 이상이고 현재 포지션이 없다면, 짧은 거리로 가십시오. 긴 포지션이 존재하고 BB%B가 1.0 (구성) 이상 또는 짧은 포지션이 존재하고 BB%B가 0.2 (구성) 이하를 넘을 때 출구 신호가 유발됩니다.

이 전략은 BB%B 지표에 의존하여 현재 가격이 상승 또는 하락에 과도하게 확장되어 있는지 결정하고 또한 현재 트렌드 방향을 판단하기 위해 SMA를 사용합니다. 가격이 볼링거 밴드 레일을 초과하면 거래 신호를 생성합니다. 다른 매개 변수를 조정하면 전략의 빈도를 조정할 수 있습니다.

이점 분석

  • 과잉 구매/ 과잉 판매 수준을 식별하기 위해 볼링거 대역을 사용

볼링거 밴드의 상부 및 하부 레일은 현재 가격의 특정 표준편차 범위를 나타냅니다. 상부 레일 신호 오버쇼핑 조건에 접근하거나 접촉하는 가격, 하부 레일 신호 오버쇼핑 조건에 접근하거나 접촉하는 동안. BB%B 전략은 적절한 입출점을 결정하기 위해이 특성을 완전히 사용합니다.

  • 주파수를 조정할 수 있는 유연한 구성

BB%B 임계, SMA 기간, pullback 임계 모두 구성 가능하며, 이는 거래 주파수를 조정하는 데 편리함을 제공합니다. 더 긴 SMA와 더 큰 pullback 임계 사용은 주파수를 줄일 수 있습니다.

  • 트렌드 식별 조합

볼링거 밴드 (Bollinger Bands) 로 과잉 구매/ 과잉 판매를 결정하는 것 외에도 전체 트렌드를 판단하기 위해 SMA를 결합하여 트렌드에 반하는 거래를 피합니다.

  • 거짓 신호를 피하기 위한 역전기제

가격이 처음으로 볼링거 밴드 레일에 닿을 때, 과잉 구매/ 과잉 판매의 확률은 높지만, 단기적인 가짜 브레이크오웃도 될 수 있습니다. 이 전략은 풀백 임계점을 채택하고 BB%B가 명백히 반대편으로 물러나서서 잘못된 신호를 필터링한 후에야 지위를 종료합니다.

위험 분석

  • 가격 추세를 파악할 수 없습니다.

이 전략은 잠재적인 반전을 결정하기 위해 볼링거 밴드 지표만을 살펴보고 전체 추세를 무시하여 추세와 손실에 대한 거래로 이어질 수 있습니다.

  • 부적절한 회수 문턱은 기회를 놓칠 수 있습니다.

만약 리브랙 문턱이 너무 높게 설정되면, 트렌드 반전은 시간적으로 포지션 변경을 유발하지 않을 수 있고, 기회를 놓칠 수도 있습니다.

  • 볼링거 밴드가 확장되면 더 큰 가격 스프레드

시장 변동성이 증가하면 상위와 하위 레일 사이의 거리가 증가하여 진입 및 출구에 대한 더 큰 가격 스프레드를 초래하여 거래 당 위험이 증가합니다.

  • 상대적으로 높은 거래 빈도

장기 전략에 비해 이 전략은 거래 빈도가 높고 거래 비용과 미끄러짐이 더 높습니다.

개선 방향

  • 신호 필터링을 위한 트렌드 지표를 포함

MACD, KDJ와 같은 트렌드 결정 지표를 추가하여 트렌드 방향으로 트레이드를 유발하고, 트렌드 반대 트레이드를 피합니다.

  • 스톱 로스 메커니즘을 구현

거래 리스크별로 일정한 금액 또는 백분율 스톱 로스를 제어하고 손실 확장을 피합니다.

  • 매개 변수 조합을 최적화

최적의 매개 변수 조합을 찾기 위해 SMA 기간, BB%B 임계, pullback 임계 등을 조정하여 더 많은 소음을 필터링하고 안정성을 향상시킵니다.

  • 거래 비용을 고려

다른 상품의 경우 영향을 줄이기 위해 거래 비용 프로필에 따라 상거래 빈도를 낮추기 위해 매개 변수를 조정합니다.

요약

BB%B 전략은 간단하고 실용적인 양적 거래 전략이다. 볼링거 밴드를 사용하여 잠재적 인 반전 가격 지점을 식별하고, 트렌드 방향을 위해 SMA와 결합하고, 과잉 구매 / 과잉 판매 수준을 중심으로 거래한다. 전략은 빈도를 조정하는 데 유연하다. 그러나 전체 트렌드, 스톱 로스, 거래 비용과 같은 요인을 고려하여 추가 개선이 필요한 위험이 있습니다. 안정성과 수익성을 향상시키기 위해. 올바르게 사용하면 BB%B 전략은 양적 거래 시스템의 효과적인 구성 요소가 될 수 있습니다.


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

//@version=5
// strategy(title = "BB%B Strat", shorttitle = "BB%B Strat", format=format.price, precision=2, default_qty_type=strategy.percent_of_equity, default_qty_value=20)
length = input.int(21, minval=1)
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
ob = input.float(1.2, "Overbought Line", step=0.1)
ob_close = input.float(1.0, "Overbought Close", step=0.1)
os = input.float(-0.2, "Oversold Line", step=0.1)
os_close = input.float(0.2, "Oversold Close", step=0.1)
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
bbr = (src - lower)/(upper - lower)
p = plot(bbr, "Bollinger Bands %B", color=#26A69A)
ob_hline = hline(ob, "Overbought", color=color.red, linestyle=hline.style_dashed)
obc_hline = hline(ob_close, "Overbought Close", color=color.red, linestyle=hline.style_dashed)
os_hline = hline(os, "Oversold", color=color.green, linestyle=hline.style_dashed)
osc_hline = hline(os_close, "Oversold Close", color=color.green, linestyle=hline.style_dashed)
fill(ob_hline, obc_hline, color=color.new(color.red, 80), title="Overbought")
fill(os_hline, osc_hline, color=color.new(color.green, 80), title="Overbought")
bgcolor(bbr > ob ? color.new(color.fuchsia, 80) : (bbr < os ? color.new(color.lime, 80) : na))

if bbr < os and strategy.position_size == 0
    strategy.entry("L", strategy.long)
if bbr >= os_close and strategy.position_size > 0
    strategy.close_all()

if bbr > ob and strategy.position_size == 0
    strategy.entry("S", strategy.short)
if bbr <= ob_close and strategy.position_size < 0
    strategy.close_all()

더 많은