볼린저 밴드와 지수 이동 평균 조합 거래 전략

EMA BB SMA
생성 날짜: 2024-06-17 16:58:43 마지막으로 수정됨: 2024-06-17 16:58:43
복사: 7 클릭수: 1079
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

볼린저 밴드와 지수 이동 평균 조합 거래 전략

개요

이 전략은 부린 대역 (Bollinger Bands) 과 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. 시장의 특성에 따라 적절한 스톱 스톱 손실 전략을 설정하십시오.

요약하다

이 전략은 브린띠와 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"