더블 인덱스 이동 평균 모멘텀 크로스오버 양적 거래 전략

TEMA EMA SMA MA RSI
생성 날짜: 2025-01-06 13:53:11 마지막으로 수정됨: 2025-01-06 13:53:11
복사: 1 클릭수: 348
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

더블 인덱스 이동 평균 모멘텀 크로스오버 양적 거래 전략

개요

이 전략은 TEMA(Triple Exponential Moving Average)를 기반으로 한 추세 추종 거래 시스템입니다. 이 전략은 단기 및 장기 TEMA의 교차 신호를 비교하여 시장 동향을 파악하고 변동성 정지를 결합하여 위험을 관리합니다. 이 전략은 5분 기간으로 실행되며 300주기와 500주기 TEMA 지표를 신호 생성의 기준으로 사용합니다.

전략 원칙

전략의 핵심 논리는 다음과 같은 핵심 요소에 기초합니다.

  1. 두 가지 다른 기간(300 및 500)을 갖는 TEMA 지표를 사용하여 추세 방향을 파악합니다.
  2. 단기 TEMA가 장기 TEMA를 위쪽으로 교차할 때 시스템은 장기 신호를 생성합니다.
  3. 단기 TEMA가 장기 TEMA를 아래로 교차할 때 시스템은 단기 신호를 생성합니다.
  4. 10기간 최고가와 최저가를 사용하여 손절매 위치를 설정하세요.
  5. 시장에 진입한 후 포지션을 종료하기 전에 역전 신호가 나타날 때까지 포지션을 유지합니다.

전략적 이점

  1. 강력한 신호 안정성: 더 긴 기간의 TEMA를 사용하면 시장 노이즈를 효과적으로 필터링하고 잘못된 신호를 줄일 수 있습니다.
  2. 완벽한 위험 제어: 변동성 손절매와 결합하여 단일 거래의 위험을 효과적으로 제어할 수 있습니다.
  3. 강력한 추세 파악 능력: TEMA는 기존 이동 평균보다 더 빠르게 추세에 반응합니다.
  4. 완전한 거래 루프: 명확한 진입, 손절매 및 이익 실현 조건 포함
  5. 강력한 매개변수 조정성: 주요 매개변수는 시장 특성에 따라 유연하게 조정 가능합니다.

전략적 위험

  1. 변동성이 큰 시장의 위험: 횡보장이고 변동성이 큰 시장에서는 잘못된 신호가 쉽게 생성되어 지속적인 손실로 이어집니다.
  2. 미끄러짐 위험: 5분 주기는 급격한 변동 시 큰 미끄러짐이 발생할 수 있습니다.
  3. 펀드 운용 리스크: 고정 포인트 손절매는 변동성 있는 기간 동안 과도한 손실을 초래할 수 있습니다.
  4. 신호 히스테리시스: TEMA 지표 자체에는 특정 히스테리시스가 있어 최상의 진입 지점을 놓칠 수 있습니다.
  5. 매개변수 민감도: 최적의 매개변수는 시장 환경에 따라 크게 다릅니다.

전략 최적화 방향

  1. 시장 환경 인식 향상: 추세 강도 지표를 추가하고 다양한 시장 환경에서 다양한 매개변수를 사용합니다.
  2. 손절매 방법 최적화: 손절매의 적응성을 개선하기 위해 ATR 동적 손절매를 사용하는 것을 고려하세요
  3. 포지션 관리 개선: 추세 강도에 따라 오픈 포지션 수를 동적으로 조정
  4. 조기경보 메커니즘 강화: 주요 가격 포지션에서 조기경보 신호 발행
  5. 볼륨 표시기 추가: 볼륨을 결합하여 신호 유효성 확인

요약하다

이 전략은 TEMA 지표의 교차를 통해 추세를 포착하고 동적 손절매로 위험을 관리하는 완전한 추세 추적 시스템입니다. 이 전략은 논리성이 명확하고, 구현이 간단하며, 실용성이 좋습니다. 하지만 실제 거래에서는 시장 환경의 식별과 위험 관리에 주의를 기울여야 합니다. 백테스팅 검증을 기반으로 실제 시장 상황에 따라 매개변수를 최적화하는 것이 좋습니다.

전략 소스 코드
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("TEMA Strategy for Gold", overlay=true)

// Inputs
tema_short_length = input.int(300, title="Short TEMA Length")
tema_long_length = input.int(500, title="Long TEMA Length")
pip_value = input.float(0.10, title="Pip Value (10 pips = 1 point for Gold)")

// Calculate TEMA
tema_short = ta.ema(2 * ta.ema(close, tema_short_length) - ta.ema(ta.ema(close, tema_short_length), tema_short_length), tema_short_length)
tema_long = ta.ema(2 * ta.ema(close, tema_long_length) - ta.ema(ta.ema(close, tema_long_length), tema_long_length), tema_long_length)

// Plot TEMA
plot(tema_short, color=color.blue, title="300 TEMA")
plot(tema_long, color=color.red, title="500 TEMA")

// Crossover conditions
long_condition = ta.crossover(tema_short, tema_long)
short_condition = ta.crossunder(tema_short, tema_long)

// Calculate recent swing high/low
swing_low = ta.lowest(low, 10)
swing_high = ta.highest(high, 10)

// Convert pips to price
pip_adjustment = pip_value * syminfo.mintick

// Long entry logic
if (long_condition and strategy.position_size == 0)
    stop_loss_long = swing_low - pip_adjustment
    strategy.entry("Long", strategy.long)
    label.new(bar_index, swing_low, style=label.style_label_down, text="Buy", color=color.green)

// Short entry logic
if (short_condition and strategy.position_size == 0)
    stop_loss_short = swing_high + pip_adjustment
    strategy.entry("Short", strategy.short)
    label.new(bar_index, swing_high, style=label.style_label_up, text="Sell", color=color.red)

// Exit logic
if (strategy.position_size > 0 and short_condition)
    strategy.close("Long")
    label.new(bar_index, high, style=label.style_label_up, text="Exit Long", color=color.red)

if (strategy.position_size < 0 and long_condition)
    strategy.close("Short")
    label.new(bar_index, low, style=label.style_label_down, text="Exit Short", color=color.green)