볼린저 밴드 브레이크아웃 역전 트레이딩 전략


생성 날짜: 2024-03-08 14:08:53 마지막으로 수정됨: 2024-03-08 14:08:53
복사: 2 클릭수: 654
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

볼린저 밴드 브레이크아웃 역전 트레이딩 전략

개요

이 전략은 부린띠 지표에 기반하며, 주요 아이디어는 가격이 부린띠를 뚫고 궤도에 오르거나 내리면, 가격이 부린띠 내부로 돌아가는 것을 기다린 다음, 회귀 지점에서 뚫린 방향과 동일한 위치를 구축하는 것이다. 이 전략은 부린띠의 뚫림과 회귀의 조합 조건을 통해 시장의 전환점을 포착하기 위해 극단적인 지역에서 가격이 반전되는 특징을 이용한다. 더 높은 승률을 얻기 위해.

전략 원칙

  1. 브린 띠의 중궤도, 상궤도 및 하궤도를 계산한다. 중궤도는 이동 평균으로, 상궤도 및 하궤도는 중궤도 더 빼기 일정한 표준차로이다.
  2. 가격의 부린 띠의 상반도를 돌파했는지 또는 하반도를 돌파했는지 판단하십시오. 상반도를 초과한 경우 상반도 돌파로 간주되며, 상반도를 넘어서는 경우 하반도 돌파로 간주됩니다.
  3. 만약 상향 돌파가 발생하면, K선에서 가장 높은 가격을 피크로 기록한다. 만약 하향 돌파가 발생하면, K선에서 가장 낮은 가격을 피크로 기록한다.
  4. 돌파가 발생한 후, 가격이 부린 반도 내부로 돌아가는 것을 기다립니다. 이 시점에 종전 가격이 상반도와 하반도 사이에 있다면, 가격이 돌아온 것으로 간주됩니다.
  5. 가격 회귀 시, K 선이 상향으로 돌파되면[1]and inside) 로 시작하면 다중을 열 수 있습니다.[1]그리고 안쪽 (in and inside) 에서, 텅 비어 있습니다.
  6. 포지션 관리: 다수 상자가 포지션을 보유할 때, 매출액이 상반 궤도를 통과하면, 평소; 빈 상자가 포지션을 보유할 때, 매출액이 하반 궤도를 통과하면, 평소.

우위 분석

  1. 브린은 가격 변동에 따라 동적으로 조정할 수 있는 강력한 적응력을 가지고 있으며, 트렌드 및 변동성을 포착하는 데 도움이 된다.
  2. 단순한 부린 벨트 돌파 전략에 비해, 회귀 조건을 증가시켜, 어느 정도 높은 추격을 피할 수 있고, 진출 품질을 향상시킬 수 있다.
  3. 평지 조건은 중간 궤도를 기준으로 하고, 간단하고 사용하기 편하며, 수익을 더 잘 보호할 수 있다.
  4. 브린띠의 길이나 오차배수 등과 같은 파라미터를 사용자 정의할 수 있으며, 유연성이 높다.

위험 분석

  1. 브린带参数의 선택이 잘못되면 조기 또는 너무 늦게 출전하여 전략의 성능에 영향을 미칠 수 있다. 최적화参数으로 완화할 수 있다.
  2. 부린 띠 근처에서 가격이 흔들릴 때 빈번한 하락이 발생하여 거래 비용이 증가할 수 있다.
  3. 동향이 강한 경우, 가격이 오랫동안 브린 구역 안에 돌아가지 않으면 동향 수익을 놓칠 수 있습니다.
  4. 브린 벨트 지표만 사용하면 특정 품종이나 특정 상황에 효과가 없을 수 있으며, 다른 신호와 함께 사용해야 한다.

최적화 방향

  1. 더 많은 필터링 조건을 도입하는 것을 고려할 수 있습니다. 예를 들어, 가격이 브린의 상단에서 잠시 동안 작동 한 후 더 안정적으로 돌파 할 수 있습니다. 또는 MA 각, ADX와 같은 추세를 판단하는 지표가 보조 판단에 사용됩니다.
  2. 지진 상황에 대비하여 제한 가격과 타이머를 늘려 맹목적인 입장을 피할 수 있다.
  3. 평상시에서는 ATR 또는 평선으로 연동하여 출전 시간을 조절할 수 있다.
  4. 서로 다른 지수와 주기에 대한 변수 최적화 및 특성 분석을 수행하고, 적절한 거래 지수와 주기들을 선택한다.
  5. 위치 관리를 추가하는 것을 고려할 수 있습니다. 예를 들어, 변동률이 수축할 때 위치를 늘리고, 변동률이 커질 때 위치를 줄일 수 있습니다.

요약하다

브린띠 돌파 회귀 거래 전략은 간단한 실용적인 수량 거래 전략이다. 그것은 극단적인 상황에 대한 가격의 반응을 이용하고, 브린띠 도구를 통해 평점 조건을 구축하고, 트렌드 시작과 끝점을 어느 정도 잡을 수 있으며, 빈번한 거래를 제어한다. 이 전략에는 또한 파라미터 선택, 충격적 인 상황에서의 열악한 성능, 트렌드 파악 부족 등의 문제가 있습니다. 세부 사항의 최적화 및 다른 신호와 결합하여 전략의 적응성과 무모성을 더욱 향상시킬 수 있습니다.

전략 소스 코드
/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-27 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(shorttitle="BB", title="Bollinger Bands", overlay=true)
length = input.int(20, minval=1)
maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = input.float(1.7, minval=0.001, maxval=50, title="StdDev")

ma(source, length, _type) =>
    switch _type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

basis = ma(src, length, maType)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))

break_up = close > upper
break_down = close < lower
inside = close > lower and close < upper

sell_condition = break_up[1] and inside
buy_condition = break_down[1] and inside

// Conditions to close trades
close_sell_condition = close > basis
close_buy_condition = close < basis

trade_condition = sell_condition or buy_condition

// Tracking the high of the breakout candle
var float peak = na

if (not trade_condition)
    peak := close
if (break_up and peak < high)
    peak := high
if (break_down and peak > low)
    peak := low

// Entering positions
if (buy_condition)
    strategy.entry("Buy", strategy.long)
if (sell_condition)
    strategy.entry("Sell", strategy.short)

// Exiting positions when close crosses the basis
if (strategy.position_size > 0 and close_sell_condition) // If in a long position and close crosses above basis
    strategy.close("Buy")
if (strategy.position_size < 0 and close_buy_condition) // If in a short position and close crosses below basis
    strategy.close("Sell")