멀티 레벨 볼린저 밴드 회귀 트레이딩 전략

BB SMA stdev TP SL
생성 날짜: 2025-02-21 13:06:24 마지막으로 수정됨: 2025-02-21 13:06:24
복사: 1 클릭수: 463
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

멀티 레벨 볼린저 밴드 회귀 트레이딩 전략 멀티 레벨 볼린저 밴드 회귀 트레이딩 전략

개요

이것은 부린띠 평균값 회귀 원리에 기반한 거래 전략으로, 여러 스톱 레벨을 통해 분기 수익을 실현한다. 전략은 가격이 부린띠를 뚫고 돌아오는 경우에 거래하며, 5개의 다른 스톱 레벨을 설정하여 점진적으로 포지션을 감소시킨다. 동시에 위험을 제어하기 위해 다이내믹 스톱을 설정한다. 전략은 사용자 정의된 거래 시간 내에 실행할 수 있으며, 포지션 업그레이드를 지원한다.

전략 원칙

이 전략은 20주기의 부린밴드 지표에 기반하며, 2배의 표준 차이를 변동 영역으로 사용한다. 가격이 아래에서 하향 경로를 돌파하고 상장하면 마이너스 신호를 쏘아 올린다. 가격이 위로부터 상장하고 상장하면 마이너스 신호를 쏘아 올린다. 진입 후, 이 전략은 5단계 스톱 메커니즘을 사용하며, 각각 0.5%, 1%, 1.5%, 2%, 2.5%의 위치에 스톱 포인트를 설정하며, 각 스톱 포인트는 포지션의 20%를 평행한다. 마지막 스톱 포인트는 상대적인 부린밴드 위치에 설정된다. 동시에 위험을 제어하기 위해 1%의 스톱 손실을 설정한다.

전략적 이점

  1. 다단계 정지 메커니즘을 적용하여 추세가 지속될 때 더 많은 수익을 얻을 수 있으며 동시에 수익의 일부를 확보합니다.
  2. 거래 방향이 맞을 때 포지션을 추가하여 수익성을 높이는 것을 지원합니다.
  3. 부린 띠를 역동적인 지지 저항점으로 활용하여 시장의 변동에 적응합니다.
  4. 트레이딩 시간을 사용자 정의하여 트레이딩하지 않는 시간에 방해를 방지합니다.
  5. 위험 통제를 위한 손해 방지 장치

전략적 위험

  1. 높은 변동성 시장에서 종종 가짜 브레이크 신호를 유발할 수 있습니다.
  2. 급속한 트렌드 시장에서 더 큰 수익 기회를 놓칠 수 있습니다.
  3. 시장이 역전될 경우, 가증기계는 더 큰 손실을 초래할 수 있다.
  4. 유동성 부족으로 인해 여러 정지 주문이 완전히 실행되지 않을 수 있습니다. 다른 시장 환경에 적응하기 위해 브린 대역 변수와 스톱 스톱 손실 비율을 조정하는 것이 좋습니다.

전략 최적화 방향

  1. 신호 필터링 조건으로 교류량 지표를 도입하여 돌파의 신뢰성을 높인다.
  2. 변동률에 따라 동적으로 조정된 스톱 손실 위치
  3. 트렌드 필터 지표를 늘리고, 강한 트렌드에서 역전 거래를 피하십시오.
  4. 포지션 로직을 최적화하여 최대 포지션 제한을 설정합니다.
  5. 모바일 상쇄 기능을 추가하여 수익을 더 잘 보호하는 것을 고려하십시오

요약하다

이 전략은 브린 벨트 지표를 통해 평균값 회귀 기회를 포착하고, 다단계 스톱과 동적 스톱로드를 사용하여 위험을 관리한다. 전략의 장점은 유연한 포지션 관리 및 위험 제어 장치에 있다. 그러나 사용 시 시장 환경에 대한 적합성에 주의를 기울여야 한다. 추가 필터링 지표를 추가하고 스톱 스톱로드 파라미터를 최적화함으로써 전략의 안정성과 수익성을 더욱 높일 수 있다.

전략 소스 코드
/*backtest
start: 2025-02-19 10:00:00
end: 2025-02-20 00:00:00
period: 5m
basePeriod: 5m
exchanges: [{"eid":"Binance","currency":"BNB_USDT"}]
*/

//@version=5
strategy("Bollinger Band Reentry Strategy", overlay=true)

// Inputs
bbLength = input.int(20, title="Bollinger Band Length")
bbMult = input.float(2.0, title="Bollinger Band Multiplier")
stopLossPerc = input.float(1.0, title="Stop Loss (%)") / 100
tp1Perc = input.float(0.5, title="Take Profit 1 (%)") / 100
tp2Perc = input.float(1.0, title="Take Profit 2 (%)") / 100
tp3Perc = input.float(1.5, title="Take Profit 3 (%)") / 100
tp4Perc = input.float(2.0, title="Take Profit 4 (%)") / 100
tp5Perc = input.float(2.5, title="Take Profit 5 (%)") / 100
allowAddToPosition = input.bool(true, title="Allow Adding to Position")
customSession = input.timeframe("0930-1600", title="Custom Trading Session")

// Calculate Bollinger Bands
basis = ta.sma(close, bbLength)
dev = ta.stdev(close, bbLength)
upperBB = basis + bbMult * dev
lowerBB = basis - bbMult * dev

// Plot Bollinger Bands
plot(upperBB, color=color.red, title="Upper Bollinger Band")
plot(lowerBB, color=color.green, title="Lower Bollinger Band")
plot(basis, color=color.blue, title="Bollinger Band Basis")

// Entry Conditions
longCondition = (ta.crossover(close, lowerBB) or (low < lowerBB and close > lowerBB)) and time(timeframe.period, customSession)
shortCondition = (ta.crossunder(close, upperBB) or (high > upperBB and close < upperBB)) and time(timeframe.period, customSession)

// Execute Trades
if (longCondition)
    strategy.entry("Long", strategy.long, when=allowAddToPosition or strategy.position_size == 0)
if (shortCondition)
    strategy.entry("Short", strategy.short, when=allowAddToPosition or strategy.position_size == 0)

// Take-Profit and Stop-Loss Levels for Long Trades
if (strategy.position_size > 0)
    strategy.exit("TP1", "Long", limit=strategy.position_avg_price * (1 + tp1Perc), qty=strategy.position_size * 0.2) // Take 20% profit
    strategy.exit("TP2", "Long", limit=strategy.position_avg_price * (1 + tp2Perc), qty=strategy.position_size * 0.2)
    strategy.exit("TP3", "Long", limit=strategy.position_avg_price * (1 + tp3Perc), qty=strategy.position_size * 0.2)
    strategy.exit("TP4", "Long", limit=strategy.position_avg_price * (1 + tp4Perc), qty=strategy.position_size * 0.2)
    strategy.exit("TP5", "Long", limit=upperBB, qty=strategy.position_size * 0.2) // Take final 20% at opposite band
    strategy.exit("Stop Loss", "Long", stop=strategy.position_avg_price * (1 - stopLossPerc))

// Take-Profit and Stop-Loss Levels for Short Trades
if (strategy.position_size < 0)
    strategy.exit("TP1", "Short", limit=strategy.position_avg_price * (1 - tp1Perc), qty=strategy.position_size * 0.2)
    strategy.exit("TP2", "Short", limit=strategy.position_avg_price * (1 - tp2Perc), qty=strategy.position_size * 0.2)
    strategy.exit("TP3", "Short", limit=strategy.position_avg_price * (1 - tp3Perc), qty=strategy.position_size * 0.2)
    strategy.exit("TP4", "Short", limit=strategy.position_avg_price * (1 - tp4Perc), qty=strategy.position_size * 0.2)
    strategy.exit("TP5", "Short", limit=lowerBB, qty=strategy.position_size * 0.2)
    strategy.exit("Stop Loss", "Short", stop=strategy.position_avg_price * (1 + stopLossPerc))

// Alerts
alertcondition(longCondition, title="Long Signal", message="Price closed inside Bollinger Band from below.")
alertcondition(shortCondition, title="Short Signal", message="Price closed inside Bollinger Band from above.")