볼링거 밴드 역전 전략

저자:차오장, 날짜: 2024-02-20 17:05:47
태그:

img

요약

볼링거 밴드 반복 구역 전략 (Bollinger Bands Repetitive Zona Strategy) 은 볼링거 밴드를 기반으로 한 양적 거래 전략이다. 이 전략은 시장 변동성의 범위를 결정하고 잠재적 진입 및 출구 지점을 식별하기 위해 볼링거 밴드의 상위 및 하위 밴드 사이의 가격 범위를 사용합니다.

원칙

이 전략은 주로 다음의 평가 지표에 의존합니다.

  1. 볼링거 중위 밴드: 단순한 이동 평균 SMA, 전체 시장 추세를 나타냅니다.

  2. 볼링거 상단 (Bollinger Upper Band): 중간 + N 곱하기 표준편차. 상단은 시장 변동성의 상한을 나타냅니다.

  3. 볼링거 하위 밴드: 중간 - N 곱하기 표준 편차. 하위 밴드는 시장 변동성의 하위 한도를 나타냅니다.

종료 가격이 하부 레일보다 높고 개시 가격이 하부 레일보다 낮을 때, 잠재적인 바닥과 가능한 진입점으로 판단됩니다. 종료 가격이 상부 레일보다 높고 개시 가격이 상위 레일보다 낮을 때, 상부 레일 위에 잠재적인 파업 신호로 판단되며, 또한 시장에 진입 할 수 있습니다.

닫기 가격은 상단열선보다 낮고 열기 가격은 상단열선보다 높을 때, 그것은 볼링거 밴드의 상단에 들어갔다고 결정되고 출입을 고려해야합니다. 닫기 가격이 개시 가격보다 높고 상단열선과 하단열선 사이의 거리가 중간 선의 2 배를 초과하면 변동성이 증가했다고 판단되며 출입도 고려해야합니다.

이점 분석

  1. 이중 레일 판단의 조합은 신호의 정확성을 향상시킵니다. 폐쇄 가격과 개시 가격의 조합은 일부 잘못된 신호를 필터링 할 수 있습니다.

  2. 변동성 범위는 표준편차를 기반으로 계산되며 시장 변화에 자동으로 적응합니다. 고정 가격 범위를 수동으로 설정 할 필요가 없습니다.

  3. 중점 선의 추세 판단과 결합하여 추세가 없는 시장에서 반복적인 충격을 피합니다.

  4. 중간에 철도 돌파구를 사용하여 트렌드 반전 지점을 결정할 수 있습니다. 적시에 잠재적 인 기회를 파악 할 수 있습니다.

위험 분석

  1. 중장기 운영 전략은 장기 보유에 적합하지 않습니다. 적시에 손실을 멈추기 위해 시장 조건을 면밀히 모니터링해야합니다.

  2. 볼링거 대역은 특정 시간 내에만 유효합니다. 부적절한 매개 변수 설정은 쉽게 잘못된 신호를 생성 할 수 있습니다.

  3. 범위에 묶인 시장에서 중간 선은 크게 변동하며 상위와 하위 레일의 대차 발동이 더 빈번할 수 있습니다. 이 시점에서 포지션 크기는 줄여야하거나 일시적으로 거래를 중단해야합니다.

최적화 방향

  1. 더 긴 시간 사이클에 적응하도록 매개 변수를 조정합니다. 사이클 길이를 늘리고 기하급수적인 이동 평균을 사용하는 방법과 같은 방법은 중간 철도 알고리즘을 최적화 할 수 있습니다.

  2. ATR와 같은 변동성 지표를 추가하여 잘못된 돌파구를 추가로 피합니다. ATR의 미리 구축 된 값은 필터링 조건으로 설정 될 수 있으며 변동성이 특정 범위를 초과 할 때만 거래 신호가 생성됩니다.

  3. 바리 필터 효과를 얻기 위해 다른 지표를 결합합니다. 예를 들어 거래량 판단 규칙을 추가하십시오. 거래량이 확장 될 때만 작동합니다.

요약

볼링거 밴드 반복 구역 전략은 잠재적인 거래 기회로 가격 채널을 정의하기 위해 시장의 잠재적 극단성을 자동으로 식별합니다. 중장기 가격 반전을 포착하는 데 매우 적합하며 트렌드 추적 전략을 보완 할 수 있습니다. 합리적인 최적화를 통해 위험을 효과적으로 제어하고 수익성을 향상시킬 수 있습니다.


/*backtest
start: 2023-02-13 00:00:00
end: 2024-02-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("BB Strategy", shorttitle="BB", overlay=true)

length = input.int(55, 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., 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

// Entry conditions
enterCondition = (close > lower and open < lower and close > open) or (close > upper and open < upper and close > open)

// Exit conditions
exitCondition = (close < upper and open > upper) or (close > open and (upper - lower) > 2 * basis) or (close < lower)

strategy.entry("Long", strategy.long, when=enterCondition)
strategy.close("Long", when=exitCondition)

// Plotting
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))


더 많은