볼린저 밴드를 기반으로 한 더블트랙 브레이크아웃 트레이딩 전략


생성 날짜: 2024-02-05 14:05:47 마지막으로 수정됨: 2024-02-05 14:05:47
복사: 4 클릭수: 660
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

볼린저 밴드를 기반으로 한 더블트랙 브레이크아웃 트레이딩 전략

개요

이 전략은 부린띠에 기반한 쌍궤도 브레이크 트레이딩 전략이다. 부린띠의 상단 및 하단 궤도를 구매 및 판매 신호로 사용하며, 위험을 제어하기 위해 스톱로스를 설정한다.

전략 원칙

이 전략은 브린 띠의 상단 및 하단 궤도를 사용합니다. 브린 띠는 평평선과 그에 대응하는 두 개의 표준 격차 통로로 구성됩니다. 가격이 브린 띠를 접촉하거나 돌파 할 때 판매 신호가 발생하며, 가격이 브린 띠를 접촉하거나 돌파 할 때 구매 신호가 발생합니다. 또한이 전략은 중지 손실을 설정합니다. 가격이 평평선보다 일정 비율로 낮아지면 중지 손실이 인식됩니다.

구체적으로, 전략은 지정된 주기 (예: 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))