다단계 볼린저 밴드와 MACD 지표를 기반으로 한 양적 거래 전략


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

다단계 볼린저 밴드와 MACD 지표를 기반으로 한 양적 거래 전략

전략 개요

이 전략은 여러 단계의 브린 띠와 MACD 지표를 결합하여 가격과 브린 띠의 하향 경로와 MACD 지표의 교차 신호를 식별하여 다양한 시장 조건에서 다른 거래 전략을 수행합니다. 가격이 브린 띠를 뚫고 MACD가 부착되면 전략은 다단계 포지션을 열고; 가격이 브린 띠의 하향 경로를 뚫고 MACD가 부착되면 전략은 공백 포지션을 열습니다. 이 전략은 시장의 유동적 인 기회를 포착하는 동시에 MACD 지표의 교차 신호를 사용하여 트렌드를 확인하는 효과를 활용하여 거래의 승률과 수익성을 높입니다.

전략 원칙

이 전략의 핵심 원칙은 시장의 트렌드 기회를 식별하기 위해 브린 밴드와 MACD 지표의 교차 신호를 이용하는 것입니다. 구체적으로:

  1. 부린 띠는 중간, 상단, 하단으로 구성되어 있으며, 가격의 이동 평균, 상위 표준 격차 및 하위 표준 격차를 나타냅니다. 가격이 부린 띠를 돌파하면 시장이 강력한 상승 추세에 들어갈 수 있음을 나타냅니다. 가격이 부린 띠를 돌파하면 시장이 강력한 하향 추세에 들어갈 수 있음을 나타냅니다.

  2. MACD 지표는 2개의 지수 이동 평균 ((EMA) 의 차수 ((즉, MACD 라인) 과 MACD 라인의 9일 EMA ((즉, 신호 라인) 로 구성된다. MACD 라인 상에서 신호 라인을 통과하면 시장이 상승 추세에 들어갈 수 있음을 나타냅니다. MACD 라인이 신호 라인을 통과하면 시장이 하향 추세에 들어갈 수 있음을 나타냅니다.

  3. 이 전략은 부린 띠와 MACD 지표의 교차 신호를 결합하여 가격이 부린 띠를 뚫고 경로에 올라 MACD가 부러지면 다단위 포지션을 열고, 가격이 부린 띠를 뚫고 경로에 내려면 MACD가 부러지면 빈 머리 포지션을 열습니다. 이러한 다중 조건의 거래 신호는 거래의 정확성과 신뢰성을 효과적으로 향상시킬 수 있습니다.

  4. 또한, 이 전략은 ATR (Average True Rampage) 지표를 도입하여 시장의 변동성을 측정한다. 가격이 부린 대역을 돌파하고 중도 + ATR보다 높을 때, 또는 가격이 부린 대역을 돌파하고 중도-ATR보다 낮을 때 전략은 포지션을 열는다. 이 추가 조건은 추세의 강도를 추가적으로 확인하고, 변동성이 적은 시장에서 자주 거래되는 것을 피한다.

전략적 이점

  1. 트렌드 추적 능력: 브린 밴드와 MACD 지표의 교차 신호를 통해 이 전략은 시장의 유행 기회를 효과적으로 포착하여 트렌드 형성 초기 단계에서 포지션을 열고 더 큰 수익 공간을 얻을 수 있습니다.

  2. 거래 신호의 신뢰성: 이 전략은 여러 조건의 거래 신호를 채택합니다. 즉, 가격이 브린 대역을 뚫고 MACD 교차 및 ATR 확인을 통해 거래 신호의 정확성과 신뢰성을 효과적으로 향상시키고 가짜 신호로 인한 손실을 줄일 수 있습니다.

  3. 적응성: 이 전략은 주식, 선물, 외환과 같은 다른 시장 환경과 자산 클래스에 적용할 수 있으며, 매개 변수 설정을 조정하여 전략의 성과를 다양한 시장에서 최적화 할 수 있습니다.

  4. 위험 제어: 이 전략은 ATR 지표를 도입하여 시장의 변동성을 측정하고, 추세가 불분명하거나 변동성이 적을 때 입장을 피하여 거래의 위험을 제어합니다.

전략적 위험

  1. 매개 변수 설정 위험: 이 전략의 성능은 브린 밴드 및 MACD 지표의 매개 변수 설정에 의존합니다. 매개 변수 설정이 부적절하면 거래 신호가 실패하거나 거래 빈도가 증가하여 전략의 수익에 영향을 미칠 수 있습니다. 따라서 다양한 시장 특성 및 자산 클래스에 따라 매개 변수 설정을 최적화해야합니다.

  2. 트렌드 반전 위험: 이 전략은 주로 트렌드 시장에 적용되며, 시장에서 빈번한 트렌드 반전이나 변동 상황이 발생하면 전략의 성능이 영향을 받을 수 있습니다. 이러한 위험에 대응하기 위해, 다른 기술 지표 또는 신호 필터링 메커니즘을 도입하여 트렌드의 효과를 식별 할 수 있습니다.

  3. 손실 위험을 확대: 이 전략은 트렌드 형성 초기 단계에서 포지션을 열고, 판단이 잘못되거나 트렌드가 갑자기 반전되면 손실이 커질 수 있습니다. 이러한 위험을 제어하기 위해 합리적인 스톱 손실을 설정하거나 스톱 손실을 추적하거나 포지션을 증가시키는 것과 같은 역동적인 포지션 관리 방법을 사용할 수 있습니다.

전략 최적화 방향

  1. 변수 최적화: 이 전략의 성능은 브린 밴드 및 MACD 지표의 변수 설정에 의존하며, 역대 데이터 재검토 및 변수 최적화를 통해 최적의 변수 조합을 찾고, 전략의 안정성과 수익성을 향상시킬 수 있다.

  2. 신호 필터링: 가짜 신호와 빈번한 거래를 줄이기 위해, 트렌드의 유효성과 지속성을 확인하기 위해 다른 기술 지표 또는 트렌드 지표, 평선 시스템 또는 시간 필터링과 같은 신호 필터링 메커니즘을 도입 할 수 있습니다.

  3. 포지션 관리: 이 전략은 보다 역동적이고 유연한 포지션 관리 방법을 채택할 수 있습니다. 시장의 변동성이나 트렌드 강도에 따라 포지션 크기를 조정하거나 다단계 포지션과 피라미드 포지션 등의 방법을 채택하여 전략의 위험 수익률을 최적화 할 수 있습니다.

  4. 조합 전략: 이 전략은 다른 유형의 거래 전략과 결합 할 수 있습니다. 예를 들어, 평균 회귀 전략, 계절 전략 또는 이벤트 드라이브 전략 등으로, 전략의 적응성과 안정성을 높이고, 위험 분산과 수익 증진을 달성합니다.

요약하다

다단계 브린밴드 및 MACD 지표에 기반한 양적 거래 전략은 트렌드 추적형 전략으로, 브린밴드 및 MACD 지표의 교차 신호와 ATR 지표의 확인을 통해 트렌드 형성 초기 단계에서 더 큰 수익 공간을 확보하기 위해 포지션을 개설한다. 이 전략은 트렌드 추적 능력, 강력한 신호 거래 신뢰성, 강한 적응성 및 위험 제어 등의 장점을 가지고 있으며, 파라미터 설정 위험, 트렌드 전환 위험 및 손실 확대 위험 등이 있습니다.

전략 소스 코드
/*backtest
start: 2023-03-02 00:00:00
end: 2024-03-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Multi-Stage Bollinger Bands Strategy with MACD", overlay=true)

// Bollinger Bands settings
length = input.int(20, title="Bollinger Bands Length")
src = close
mult = input.float(2.0, title="Bollinger Bands Multiplier")

// MACD settings
macdShort = input.int(12, title="MACD Short EMA")
macdLong = input.int(26, title="MACD Long EMA")
macdSignal = input.int(9, title="MACD Signal Smoothing")

// ATR settings
atrLength = input.int(14, title="ATR Length")

// Calculate Bollinger Bands
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev

// Calculate MACD
[macdLine, signalLine, _] = ta.macd(close, macdShort, macdLong, macdSignal)

// Calculate ATR
atr = ta.atr(atrLength)

// Entry conditions
longCondition1 = ta.crossover(src, lower) and src > basis + atr and macdLine > signalLine
longCondition2 = ta.crossover(src, basis) and src > basis + atr and macdLine > signalLine
shortCondition1 = ta.crossunder(src, upper) and src < basis - atr and macdLine < signalLine
shortCondition2 = ta.crossunder(src, basis) and src < basis - atr and macdLine < signalLine

// Plot Bollinger Bands and MACD
plot(basis, color=color.blue)
plot(upper, color=color.red)
plot(lower, color=color.green)
plot(macdLine, color=color.orange)
plot(signalLine, color=color.purple)

// Plot entry signals
plotshape(longCondition1, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(longCondition2, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(shortCondition1, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)
plotshape(shortCondition2, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)

// Execute trades
strategy.entry("Buy1", strategy.long, when=longCondition1)
strategy.entry("Buy2", strategy.long, when=longCondition2)
strategy.entry("Sell1", strategy.short, when=shortCondition1)
strategy.entry("Sell2", strategy.short, when=shortCondition2)