리소스 로딩... 로딩...

볼링거 밴드 및 기하급수적인 이동 평균 크로스오버 거래 전략

저자:차오장, 날짜: 2024-06-17 16:58:43
태그:EMABBSMA

img

전반적인 설명

이 전략은 거래 신호를 생성하기 위해 볼링거 밴드와 5일 기하급수적 이동 평균 (EMA) 을 결합합니다. 가격이 상위 볼링거 밴드 이상으로 깨지고 5일 EMA 아래로 닫히면 짧은 포지션이 열립니다. 반대로 가격이 하위 볼링거 밴드 아래에 깨지고 5일 EMA 위에 닫히면 긴 포지션이 열립니다. 또한, 역 신호가 나타나면 전략은 현재 포지션을 닫고 반대 방향으로 새로운 포지션을 여는 것을 목표로합니다. 전략은 상대적인 가격 수준을 측정하기 위해 볼링거 밴드와 트렌드 변화를 캡처하고 거래 신호를 생성하기 위해 트렌드 필터로 EMA를 사용하여 시장 변동성과 트렌드 변화를 포착합니다.

전략 원칙

  1. 상부, 중부, 하부 볼링거 대역을 계산합니다. 상부 대역은 중간 대역 더하기 두 표준 편차, 하부 대역은 중간 대역 빼기 두 표준 편차, 그리고 중간 대역은 폐쇄 가격의 간단한 이동 평균입니다.
  2. 5일 EMA를 트렌드 참조로 계산합니다.
  3. 개설 가격이 상부 볼링거 밴드 이상이고 종료 가격이 5일 EMA 이하일 때, 짧은 포지션을 개척합니다.
  4. 개설 가격이 아래 볼링거 반지보다 낮고 종료 가격이 5일 EMA보다 높으면 긴 포지션을 개척합니다.
  5. 이미 오픈된 단위 포지션이 있고 긴 신호가 발사되면 단위 포지션을 닫고 긴 포지션을 열어야 합니다.
  6. 만약 이미 긴 포지션이 열려 있고 짧은 신호가 발사되면 긴 포지션을 닫고 짧은 포지션을 열어야 합니다.
  7. 긴 포지션을 유지하고 짧은 폐쇄 신호가 발사되면 긴 포지션을 닫습니다.
  8. 단위 포지션을 유지하고 긴 폐쇄 신호가 발사되면 단위 포지션을 닫습니다.

전략적 장점

  1. 가격 변동성과 트렌드 특성을 모두 활용하여 신호를 생성하여 트렌딩과 오스실레이션 시장에서 기회를 잡을 수 있습니다.
  2. 볼링거 대역은 다양한 시장 조건과 기기 특성에 적응하기 위해 유연하게 조정할 수 있습니다.
  3. 5일 EMA는 트렌드 필터 역할을 하며 소음과 빈번한 거래를 효과적으로 줄인다.
  4. 적시에 스톱 로스 및 리버스 포지션 오픈 메커니즘은 더 나은 리스크 제어 및 새로운 트렌드 기회를 적극적으로 포착 할 수 있습니다.
  5. 명확한 논리, 이해하기 쉽고 구현하기 쉽고 더 많은 최적화를 위해 편리합니다.

전략 위험

  1. 부적절한 매개 변수 선택은 신호 왜곡 또는 과도한 거래로 이어질 수 있습니다. 기기와 시간 틀에 기반한 최적화 및 테스트가 필요합니다.
  2. 변동 시장에서는 거래 신호가 자주 발생하여 거래가 과잉되고 비용이 증가할 수 있습니다.
  3. 트렌드 전환점을 파악하는 데 지연이 있을 수 있고, 최고의 진입 기회를 놓칠 수도 있습니다.
  4. 단 하나의 기술 지표 조합에 장애가 발생할 위험이 있으며, 다른 신호와 검증을 필요로 합니다.
  5. 극단적인 시장 조건에서 통제를 잃는 위험이 발생할 수 있어 엄격한 위험 관리 조치가 필요합니다.

전략 최적화 방향

  1. 가장 좋은 매개 변수 조합을 찾기 위해 길이와 곱하기 등 볼링거 밴드의 매개 변수를 최적화하십시오.
  2. 가장 좋은 트렌드 기간을 선택하기 위해 EMA 기간을 최적화하고 테스트합니다.
  3. 트렌드 포착의 정확성을 향상시키기 위해 MACD와 같은 다른 트렌드 지표를 보조 판단으로 포함합니다.
  4. ATR와 같은 변동성 지표를 도입하여 단일 거래 위험을 제어하기 위한 스톱 로스 및 포지션 관리의 기초로
  5. 특정 시간에 비효율적인 변동을 피하기 위해 특정 기간에 거래를 제한하십시오.
  6. 시장 특성에 따라 적당한 수익 및 스톱-러스 전략을 설정합니다.

요약

볼링거 밴드 (Bollinger Bands) 와 EMA를 결합함으로써 이 전략은 중장기 거래 전략에 적합한 트렌드 및 변동성 기회를 효과적으로 포착할 수 있다. 그러나 매개 변수 최적화, 포지션 제어 및 리스크 관리에 주의를 기울여야 한다. 또한 더 나은 성능을 위해 다른 기술적 지표와 근본 분석과 결합되어야 한다. 전략의 성능은 시장 조건에 의해 영향을 받을 수 있으며 실제 상황에 따라 조정 및 최적화를 필요로 한다.


/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bollinger Bands and EMA Strategy", overlay=true)

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

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

// Plot Bollinger Bands
plot(upper, "Upper Band", color=color.red)
plot(lower, "Lower Band", color=color.green)
plot(basis, "Middle Band", color=color.blue)  // Use plot instead of hline for basis

// Define the 5-period EMA
ema5 = ta.ema(close, 5)

// Plot the 5 EMA
plot(ema5, "5 EMA", color=color.orange)

// Generate signals
var float entry_price = na
var string trade_direction = "none"

if (na(close[1]))
    trade_direction := "none"

// Condition for entering a short trade
if (open > upper and close < ema5)
    if (trade_direction != "short")
        strategy.entry("Short", strategy.short)
        entry_price := close
        trade_direction := "short"

// Condition for entering a long trade
if (open < lower and close > ema5)
    if (trade_direction != "long")
        strategy.entry("Long", strategy.long)
        entry_price := close
        trade_direction := "long"

// Close short trade on a long signal
if (trade_direction == "short" and open < lower and close > ema5)
    strategy.close("Short")
    strategy.entry("Long", strategy.long)
    entry_price := close
    trade_direction := "long"

// Close long trade on a short signal
if (trade_direction == "long" and open > upper and close < ema5)
    strategy.close("Long")
    strategy.entry("Short", strategy.short)
    entry_price := close
    trade_direction := "short"

// Close trades when opposite signal is generated
if (trade_direction == "long" and open > upper and close < ema5)
    strategy.close("Long")
    trade_direction := "none"

if (trade_direction == "short" and open < lower and close > ema5)
    strategy.close("Short")
    trade_direction := "none"
























관련

더 많은