볼링거 밴드 이중 경로 돌파 전략

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

img

전반적인 설명

이 전략은 볼링거 밴드 (Bollinger Bands) 를 기반으로 한 이중 트랙의 돌파구 거래 전략입니다. 볼링거 밴드의 상부 및 하부 레일을 구매 및 판매 신호로 사용하고 위험을 제어하기 위해 스톱 로스 포인트를 설정합니다.

전략 원칙

이 전략은 볼링거 밴드의 상부 및 하부 레일을 사용합니다. 볼링거 밴드는 이동 평균과 그에 대응하는 두 표준 편차 채널으로 구성됩니다. 가격이 볼링거 밴드의 상부 레일을 만지거나 뚫을 때 판매 신호가 생성됩니다. 가격이 볼링거 밴드의 하부 레일을 만지거나 뚫을 때 구매 신호가 생성됩니다. 또한 전략은 스톱 로스 포인트를 설정합니다. 가격이 이동 평균의 특정 비율보다 낮을 때 스톱 로스가 식별됩니다.

특히, 전략은 이동 평균과 지정된 주기의 표준편차의 두 배 (예를 들어 20 일) 를 계산하여 볼링거 밴드를 그래프화합니다. 상단 레일은 이동 평균과 표준편차의 두 배, 하단 레일은 이동 평균 빼기 표준편차의 두 배입니다. 폐쇄 가격이 상단 레일보다 크거나 같을 때 판매 신호가 발송됩니다. 폐쇄 가격이 하단 레일보다 작거나 같을 때 구매 신호가 발송됩니다. 또한, 가격이 이동 평균의 특정 비율 (예를 들어 1%) 보다 낮으면 스톱 로스 신호가 발송됩니다.

전략적 장점

이 전략은 불링거 밴드의 특징을 활용하여 비정상적인 가격 변동이 발생했을 때 거래 신호를 발행하여 가격 반전의 기회를 포착합니다. 간단한 이동 평균 추적 전략과 비교하면 이 전략은 변동성이 증가할 때 거래 신호를 생성하여 일부의 잘못된 브레이크아웃 위험을 피할 수 있습니다.

이 전략은 간단한 이중 트랙 돌파구 전략과 비교하여 스톱-러스 메커니즘을 추가합니다. 이것은 개별 잘못된 신호로 인한 손실을 효과적으로 제어 할 수 있습니다. 스톱-러스 포인트 설정 또한 이동 평균에 가깝고 과도한 스톱 손실을 피하여 너무 많은 손실을 유발하는 비교적 합리적입니다.

전략 위험

이 전략의 가장 큰 위험은 볼링거 밴드 자체가 거래 신호의 유효성을 보장 할 수 없다는 것입니다. 시장에서 특별한 상황이 발생하면 가격이 급격하고 비정상적으로 변동 할 수 있으며, 이 경우 볼링거 밴드에서 발행된 거래 신호가 잘못 될 수 있습니다. 이것은 상당한 손실을 초래할 가능성이 있습니다.

또한, 스톱 로스 포인트의 설정은 너무 공격적이거나 보수적일 수 있으며, 이는 최종 수익에 영향을 미칠 수 있습니다. 스톱 로스 범위가 너무 크면 유효한 신호는 종종 손실을 중단 할 수 있습니다. 스톱 로스 범위가 너무 작다면 손실을 효과적으로 제어 할 수 없습니다.

전략 최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 최적의 매개 변수를 찾기 위해 서로 다른 매개 변수 조합, 예를 들어 이동 평균 주기의 서로 다른 값, 표준 편차 배수, 스톱 손실 비율 등을 테스트합니다.

  2. 다른 지표를 높이고 잘못된 신호를 피하기 위해 여러 필터 조건을 형성합니다.

  3. 스톱 손실 전략을 최적화합니다. 예를 들어, 단순한 스톱 손실 대신 이동 스톱 손실, 랩 스톱 손실을 사용합니다.

  4. 다른 시간 사이클의 볼링거 밴드를 결합하여 거래 신호를 확인하여 함정에 빠지지 않도록하십시오.

요약

전체적으로, 이 전략은 트렌드 추적과 듀얼 트랙 돌파구 전략의 실용적인 조합이다. 가격 변동이 증가할 때 역전 기회를 잡을 수 있으며 위험을 제어하기 위해 스톱 손실을 설정할 수 있다. 매개 변수 최적화, 증대 신호 필터링, 최적화된 스톱 손실 전략 등을 통해 전략의 안정성과 수익성을 더욱 향상시킬 수 있다.


/*backtest
start: 2024-01-28 00:00:00
end: 2024-02-04 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bollinger Bands Strategy by Royce Mars", 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(2.0, minval=0.001, maxval=50, title="StdDev")
stopLossPercent = input.float(1.0, title="Stop Loss Percent", minval=0.1, maxval=10, step=0.1)

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

// Buy and Sell Conditions
buyCondition = close <= lower
sellCondition = close >= upper

// Stop Loss Condition
stopLossCondition = close < basis * (1 - stopLossPercent / 100)

// Strategy Execution
strategy.entry("Buy", strategy.long, when=buyCondition)
strategy.close("Buy", when=sellCondition or stopLossCondition)

strategy.entry("Sell", strategy.short, when=sellCondition)
strategy.close("Sell", when=buyCondition)

// Plotting on the Chart
plotshape(buyCondition, title="Buy Signal", color=color.green, style=shape.labelup, location=location.belowbar)
plotshape(sellCondition or stopLossCondition, title="Sell Signal", color=color.red, style=shape.labeldown, location=location.abovebar)

// Plotting the Bollinger Bands
plot(basis, "Basis", color=color.orange)
p1 = plot(upper, "Upper Band", color=color.blue)
p2 = plot(lower, "Lower Band", color=color.blue)
fill(p1, p2, title="Background", color=color.rgb(33, 150, 243, 95))


더 많은