위험-수익률 최적화 전략과 결합된 이중 이동 평균 추세 추종 거래 시스템

EMA RRR
생성 날짜: 2024-11-28 17:20:13 마지막으로 수정됨: 2024-11-28 17:20:13
복사: 0 클릭수: 404
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

위험-수익률 최적화 전략과 결합된 이중 이동 평균 추세 추종 거래 시스템

양적 거래 분야에서, 트렌드 추적 전략은 항상 가장 인기있는 거래 방법 중 하나입니다. 이 글은 양평선 시스템을 기반으로 한 트렌드 추적 전략을 소개할 것이며, 이 전략은 최적화된 위험/수익 비율을 통해 거래 효율성을 높인다.

전략 개요

이 전략은 20일 및 200일 지수 이동 평균 ((EMA) 을 주요 지표로 사용하고, 3:1의 위험-이익 비율과 결합하여 거래 결정을 내린다. 가격이 20일 평균선을 돌파하고 20일 평균선이 200일 평균선 위에 있을 때, 시스템은 구매 신호를 발산한다. 각 거래에는 고정된 스톱로스 ((-0.5%) 와 수익 (-1.5%) 수준이 설정되어 있으며, 이는 위험을 통제할 수 있도록 한다.

전략 원칙

전략의 핵심 논리에는 다음과 같은 핵심 요소가 포함됩니다.

  1. 20일 및 200일 EMA를 사용하여 시장 추세를 판단하고, 200일 평균선은 장기 추세를 나타내고, 20일 평균선은 단기 추세를 나타냅니다.
  2. 가격이 20일 평균선을 뚫고 20일 평균선이 200일 평균선 위에 있을 때, 시장이 상승 추세에 있다는 것을 나타냅니다.
  3. 3:1의 리스크/이익 비율을 사용해서, 즉, 스톱포인트 ((1.5%) 는 스톱포인트 ((0.5%) 의 3배
  4. 트레이드 상태를 추적하는 변수를 설정하여 반복 입장을 방지합니다.
  5. 20일 평균선 아래로 떨어질 때 거래 상태를 재설정하여 다음 거래에 대비하십시오.

전략적 이점

  1. 쌍방향 시스템은 시장 소음을 효과적으로 필터링하여 거래 신호의 신뢰성을 향상시킵니다.
  2. 고정된 리스크/이익 비율은 장기적으로 안정적인 수익을 도모합니다.
  3. 명확한 출전규칙, 주관적인 판단을 줄여주기
  4. 자동화도 높고, 실행과 추적도 쉽다.
  5. 모든 거래에 명확한 스톱로스가 있고, 리스크 관리가 잘 되어 있습니다.

전략적 위험

  1. 상자 시장에서 빈번한 잘못된 신호가 발생할 수 있습니다.
  2. 고정된 스톱 스톱 위치가 모든 시장 환경에 적합하지 않을 수 있습니다.
  3. 거래비용을 고려하지 않고 실제 수익에 영향을 미칠 수 있습니다.
  4. 높은 변동성이 있는 시장에서 스톱포지션은 출입점과 너무 가까워질 수 있습니다.
  5. 시장 유동성 요소를 고려하지 않고

최적화 방향

  1. 트렌드 판단의 정확성을 높이기 위한 양력 지표 도입
  2. 시장의 변동에 따라 스톱 스톱 위치를 조정합니다.
  3. 트렌드 강도 필터를 증가시켜 가짜 신호를 줄여줍니다.
  4. 시장 감정 지표에 대한 고려
  5. 포지션 관리 시스템을 최적화하여 더 나은 자금 관리

요약하다

이것은 구조가 완전하고, 논리가 명확한 트렌드 추적 전략이다. 이진평선 시스템과 고정된 위험-수익률을 결합하여, 이 전략은 수익을 보장하면서도 위험을 잘 통제한다. 여전히 최적화해야 할 부분이 있지만, 전체적으로 이것은 더 많은 연구와 개선을 할 가치가 있는 거래 시스템이다.

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

//@version=5
strategy("Estrategia de Compra con Ratio 3:1", overlay=true)

// Parámetros de la temporalidad diaria y las EMAs
ema20 = ta.ema(close, 20)
ema200 = ta.ema(close, 200)

// Condiciones para la entrada en largo
cierre_por_encima_ema20 = close > ema20
ema20_mayor_ema200 = ema20 > ema200

// Variable para registrar si ya se realizó una compra
var bool compra_realizada = false

// Condición para registrar una compra: primera vez que cierra por encima de EMA 20 con EMA 20 > EMA 200
if (cierre_por_encima_ema20 and ema20_mayor_ema200 and not compra_realizada)
    // Abrir una operación de compra
    strategy.entry("Compra", strategy.long)
    compra_realizada := true  // Registrar que se realizó una compra

    // Definir los niveles de stop loss y take profit basados en el ratio 3:1
    stop_loss = strategy.position_avg_price * 0.995  // -0.50% (rendimiento)
    take_profit = strategy.position_avg_price * 1.015  // +1.50% (3:1 ratio)
    
    // Establecer el stop loss y take profit
    strategy.exit("Take Profit / Stop Loss", from_entry="Compra", stop=stop_loss, limit=take_profit)

// Condición para resetear la compra: cuando el precio cierra por debajo de la EMA de 20
if (close < ema20)
    compra_realizada := false  // Permitir una nueva operación

// Ploteo de las EMAs
plot(ema20, title="EMA 20", color=color.blue, linewidth=2)
plot(ema200, title="EMA 200", color=color.red, linewidth=2)

// Colorear el fondo cuando el precio está por encima de ambas EMAs
bgcolor(cierre_por_encima_ema20 and ema20_mayor_ema200 ? color.new(color.green, 80) : na)