볼링거 밴드 (Bollinger Band) 를 기반으로 하는 장기 거래 전략 %B 지표

저자:차오장, 날짜: 2024-02-01 11:15:44
태그:

img

전반적인 설명

이 전략은 볼링거 밴드 %B 지표에 기반하여 거래 신호를 생성합니다. %B 값이 미리 설정된 임계치 이하로 떨어지면 긴 거리로 이동하고, 수익을 취하거나 손실을 중지 할 때까지 동적 위치 평균 접근 방식을 채택하여 트렌드를 따르고 있습니다. 이 전략은 볼링거 밴드 하단의 지원이 깨지면 인회 기회를 식별하는 데 적합합니다.

전략 논리

  1. N-day Bollinger Bands의 중간, 상위 및 하위 대역을 계산합니다.
  2. %B 값을 계산합니다: (%B = (Close - LowerBB) / ((UpperBB - LowerBB))
  3. %B 값이 임계값 아래로 떨어지면 긴 거리로 가세요 (예정값은 0)
  4. 엔트리 가격 (입시 가격의 105%의 기본값) 및 스톱 로스 (입시 가격의 95%의 기본값) 를 기준으로 수익을 취하는 세트
  5. 포지션에 추가하기 시작 후 조건이 충족되는 한 포지션
  6. 첫 번째 트리거 취득 또는 손실 중지 포지션을 닫습니다

이점 분석

이 전략의 장점은 다음과 같습니다.

  1. %B 지표는 하위 밴드 지원 후 회전 지점을 효율적으로 식별합니다.
  2. 동적 위치 평균화 는 더 큰 이익의 경향을 추적 합니다
  3. 명확한 수익 취득 및 손실 중지 조건은 위험 통제를 촉진합니다.

위험 분석

이 전략과 관련된 위험도 있습니다.

  1. %B에서 잘못된 신호의 확률이 높습니다.
  2. 다른 시장에서 더 자주 스톱 로스 트리거가 발생합니다.
  3. 공격적인 평균화 위험 통제되지 않은 손실

해결책:

  1. 신호 신뢰성을 확인하기 위해 KD 및 MACD와 같은 지표와 결합
  2. 시장 변동에 견딜 수 있도록 스톱 로스 배치 조정
  3. 위험 폭발을 피하기 위해 평균 속도 조절

더 나은 기회

이 전략은 다음 영역에서 더 이상 최적화 될 수 있습니다.

  1. 최상의 결과를 위해 다른 매개 변수 조합을 테스트
  2. 평균 논리를 최적화, 예를 들어 특정 수익 목표가 달성 된 후 추가를 중단하십시오.
  3. 유동성 낮은 주식에서 잘못된 거래를 방지하기 위해 유동성 필터를 추가합니다.

요약

전체적으로 이것은 상대적으로 견고한 장기 거래 전략입니다. 신호 정확성과 매개 변수 조정 모두 개선할 여지가 있습니다. 추가 신호 필터링과 신중한 포지션 사이징과 결합하면이 전략은 트렌딩 시장에서 괜찮은 결과를 얻을 수 있습니다.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bollinger Bands %B Long Strategy", shorttitle="BB %B Long Strategy", overlay=true)

// Girdiler
length = input.int(20, title="BB Length")
src = input(close, title="Source")
dev = input.float(2.0, title="Deviation")
kar_hedefi = input(5, title="Take Profit")
zarar_durumu = input(100, title="Stop Loss")
start_date = input(timestamp("01 Jan 2023 00:00 +0000"), "Start Date")
end_date = input(timestamp("01 Jan 2024 00:00 +0000"), "End Date")
altinda_kalirsa_long = input.float(0, title="hangi degerin altinda long alsin")

// Bollinger Bantları %B göstergesi
basis = ta.sma(src, length)
stdDev = ta.stdev(src, length)
upperBand = basis + dev * stdDev
lowerBand = basis - dev * stdDev
percentB = (src - lowerBand) / (upperBand - lowerBand)

// Alım-Satım Sinyalleri
longCondition = percentB < altinda_kalirsa_long

// Kar/Zarar Hesaplama
takeProfit = strategy.position_avg_price * (1 + kar_hedefi / 100)
stopLoss = strategy.position_avg_price * (1 - zarar_durumu / 100)

// Long (Alım) İşlemi
if (longCondition )
    strategy.entry("Long", strategy.long)
    strategy.exit("Take Profit/Stop Loss", "Long", limit=takeProfit, stop=stopLoss)

// Take Profit Seviyesi Çizgisi
plot(takeProfit, title="Take Profit", color=color.green, linewidth=1, style=plot.style_linebr)


더 많은