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


생성 날짜: 2023-09-19 16:06:56 마지막으로 수정됨: 2023-09-19 16:06:56
복사: 2 클릭수: 821
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이 전략은 부린띠 지표에 기초하여, 가격이 부린띠를 뚫고 내려가면 더 많이 하고, 가격이 부린띠를 만져 올라갈 때 평소한다. 이 전략은 부린띠의 포용성 원리를 이용하여, 가격의 비정상적인 뚫음을 추적하여, 낮은 가격과 높은 가격의 판매를 달성한다.

전략 원칙

  1. 부린 띠의 중간 SMA를 계산하고, 최근 종전 가격의 간단한 이동 평균을 다.

  2. 기준차 StdDev, 가격 변동 범위를 반영한다.

  3. 중선 SMA와 표준 차이의 편차를 더하면 브린이 궤도에 올린다.

  4. 중선 SMA 빼기 표준저차 아래의 편차를 구하면, 브린이 궤도 아래로 니다.

  5. 마감가격이 하향에서 하향으로 돌파될 때 더 많은 입장을 다.

  6. 가격이 궤도에 닿을 때, 가격이 이상하다고 생각하고, 평지 상태에서 출발한다.

우위 분석

이 전략의 가장 큰 장점은 부린밴드 지표의 통계적 특성을 활용하여 시장의 비정상적인 변동을 효과적으로 추적하고 트렌드를 포착하는 것입니다. 일반적인 이동 평균 전략에 비해 부린밴드 전략은 더 우수합니다:

  1. 브린은 시장의 변동에 자동으로 적응할 수 있습니다.

  2. 진입 신호로서의 돌파는 더 신뢰할 수 있다.

  3. 회귀 중축은 정지 신호로 합리적이다.

  4. 매개 변수 최적화 공간은 넓고, 다른 시장에 맞게 조정할 수 있다.

  5. 중장선 트렌드를 포착할 수 있고, 단선에도 사용할 수 있다.

위험 분석

이 전략의 주요 위험은 다음과 같습니다.

  1. 브린 띠는 가로 디스크 시장에서 잘 작동하지 않습니다. 실수하는 것을 피하십시오.

  2. 파격 신호는 가짜 파격일 수도 있고 신중하게 판단해야 한다.

  3. 스톱 위치가 너무 이상적이어서 실제 상황으로 최적화할 수 있다.

  4. 잘못된 매개 변수 설정으로 인해 거래가 너무 자주 또는 신중하게 이루어질 수 있습니다.

  5. 복사주기는 충분히 길어지고, 곡접접합을 피한다.

대응 위험 처리 조치:

  1. 거래량 지표와 함께 필터링 신호.

  2. 최적화 매개 변수, 다른 시장의 데이터 효과 테스트.

  3. 이동 중지, 회전 중지 위치를 추가한다.

  4. 평가 신호는 회전하고, 추격하는 것은 피한다.

최적화 방향

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

  1. 다른 크기의 브린 밴드 파라미터를 시도하여 최적의 조합을 찾습니다.

  2. 평균선, MACD 등의 지표들을 필터링하여 브레이크 신호를 추가한다.

  3. 기계 학습 알고리즘을 적용하여 브린 대역변수를 최적화한다.

  4. 뚫고 진입하는 동시에 강점을 평가하고 위치를 조정한다.

  5. 더 긴 주기 데이터를 회수하고, 전략의 안정성을 테스트한다.

  6. 위험 조절을 위해 스톱패스 메커니즘을 추가합니다.

요약하다

브린띠 전략은 전반적으로 신뢰할 수 있는 트렌드 추적 전략이다. 그것은 가격의 비정상적인 변동을 효과적으로 잡을 수 있다. 그러나 우리는 또한 실제 상황과 오차를 주의하고 지속적으로 파라미터를 최적화해야 한다. 실장에 사용되는 경우, 반드시 엄격한 위험 관리가 이루어져 단기 손실을 통제해야 한다.

전략 소스 코드
/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-12 04:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy(title="BB training No Repainting (OTS Mode)", overlay=true)


// Strategy Rules:
// 1. Enter trade when price crosses above the lower band
// 2. Exit trade when price touches the upper band
// 

// Chart Properties
testStartYear = input(2010, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)

testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and time >= testPeriodStart and time <= testPeriodStop ? #6c6f6c : na
bgcolor(testPeriodBackgroundColor, transp=97)

// User provided values
smaLength = input(title="SMA Length", type=input.integer, defval=20) // Middle band period length (moving average)
stdLength = input(title="StdDev Length", type=input.integer, defval=20) // Range to apply bands to
ubOffset = input(title="Upper Band Offset", type=input.float, defval=2.0, step=0.5) // Number of standard deviations above MA
lbOffset = input(title="Lower Band Offset", type=input.float, defval=2.0, step=0.5) // Number of standard deviation below MA

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false

smaValue = sma(close, smaLength) // Middle band
stdDev = stdev(close, stdLength)
upperBand = smaValue + stdDev * ubOffset // Top band
lowerBand = smaValue - stdDev * lbOffset // Bottom band

// Plot bands to chart
plot(series=smaValue, title="SMA", color=color.green)
plot(series=upperBand, title="UB", color=color.blue, linewidth=2)
plot(series=lowerBand, title="LB", color=color.blue, linewidth=2)

longCondition = (crossover(close, lowerBand))
closeLongCondition = (close >= upperBand)

if (longCondition and testPeriod())
    strategy.entry(id="CALL", long=true)

strategy.close(id="CALL", when=closeLongCondition)