다중 기간 볼린저 밴드 돌파 회귀 트레이딩 전략

BB SMA RSI 标准差 动态止损 风险回报比 回归交易 技术分析 仓位管理
생성 날짜: 2025-04-03 10:26:06 마지막으로 수정됨: 2025-04-03 10:26:06
복사: 0 클릭수: 370
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

다중 기간 볼린저 밴드 돌파 회귀 트레이딩 전략 다중 기간 볼린저 밴드 돌파 회귀 트레이딩 전략

개요

다중 주기 브린띠 돌파 회귀 거래 전략은 가격 변동성에 기반한 평균 회귀 거래 시스템으로, 시장의 과도한 확장 후 회귀 기회를 포착하는 데 초점을 맞추고 있다. 이 전략은 브린띠 지표를 이용한다. 20주기 간단한 이동 평균과 1.5배의 표준 차이의 구성으로) 시장의 극단적 행동을 식별하고 특정 조건이 촉발되면 거래를 실행한다. 가격이 완전히 경로를 돌파한 후 회귀하거나 경로를 돌파한 후 반발하면, 시스템은 각각 공백 또는 다중 신호를 발생시키며, 정밀한 위험 메커니즘을 결합하면서, 각 거래의 위험을 관리하고, 3: 1의 수익률을 추구한다.

전략 원칙

이 전략의 핵심 원칙은 평균값 회귀 이론에 기초하고 있으며, 이는 가격이 단기간에 평균값에서 크게 벗어나면 회귀하는 경향이 있다고 생각합니다. 구체적인 구현 논리는 다음과 같습니다:

  1. 신호 인식 메커니즘

    • 공백 조건: 어떤 K 선이 완전히 상자 위에 형성되었을 때 (개시 가격, 폐쇄 가격 및 최저 가격은 모두 상자보다 높습니다), 그리고 그 다음의 4 개의 K 선에서 가격이 신호 K 선의 최저 지점을 넘어서는 것은 공백 신호를 유발합니다.
    • 다중 조건: 어떤 K 선이 완전히 하향 레일 아래에 형성되었을 때 (개점 가격, 닫기 가격 및 최고 가격은 모두 하향 레일보다 낮습니다), 그리고 다음의 4 개의 K 선에서 가격이 신호 K 선의 최고점을 돌파하여 다중 신호를 유발합니다.
  2. 동적 중지 손해 설정

    • 공백 거래: 교차 신호 K선을 돌파하는 가장 높은 지점에 스톱 로드를 설정한다.
    • 다중 거래: 다운 레일 신호 K 라인을 뚫고 가장 낮은 지점에 스톱 로드를 설정한다.
  3. 정확한 포지션 계산

    • 시스템은 매 거래마다 고정된 리스크 금액 (인도 루피 4000) 과 실시간으로 계산된 스톱 로즈 거리를 기반으로 거래 수를 동적으로 결정하여 시장의 변동성에도 불구하고 리스크 금액이 일관되게 유지되도록합니다.
  4. 점진적 손실 관리

    • 거래 수익이 위험액의 2배에 달할 때, 스톱로스는 입수 가격 ((보장된 기본위치)) 으로 이동하여, 수익의 일부를 잠금한다.
    • 이윤이 위험액의 3배에 달했을 때, 시스템은 자동으로 청산하여 거래를 완료한다.
  5. 유효 시간 창

    • 신호 K 라인이 나타나면, 시스템은 단지 4개의 K 라인 내의 돌파행위를 고려한다. 이 창을 초과하면 신호가 무효화되어, 지연 거래가 피된다.

전략적 이점

  1. 정확한 위험 통제: 거래 수를 동적으로 계산하여 거래당 최대 리스크가 4000 INR로 고정되도록 하며, 정확한 리스크 관리를 구현한다.

  2. 시장의 변동성에 적응하는 것브린 띠는 표준 격차 계산을 기반으로 시장의 변동성에 따라 자동으로 조정할 수 있으며, 전략은 다양한 시장 환경에서 적응성을 유지할 수 있습니다.

  3. 명확한 거래 규칙입시, 중지 및 수익 조건을 명확히 규정하고, 주관적 판단을 줄이고, 거래 규율을 높입니다.

  4. 점진적 위험 관리: 거래가 유리한 방향으로 진행될 때, 입시 가격으로 스톱로스를 이동하여 ‘제로 리스크’ 거래를 실현하고, 위험-수익 구조를 최적화한다.

  5. 평균값 회귀시장의 과도한 확장 후 회귀 추세를 효과적으로 활용하여 높은 확률 거래 기회에 집중하십시오.

  6. 시간 제한 필터링: 4개의 K선으로 유효 기간제기를 통해, 노후화 신호의 실행을 피하고 거래의 시간 효율성을 높인다.

  7. 시각적 피드백 시스템부린의 곡선을 거칠게 하여, 시장의 상황을 직관적으로 알 수 있고, 거래 의사결정을 돕는다.

전략적 위험

  1. 급격한 변화의 위험: 강한 트렌드 시장에서 가격이 평균 회귀 논리를 따르지 않을 수 있으며, 이로 인해 연속적인 정지 손실이 유발됩니다. 해결책은 트렌드 필터를 추가하여 강한 트렌드 환경에서 역전 거래를 중지하는 것입니다.

  2. 유동성이 낮은 환경의 위험: 거래량이 부족한 시장에서는 많은 양의 주문을 이상적인 가격으로 수행하는 것이 어려울 수 있으며 실제 위험 제어 효과에 영향을 미칩니다. 유동성 검출 메커니즘을 증가시키고 낮은 유동성 환경에서 거래 규모를 줄이는 것이 좋습니다.

  3. 과잉 위험을 최적화합니다.: 고정된 브린 벨트 파라미터 ((20주기 SMA와 1.5배 표준 차) 는 서로 다른 시장이나 기간에 따라 다른 성과를 낼 수 있다. 시장 상황에 따라 동적으로 조정되는 적응 파라미터 시스템을 구현하는 것이 좋습니다.

  4. 극단적인 시장 위험: 시장의 폭등이나 급격한 변동 기간 동안 실제 중지 손실은 기본 수준을 훨씬 초과 할 수 있습니다. ATR 기반의 동적 중지 또는 가격 분산 중지와 같은 더 복잡한 중지 전략을 도입하는 것이 좋습니다.

  5. 자주 거래하는 위험: 높은 변동성 환경에서, 전략은 너무 많은 신호를 생성하여 거래 비용을 증가시킬 수 있습니다. 신호 품질 필터를 추가하여 최고 품질의 거래 기회만을 실행하는 것을 고려할 수 있습니다.

  6. 자금 관리 위험: 고정 위험 금액은 모든 계정 크기에 적합하지 않을 수 있습니다.

전략 최적화 방향

  1. 다중 주기 확인 시스템: 다중 시간 프레임 분석을 도입하여 거래 신호가 거래 성공률을 높이기 위해 더 높은 시간 프레임에서 확인되도록 요구합니다. 예를 들어, 당일 라인 그래프도 평균값 역향 경향을 나타내는 경우에만 시간 단위의 거래 신호를 수행합니다.

  2. 동적 브린 밴드 변수: 부린 대역의 적응 조정, 시장의 변동성이나 거래 품종 특성에 따라 최적의 주기 및 표준 차이의 배수를 동적으로 선택한다.

  3. 시장 환경 필터링: 시장 유형 식별 알고리즘을 추가하여 흔들리는 시장에서 전체 전략을 실행하고, 트렌드 시장에서 선택적으로 진행 신호를 실행하여 전략 적응성을 향상시킵니다.

  4. 양과 가격 결합 분석: 거래량 지표와 결합하여 브레이크 신호의 유효성을 확인합니다. 예를 들어, 브레이크를 요청할 때 거래량이 눈에 띄게 증가하고, 가짜 브레이크를 필터링합니다.

  5. 단계적 수익 전략: 고정된 3배 위험 수익 모드를 최적화하여, 2배 위험 시 50%의 매매, 3배 위험 시 매매 잔액을 매매하는 등, 분기 수익 시스템으로 전환하여, 자본 효율성을 높인다.

  6. 기계 학습 최적화: 기계 학습 모델을 도입하여 역사 신호를 분류하고, 높은 승률과 낮은 승률 신호의 특징을 식별하고, 더 정교한 신호 필터링 메커니즘을 구축한다.

  7. 연관성 분석 통합포트폴리오에서 다중 종목 거래를 고려할 때 연관성 분석을 추가하고, 동시에 매우 연관된 종목의 동방향 거래를 수행하는 것을 피하여 체계적인 위험을 줄입니다.

  8. 자금 관리 업그레이드: 고정 금액의 위험을 계정 규모에 기반한 동적 위험 분배로 변환하여, 계정 총액의 0.5%-2%, 위험과 계정 규모의 동적 균형을 달성한다.

요약하다

다주기 브린벨트 돌파 회귀 거래 전략은 매우 구조화되고 규칙이 명확한 기술 분석 거래 시스템으로, 브린벨트 지표를 통해 시장 과잉 행동 후의 회귀 기회를 포착한다. 그것의 핵심 장점은 정확한 위험 제어, 명확한 거래 규칙 및 점진적 인 손실 관리를 통해 거래자가 위험을 통제하면서 상당한 수익을 추구 할 수 있습니다.

그러나, 이 전략은 또한 트렌드 시장 적응력이 부족하고, 변수 최적화가 과도하고, 극한 시장 위험과 같은 도전을 직면한다. 다중 주기 확인, 동적 변수 조정, 시장 환경 필터링 및 자금 관리 업그레이드 등 최적화 조치를 도입함으로써 전략의 탄력성과 적응성을 크게 향상시킬 수 있다.

평균수익 상환 거래 기회를 추구하는 투자자에게는 이 전략은 실행 규율을 유지하면서도 다양한 시장 환경에 적응할 수 있도록 충분한 최적화 공간을 남기는 체계화된 방법을 제공합니다. 궁극적으로 이 전략을 성공적으로 실행하려면 시장의 역동성에 대한 깊은 이해, 지속적인 시스템 최적화 및 엄격한 위험 관리 규격이 필요합니다.

전략 소스 코드
/*backtest
start: 2024-04-03 00:00:00
end: 2025-04-02 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BNB_USDT"}]
*/

//@version=5
strategy("Bollinger Band Long & Short Strategy", overlay=true)

// Bollinger Bands settings
length = 20
src = close
mult = 1.5
basis = ta.sma(src, length)
deviation = ta.stdev(src, length)
upperBand = basis + (mult * deviation)
lowerBand = basis - (mult * deviation)

// Detecting a candle fully outside the upper Bollinger Band
prevCandleOutsideUpper = (close[1] > upperBand[1]) and (open[1] > upperBand[1]) and (low[1] > upperBand[1])

// Detecting a candle fully outside the lower Bollinger Band
prevCandleOutsideLower = (close[1] < lowerBand[1]) and (open[1] < lowerBand[1]) and (high[1] < lowerBand[1])

// Entry condition - Only within the next 4 candles break the low of the previous candle (Short)
breaksLow = ta.lowest(low, 4) < low[1] and ta.barssince(prevCandleOutsideUpper) <= 4

// Entry condition - Only within the next 4 candles break the high of the previous candle (Long)
breaksPrevHigh = ta.highest(high, 4) > high[1] and ta.barssince(prevCandleOutsideLower) <= 4

var float entryPrice = na
var float stopLoss = na
var float takeProfit = na
var float breakevenLevel = na
var float quantity = na
maxLoss = 4000.0 // Max loss set to INR 4000 per trade

// Short Trade
if prevCandleOutsideUpper and breaksLow
    entryPrice := low[1]
    stopLoss := high[1] // Stop-loss set to the high of the candle outside the upper BB
    risk = stopLoss - entryPrice
    quantity := risk > 0 ? math.floor(maxLoss / risk) : na // Ensuring risk is exactly 4000 per trade
    takeProfit := entryPrice - (risk * 3) // Adjusted for 1:3 risk-reward
    breakevenLevel := entryPrice - (risk * 2) // 1:2 level where stop loss moves to breakeven
    if not na(quantity) and quantity > 0
        strategy.entry("Short", strategy.short, qty=quantity)

// Move SL to breakeven if 1:2 is reached for Short
if strategy.position_size < 0 and close <= breakevenLevel
    strategy.exit("Move SL to breakeven", from_entry="Short", stop=entryPrice)

// Close trade at 1:3 for Short
if strategy.position_size < 0 and close <= takeProfit
    strategy.close("Short")

// Long Trade
if prevCandleOutsideLower and breaksPrevHigh
    entryPrice := high[1]
    stopLoss := low[1] // Stop-loss set to the low of the candle outside the lower BB
    risk = entryPrice - stopLoss
    quantity := risk > 0 ? math.floor(maxLoss / risk) : na // Ensuring risk is exactly 4000 per trade
    takeProfit := entryPrice + (risk * 3) // Adjusted for 1:3 risk-reward
    breakevenLevel := entryPrice + (risk * 2) // 1:2 level where stop loss moves to breakeven
    if not na(quantity) and quantity > 0
        strategy.entry("Long", strategy.long, qty=quantity)

// Move SL to breakeven if 1:2 is reached for Long
if strategy.position_size > 0 and close >= breakevenLevel
    strategy.exit("Move SL to breakeven", from_entry="Long", stop=entryPrice)

// Close trade at 1:3 for Long
if strategy.position_size > 0 and close >= takeProfit
    strategy.close("Long")

// Plot Bollinger Bands with increased visibility
plot(upperBand, color=color.red, linewidth=3, title="Upper Band")
plot(lowerBand, color=color.green, linewidth=3, title="Lower Band")
plot(basis, color=color.blue, linewidth=3, title="Middle Band")