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

오시레이터와 동적 지원/저항 거래 전략과 함께 멀티 EMA 크로스

저자:차오장, 날짜: 2024-12-27 14:45:40
태그:EMAATR

img

전반적인 설명

이 전략은 다중 지수 이동 평균 (EMA) 크로스오버, 평균 진정한 범위 (ATR) 및 피보트 포인트 지원 / 저항 수준을 결합 한 포괄적인 거래 시스템입니다. 중장기 EMA에 대한 단기 EMA 교차를 분석하여 시장 트렌드 반전을 포착합니다. ATR 변동성 범위 및 주요 가격 수준과 결합하여.

전략 원칙

이 전략은 기술 분석의 세 가지 차원을 기반으로 합니다.

  1. 트렌드 식별: 트리플 EMA (4, 9, 18 기간) 를 사용하여 중장기 EMA (9, 18) 와 단기 EMA (4, 9) 의 동기화된 교차를 통해 트렌드 방향을 확인합니다.
  2. 변동성 범위: 시장 변동성을 정량화하고 동적 거래 한계를 설정하기 위해 14 기간 ATR을 포함합니다.
  3. 가격 지원/저항: 7가지 주요 가격 레벨 (PP, R1-R3, S1-S3) 을 기준점으로 설정하여 매일 피보트 포인트 시스템 (PPSignal) 을 구현합니다.

거래 규칙은 명확하게 정의되어 있습니다.

  • 롱 엔트리: EMA4가 EMA9와 EMA18을 넘어서고, 종료 가격은 EMA9 + ATR을 넘어서고
  • 단기 진입: EMA4가 EMA9와 EMA18의 하위를 넘어서고, 종료 가격은 EMA9 - ATR의 하위를 넘는다.
  • Stop Loss: 동적으로 EMA4 수준을 추적합니다.

전략적 장점

  1. 다차원 분석: 신호 신뢰성을 향상시키기 위해 경향, 변동성 및 가격 구조 분석을 결합합니다.
  2. 동적 적응: ATR 및 동적 지원/저항 수준을 통해 다른 시장 조건에 적응합니다.
  3. 포괄적 리스크 관리: 수익 보호 및 리스크 관리를 위한 동적 스톱 로스 메커니즘을 구현합니다.
  4. 강력한 신호 확인: 여러 가지 기술 지표의 컨버전스를 요구하며 거짓 파업 위험을 줄입니다.

전략 위험

  1. 부진성 시장 위험: 통합 단계에서 빈번한 잘못된 신호를 생성할 수 있습니다.
  2. 지연 위험: 이동 평균에 대한 고유한 지연은 최적의 입점 지점을 놓칠 수 있습니다.
  3. 격차 위험: 하루 간 격차는 스톱 로스 수준을 비효율화 할 수 있습니다.
  4. 매개 변수 민감도: 다른 기간 조합은 크게 다른 결과를 가져올 수 있습니다.

전략 최적화 방향

  1. 볼륨 통합: 크로스오버 신호에 볼륨 확인을 추가
  2. 동적 매개 변수 최적화: 시장 변동성에 따라 EMA 기간을 조정합니다.
  3. 증강된 스톱-러스: ATR에 기반한 부동 스톱을 구현하는 것을 고려하십시오.
  4. 시장 환경 필터: 강한 트렌드 중만 거래에 트렌드 강도 지표를 추가합니다.
  5. 시간 필터: 다른 시간 프레임 특성에 따라 최적의 거래 세션을 설정

요약

이 전략은 여러 기술적 지표의 시너지를 통해 포괄적인 거래 시스템을 구축합니다. 주요 강점은 다차원 신호 확인 메커니즘과 강력한 리스크 제어 프레임 워크에 있습니다. 그러나 거래자는 특정 시장 조건에 따라 매개 변수를 최적화하고 시스템을 개선해야합니다. 제안된 최적화 방향을 통해 전략의 안정성과 신뢰성을 더욱 향상시킬 수 있습니다.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA Crossover + ATR + PPSignal", overlay=true)

//--------------------------------------------------------------------
// 1. Cálculo de EMAs y ATR
//--------------------------------------------------------------------
ema4      = ta.ema(close, 4)
ema9      = ta.ema(close, 9)
ema18     = ta.ema(close, 18)
atrLength = 14
atr       = ta.atr(atrLength)

//--------------------------------------------------------------------
// 2. Cálculo de Pivot Points diarios (PPSignal)
//    Tomamos datos del día anterior (timeframe D) para calcularlos
//--------------------------------------------------------------------
dayHigh  = request.security(syminfo.tickerid, "D", high[1])
dayLow   = request.security(syminfo.tickerid, "D", low[1])
dayClose = request.security(syminfo.tickerid, "D", close[1])

// Fórmula Pivot Points estándar
pp = (dayHigh + dayLow + dayClose) / 3.0
r1 = 2.0 * pp - dayLow
s1 = 2.0 * pp - dayHigh
r2 = pp + (r1 - s1)
s2 = pp - (r1 - s1)
r3 = dayHigh + 2.0 * (pp - dayLow)
s3 = dayLow - 2.0 * (dayHigh - pp)

//--------------------------------------------------------------------
// 3. Definir colores para las EMAs
//--------------------------------------------------------------------
col4  = color.green   // EMA 4
col9  = color.yellow  // EMA 9
col18 = color.red     // EMA 18

//--------------------------------------------------------------------
// 4. Dibujar indicadores en el gráfico
//--------------------------------------------------------------------

// EMAs
plot(ema4,  title="EMA 4",  color=col4,  linewidth=2)
plot(ema9,  title="EMA 9",  color=col9,  linewidth=2)
plot(ema18, title="EMA 18", color=col18, linewidth=2)

// ATR
plot(atr, title="ATR", color=color.blue, linewidth=2)

// Pivot Points (PPSignal)
plot(pp, title="Pivot (PP)", color=color.new(color.white, 0),  style=plot.style_line, linewidth=1)
plot(r1, title="R1",        color=color.new(color.red,   0),  style=plot.style_line, linewidth=1)
plot(r2, title="R2",        color=color.new(color.red,   0),  style=plot.style_line, linewidth=1)
plot(r3, title="R3",        color=color.new(color.red,   0),  style=plot.style_line, linewidth=1)
plot(s1, title="S1",        color=color.new(color.green, 0),  style=plot.style_line, linewidth=1)
plot(s2, title="S2",        color=color.new(color.green, 0),  style=plot.style_line, linewidth=1)
plot(s3, title="S3",        color=color.new(color.green, 0),  style=plot.style_line, linewidth=1)

//--------------------------------------------------------------------
// 5. Condiciones de cruce (EMA4 vs EMA9 y EMA18) y estrategia
//--------------------------------------------------------------------
crossedAbove = ta.crossover(ema4, ema9) and ta.crossover(ema4, ema18)
crossedBelow = ta.crossunder(ema4, ema9) and ta.crossunder(ema4, ema18)

// Señales de Buy y Sell basadas en cruces + condición con ATR
if crossedAbove and close > ema9 + atr
    strategy.entry("Buy", strategy.long)
    strategy.exit("Sell", "Buy", stop=ema4)

if crossedBelow and close < ema9 - atr
    strategy.entry("Sell", strategy.short)
    strategy.exit("Cover", "Sell", stop=ema4)

관련

더 많은