위험 관리 및 시간 스크리닝 시스템과 결합된 이중 이동 평균 교차 추세 추적 전략

EMA SL TP ALGO
생성 날짜: 2024-11-29 15:05:45 마지막으로 수정됨: 2024-11-29 15:05:45
복사: 0 클릭수: 368
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

위험 관리 및 시간 스크리닝 시스템과 결합된 이중 이동 평균 교차 추세 추적 전략

개요

이 전략은 쌍평선 교차 신호, 스톱 스톱 손실 관리 및 시간 필터를 결합한 완전한 거래 시스템입니다. 전략의 핵심은 빠른 속도와 느린 지수 이동 평균 (EMA) 의 교차를 기반으로 시장 추세를 포착하고, 스톱 스톱 (Take Profit) 및 스톱 스톱 (Stop Loss) 을 설정하여 위험을 제어합니다. 전략은 또한 시간 필터 기능을 포함하고, 거래자가 특정 시간 범위에서 거래를 수행 할 수 있도록합니다.

전략 원칙

이 전략은 다음과 같은 핵심 메커니즘을 기반으로 운영됩니다.

  1. 두 개의 다른 주기 ((5과 21을 기본으로) 를 사용하는 지수 이동 평균
  2. 빠른 EMA가 느린 EMA를 상향으로 가로지르면 시스템에서 다중 신호가 생성됩니다.
  3. 빠른 EMA가 느린 EMA를 아래로 통과하면 시스템이 공백 신호를 냅니다.
  4. 각 거래에는 Stop Loss 및 Stop Out 비율이 설정되어 있습니다.
  5. 거래 방향은 유연하게 설정할 수 있습니다.
  6. 시간 필터 기능을 포함하고, 지정된 시간 범위 내에서만 거래를 수행합니다.
  7. 이 시스템은 중요한 순간에 경고를 냅니다.

전략적 이점

  1. 체계화된 위험 관리: 사전 설정된 스톱로스 및 스톱 레벨을 통해 각 거래에 대해 명확한 위험 관리를 제공합니다.
  2. 유연한 변수 구성: 거래자는 다른 시장 환경에 따라 EMA 주기를 조정할 수 있습니다.
  3. 방향 선택의 자유: 다양한 시장 취향에 맞게 한방향 또는 양방향 거래를 선택할 수 있습니다.
  4. 시간 관리 능력: 시간 필터 기능을 통해 불리한 시간에 거래를 피하십시오.
  5. 실시간 경고 기능: 거래자가 거래 신호와 위험을 알리는 데 도움이 됩니다.
  6. 전체 포지션 관리: 시스템 자동으로 인적 개입 없이 입출구를 처리

전략적 위험

  1. 시장의 위기 위험: 상반기 시장에서 종종 잘못된 신호를 유발할 수 있습니다.
  2. 슬라이드 포인트 위험: 시장의 급격한 변동으로 인해 실제 스톱 스톱 가격이 예상에서 벗어날 수 있습니다.
  3. 매개 변수 민감성: EMA 주기 선택이 전략 성능에 큰 영향을 미칩니다.
  4. 트렌드 의존성: 트렌드 없는 시장에서 전략이 좋지 않을 수 있다.
  5. 자금 관리 위험: 고정 비율의 정지 손실은 특정 시장 조건에서 충분히 유연하지 않을 수 있습니다.

전략 최적화 방향

  1. 시장 환경 필터 추가:
    • 다양한 시장 상황에 맞춰 변동률 지표를 추가합니다.
    • 트렌드 강도 필터를 도입하여 가짜 돌파구를 피하십시오.
  2. 동적 변수 조정:
    • 시장의 변동성에 따라 스톱 레벨을 조정합니다.
    • 시장 추세 강도에 따라 동적으로 조정된 EMA 주기
  3. 강화된 위험 관리:
    • 모바일 상쇄 기능이 추가되어 수익을 보호합니다.
    • 배치별로 위치를 구축하고 축소하기 위한 메커니즘을 구현합니다.
  4. “이런 일이 벌어진다면,
    • 합성 교량 지표 확인 신호 유효성
    • 다른 기술 지표를 추가하여 보조 확인

요약하다

이것은 잘 설계된 트렌드 추적 전략이며, 일률 시스템, 위험 관리 및 시간 필터를 결합하여 거래자에게 포괄적인 거래 솔루션을 제공합니다. 전략은 구성성이 강하며, 다양한 위험 선호를 가진 거래자에게 적합합니다. 제안된 최적화 방향에 따라 전략에는 더 많은 개선이 가능합니다.

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

//@version=5
strategy("Estrategia Cruce de EMAs con: Stop Loss, Take Profit, Días de Operación y Alertas (Modificables)", overlay=true, commission_value = 0.2, process_orders_on_close = true, initial_capital = 1000)

// Parámetros de las EMAs
emaRapidaLen = input.int(5, title="Periodo EMA rápida")
emaLentaLen = input.int(21, title="Periodo EMA lenta")

// Parámetros de Stop Loss y Take Profit
stopLoss = input.float(3.0, title="Stop Loss (%)", step=0.1) / 100
takeProfit = input.float(6.0, title="Take Profit (%)", step=0.1) / 100

// Tipo de operación: Largo, Corto o Ambos
operacion = input.string(title="Tipo de operación", defval="Largo", options=["Largo", "Corto", "Ambos"])

// Parámetros de la duración de la estrategia (días)
diasInicio = input(timestamp("2009-01-03 00:00"), title="Fecha de inicio (YYYY-MM-DD HH:MM)")
diasFin = input(timestamp("2024-09-11 00:00"), title="Fecha de fin (YYYY-MM-DD HH:MM)")

// Comprobar si estamos dentro del rango de días definido
dentroDeRango = true

// Cálculo de las EMAs
emaRapida = ta.ema(close, emaRapidaLen)
emaLenta = ta.ema(close, emaLentaLen)

// Condiciones para cruce de EMAs
cruceAlcista = ta.crossover(emaRapida, emaLenta)
cruceBajista = ta.crossunder(emaRapida, emaLenta)

// Operaciones en Largo (solo si estamos en el rango de días definido)
if dentroDeRango and (operacion == "Largo" or operacion == "Ambos") and cruceAlcista 
    strategy.entry("Compra", strategy.long)
    alert("Posición larga abierta: Cruce alcista de EMAs", alert.freq_once_per_bar_close)

// Operaciones en Corto (solo si estamos en el rango de días definido)
if dentroDeRango and (operacion == "Corto" or operacion == "Ambos") and cruceBajista
    strategy.entry("Venta", strategy.short)
    alert("Posición corta abierta: Cruce bajista de EMAs", alert.freq_once_per_bar_close)

// Cálculo del Stop Loss y Take Profit para largos
if (strategy.position_size > 0 and strategy.opentrades.entry_id(strategy.opentrades - 1) == "Compra")
    strategy.exit("Cerrar Compra", "Compra", stop=strategy.position_avg_price * (1 - stopLoss), limit=strategy.position_avg_price * (1 + takeProfit))
    alert("Posición larga cerrada: Alcanzado Stop Loss o Take Profit", alert.freq_once_per_bar_close)

// Cálculo del Stop Loss y Take Profit para cortos
if (strategy.position_size < 0 and strategy.opentrades.entry_id(strategy.opentrades - 1) == "Venta")
    strategy.exit("Cerrar Venta", "Venta", stop=strategy.position_avg_price * (1 + stopLoss), limit=strategy.position_avg_price * (1 - takeProfit))
    alert("Posición corta cerrada: Alcanzado Stop Loss o Take Profit", alert.freq_once_per_bar_close)

// Plot de las EMAs
plot(emaRapida, color=color.blue, title="EMA rápida", linewidth = 2)
plot(emaLenta, color=color.red, title="EMA lenta", linewidth = 2)