EMA 이동평균 변동대 기반 다기간 추세추적 거래시스템

EMA stdev ATR SMA MACD RSI
생성 날짜: 2024-11-29 10:49:30 마지막으로 수정됨: 2024-11-29 10:49:30
복사: 1 클릭수: 424
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

EMA 이동평균 변동대 기반 다기간 추세추적 거래시스템

개요

이 전략은 300주기 지수 이동 평균 ((EMA) 에 기반한 변동폭 거래 시스템입니다. 이 전략은 EMA와 표준 차이를 결합하여 시장의 오버 바이 오버 셀 기회를 잡기 위해 브린 밴드와 같은 동적 변동 범위를 형성합니다. 이 전략은 주로 가격과 변동폭의 교차로 거래 신호를 생성하며, 백분율에 기반한 중지 조건을 설정합니다.

전략 원칙

전략의 핵심은 300주기 EMA를 통해 가격중심을 구축하고, 표준차이를 사용하여 위아래 변동대를 구성한다. 가격이 하향 궤도를 돌파할 때 과매매 신호를 생성하고, 궤도를 돌파할 때 과매매 신호를 생성한다. 구체적으로 다음을 포함한다:

  1. 300주기 EMA를 이용하여 장기 트렌드 기준선을 구축
  2. 300주기 가격 표준 차이를 계산하고 2배의 표준 차이를 사용하여 변동대를 구성합니다.
  3. 가격이 하락할 때 더 많은 포지션을 열고, 포지션이 0.98% 상승하여 포지션 개시 가격이 상승했습니다.
  4. 가격 돌파 상승 시 포지션이 공백, 포지션이 0.98% 하락
  5. 그래픽 인터페이스를 통해 거래 신호를 직관적으로 표시하고 실시간 경보 기능을 갖추고 있습니다.

전략적 이점

  1. 장기주기 EMA를 적용하여 단기시장 소음을 잘 필터링합니다.
  2. 동적 변동대는 시장 변동율 변화에 적응할 수 있다.
  3. 명확한 거래 규칙, 주관적 판단의 방해를 피하는 것
  4. 제약 장치가 잘 갖추어져 있고, 위험을 효과적으로 통제하고 있습니다.
  5. 그래픽 인터페이스는 직관적이고 시장 상황을 관찰하는 데 도움이됩니다.
  6. 실시간 경고 기능으로 거래 기회를 잡을 수 있습니다.

전략적 위험

  1. 긴 주기 평균선에는 지연성이 존재하며, 빠른 흐름을 놓칠 수 있다.
  2. 불안한 시장에서 빈번한 가짜 돌파구가 발생할 수 있습니다.
  3. 고정된 퍼센티지 스티커는 조기 출전하여 큰 경기를 놓칠 수 있습니다.
  4. “지속이 급격히 변할 경우, 위험성이 더 커질 수 있습니다. 위험 관리를 위해 다음과 같은 조치가 권장됩니다.
  • 단기 주기 지표와 결합된 보조 판단
  • 추세 확인 필터 추가
  • 동적 조정 중지 비율
  • 보완된 손해 방지 장치

전략 최적화 방향

  1. MACD, RSI 등과 같은 트렌드 확인 지표를 도입하여 가짜 브레이크 신호를 필터링하십시오.
  2. ATR을 사용하여 스톱 손실 위치를 동적으로 조정합니다.
  3. 모바일 중지 기능이 추가되어 수익을 더 잘 고정합니다.
  4. 길이 변수를 최적화하여 최적의 주기 조합을 찾습니다.
  5. 신호 신뢰성을 높이기 위해 거래량 지표를 추가하는 것을 고려하십시오.
  6. 적응기 변수 메커니즘을 개발하고, 전략적 적응력을 강화합니다.

요약하다

이 전략은 EMA 변동대를 통해 시장 과매매 기회를 잡으며 거래 규칙이 명확하고 작동이 간단하다. 그러나 실제 응용에서는 위험을 제어하는 데 주의를 기울여야하며 보조 지표, 최적화 매개 변수 설정 등의 방법으로 전략 안정성을 향상시키는 것이 좋습니다. 전략은 전체적으로 합리적으로 설계되어 실용적인 가치와 최적화 공간을 가지고 있습니다.

전략 소스 코드
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Estrategia de Compra/Venta en Bandas de EMA 300", overlay=true)

// Definir el período de la EMA
periodo = input.int(300, title="Período de la EMA")

// Calcular la EMA de 300
ema_300 = ta.ema(close, periodo)

// Definir el número de desviaciones estándar
num_desviaciones = input.float(2, title="Número de Desviaciones Estándar")

// Calcular la desviación estándar de la EMA de 300
desviacion = ta.stdev(close, periodo)

// Calcular los límites superior e inferior de las bandas
banda_superior = ema_300 + desviacion * num_desviaciones
banda_inferior = ema_300 - desviacion * num_desviaciones

// Definir el porcentaje para las señales de compra y venta
porcentaje = input.float(0.98, title="Porcentaje de Salida de Banda")

// Definir señales de compra y venta
compra = ta.crossover(close, banda_inferior)
venta = ta.crossunder(close, banda_superior)

// Calcular el precio de salida para las señales de compra y venta
precio_salida_compra = close * (1 + porcentaje / 100)
precio_salida_venta = close * (1 - porcentaje / 100)

// Plotear las bandas
plot(banda_superior, color=color.blue, linewidth=2, title="Banda Superior")
plot(banda_inferior, color=color.red, linewidth=2, title="Banda Inferior")

// Plotear las señales de compra y venta
plotshape(compra, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Compra")
plotshape(venta, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Venta")

// Simular operaciones
if (compra)
    strategy.entry("Compra", strategy.long)
if (venta)
    strategy.entry("Venta", strategy.short)

// Definir reglas de salida
if (strategy.position_size > 0)
    strategy.exit("Exit Long", from_entry="Compra", limit=precio_salida_compra)
if (strategy.position_size < 0)
    strategy.exit("Exit Short", from_entry="Venta", limit=precio_salida_venta)

// Crear alertas
alertcondition(compra, title="Alerta de Compra", message="¡Señal de Compra Detectada!")
alertcondition(venta, title="Alerta de Venta", message="¡Señal de Venta Detectada!")

// Mostrar alertas en el gráfico
if (compra)
    label.new(bar_index, low, text="Compra", style=label.style_label_up, color=color.green, textcolor=color.white)
if (venta)
    label.new(bar_index, high, text="Venta", style=label.style_label_down, color=color.red, textcolor=color.white)