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

EMA 변동성 대역에 기반한 거래 시스템을 따르는 다기류 트렌드

저자:차오장, 날짜: 2024-11-29 10:49:30
태그:EMAstdevATRSMAMACDRSI

img

전반적인 설명

이 전략은 300주기 기하급수적 이동 평균 (EMA) 에 기반한 변동성 대역 거래 시스템이다. EMA와 표준편차를 결합함으로써 시장의 과잉 구매 및 과잉 판매 기회를 포착하기 위해 볼링거 대역과 같은 동적 변동성 대역을 형성한다. 이 전략은 변동성 대역과 가격 교차를 통해 거래 신호를 생성하고 비율 이득에 기반한 수익 목표를 설정한다.

전략 원칙

전략의 핵심은 300주기 EMA를 사용하여 가격 중심부를 설정하고 표준편차를 사용하여 변동성 대역을 구성합니다. 가격이 하위 대역 (oversold) 아래로 넘어갈 때 긴 신호를 생성하고 가격이 상위 대역 (overbought) 위로 넘어갈 때 짧은 신호를 생성합니다. 구체적으로:

  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)

관련

더 많은