지수 이동 평균 교차 임펄스 추세 분석 거래 전략

EMA ICM
생성 날짜: 2025-02-18 17:41:28 마지막으로 수정됨: 2025-02-18 17:41:28
복사: 1 클릭수: 375
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

지수 이동 평균 교차 임펄스 추세 분석 거래 전략

개요

이 전략은 지수 이동 평균 (EMA) 과 펄스 수정 모델 (ICM) 에 기반한 트렌드 추적 거래 시스템이다. 가격과 EMA의 교차와 그 후의 펄스 수정 펄스 형태를 식별하여 시장의 트렌드 변화를 포착하고 특정 조건이 충족되면 거래를 실행한다. 시스템은 고정된 위험-이익 비율을 사용하여 각 거래의 중지 및 중지 작업을 관리한다.

전략 원칙

전략의 핵심 논리는 다음과 같은 핵심 구성 요소를 기반으로 합니다.

  1. 10주기 EMA를 트렌드 방향의 기준으로 사용함
  2. 가격과 EMA가 교차한 후 3주기 동안 펄스 - 수정 - 펄스 형태를 찾아보기
  3. 입학 조건:
    • 가격에 EMA를 착용
    • 첫 번째 K 선은 ?? 펄스 (설정값보다 큰 상승률)
    • 두 번째 K 선은 하향 수정 (폐쇄가격이 개시가격보다 낮다)
    • 세 번째 K선 (K line) 은 오징어 펄스이며, 앞의 두 K선 (K line) 의 최고점을 돌파한다.
  4. 텅 빈 머리 입학 조건은 다 머리 입학 조건과 반대입니다.
  5. 고정 리스크 수익률을 사용하여 자동으로 중지 및 중지 위치를 설정합니다.

전략적 이점

  1. 기술 지표와 가격 형태를 결합하여 더 신뢰할 수 있는 거래 신호를 제공합니다.
  2. 펄스 - 수정 - 펄스 형태를 통해 트렌드의 지속성 확인
  3. 고정된 리스크/이익 비율을 사용하여 포지션 관리를 함으로써 장기적으로 안정적인 수익을 창출할 수 있다.
  4. 입력 논리는 명확하고 이해하기 쉽고 실행이 가능합니다.
  5. 다른 거래 종류와 시간 주기에도 적용됩니다.

전략적 위험

  1. 변동성이 큰 시장에서는 빈번하게 잘못된 돌파 신호가 발생할 수 있습니다.
  2. 고정된 리스크/이익 비율은 모든 시장 환경에 적합하지 않을 수 있습니다.
  3. EMA 변수와 펄스 폭 하락의 선택은 전략의 성과에 영향을 미칩니다.
  4. 연속적인 급격한 변동으로 인해 stop loss 위치가 부합하지 않을 수 있습니다.
  5. 시장의 급격한 변동으로 인해 더 큰 반전이 발생할 수 있습니다.

전략 최적화 방향

  1. 변동률 지표의 동적으로 조정되는 펄스 앰프티 값을 도입
  2. 트렌드 강도 필터를 증가시키며 가짜 돌파구를 감소시킵니다.
  3. 시장 특성에 따라 조정된 위험/수익비율
  4. 시간 필터를 추가하여 불리한 시간에 거래하는 것을 피하십시오.
  5. 합성 교량 지표가 신호 신뢰성을 향상

요약하다

이 전략은 EMA와 펄스 보정 모델을 결합하여 논리적으로 명확한 트렌드 추적 시스템을 구축한다. 이 전략의 장점은 신호의 명확성과 위험의 통제 가능성에 있다. 그러나 여전히 특정 시장 특성에 따라 최적화가 필요하다. 적절한 필터링 조건과 동적 파라미터 조정 메커니즘을 추가함으로써 전략의 안정성과 수익성을 더욱 향상시킬 수 있다.

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

//@version=5
strategy("EMA Cross Impulsive Strategy", overlay=true, margin_long=100, margin_short=100)

// Parameters
emaLength = input.int(10, title="EMA Length")
impulsiveBodyTicks = input.int(10, title="Minimum Impulsive Candle Body (Ticks)")
rMultiplier = input.int(3, title="Risk Reward Multiplier")

// Calculate EMA
ema10 = ta.ema(close, emaLength)

// Cross conditions
crossUp = ta.crossover(close, ema10)
crossDown = ta.crossunder(close, ema10)

// Impulsive and correction conditions
tickSize = syminfo.mintick
impulsiveBodyMin = impulsiveBodyTicks * tickSize

isImpulsiveBullish = (close > open) and (close - open >= impulsiveBodyMin)
isImpulsiveBearish = (close < open) and (open - close >= impulsiveBodyMin)
isCorrectionBearish = (close < open)
isCorrectionBullish = (close > open)

// Long setup tracking
var int barsSinceLongCross = 0
var bool impulsive1Long = false
var bool correctionLong = false
var bool impulsive2Long = false

if crossUp
    barsSinceLongCross := 0
    impulsive1Long := false
    correctionLong := false
    impulsive2Long := false
else
    barsSinceLongCross := barsSinceLongCross + 1

if barsSinceLongCross == 1
    impulsive1Long := isImpulsiveBullish

if barsSinceLongCross == 2
    correctionLong := isCorrectionBearish

if barsSinceLongCross == 3
    impulsive2Long := isImpulsiveBullish and (close > math.max(high[1], high[2]))

// Short setup tracking
var int barsSinceShortCross = 0
var bool impulsive1Short = false
var bool correctionShort = false
var bool impulsive2Short = false

if crossDown
    barsSinceShortCross := 0
    impulsive1Short := false
    correctionShort := false
    impulsive2Short := false
else
    barsSinceShortCross := barsSinceShortCross + 1

if barsSinceShortCross == 1
    impulsive1Short := isImpulsiveBearish

if barsSinceShortCross == 2
    correctionShort := isCorrectionBullish

if barsSinceShortCross == 3
    impulsive2Short := isImpulsiveBearish and (close < math.min(low[1], low[2]))

// Execute trades
if barsSinceLongCross == 3 and impulsive1Long and correctionLong and impulsive2Long
    strategy.entry("Long", strategy.long)
    strategy.exit("Exit Long", "Long", stop=low, profit=close + (close - low) * rMultiplier)

if barsSinceShortCross == 3 and impulsive1Short and correctionShort and impulsive2Short
    strategy.entry("Short", strategy.short)
    strategy.exit("Exit Short", "Short", stop=high, profit=close - (high - close) * rMultiplier)

// Plot EMA
plot(ema10, color=color.blue, title="10 EMA")