EMA23/EMA50 이중 이동 평균 크로스오버 양적 거래 전략

저자:차오장, 날짜: 2024-04-26 15:29:21
태그:EMAEMA23EMA50

img

전반적인 설명

이 전략은 EMA23와 EMA50의 교차 신호를 기반으로 거래합니다. EMA23가 EMA50를 넘을 때 구매 신호를 생성하고, 이보다 낮을 때 판매 신호를 생성합니다. 이 전략은 또한 가격이 EMA50 이하로 떨어지면 긴 포지션과 가격이 EMA50 이상으로 상승하면 짧은 포지션에 대한 스톱 로스를 구현합니다. 또한, 이 전략은 가격이 EMA50를 넘어서면 시장에 다시 진출합니다. 이 전략은 30 분 시간 틀에 적합합니다.

전략 원칙

  1. 두 개의 기하급수적인 이동 평균을 계산합니다. EMA23과 EMA50입니다.
  2. EMA23가 EMA50를 넘을 때 구매 신호를 생성하고, EMA23가 EMA50을 넘을 때 판매 신호를 생성합니다.
  3. 롱 포지션의 경우, 가격이 EMA50 이하로 떨어지고 종료 가격이 이전 촛불의 EMA50보다 낮으면 스톱 로스를 적용합니다.
  4. 짧은 포지션의 경우, 가격이 EMA50를 넘어서고 종료 가격이 이전 촛불의 EMA50보다 높으면 스톱 로스를 적용합니다.
  5. 긴 포지션의 경우, 가격이 EMA50을 넘어선다면 시장에 다시 진입합니다. 닫기 가격과 높은 가격 모두 EMA50보다 높고 EMA23는 EMA50보다 높습니다.
  6. 짧은 포지션의 경우, 가격이 EMA50 아래로 다시 이동하면 시장에 다시 진입합니다. 닫기 가격과 낮은 가격 모두 EMA50 아래와 EMA23가 EMA50 아래입니다.
  7. 긴 포지션의 수익률은 입시 가격의 1.6배, 짧은 포지션의 0.75배로 설정합니다.

전략적 장점

  1. 이중 이동 평균 크로스오버는 트렌드를 파악하는 데 도움이 되는 간단하고 효과적인 트렌드 추적 지표입니다.
  2. 스톱 로스 메커니즘은 위험을 통제하고 손실이 확대되는 것을 방지합니다.
  3. 재진입 메커니즘은 전략이 다시 트렌드를 파악하고 수익 잠재력을 높일 수 있도록 합니다.
  4. 영업이익 수준은 적시에 영업이익을 확보하는데 도움이 됩니다.
  5. 30분 시간 프레임은 더 많은 거래 기회를 제공하면서 약간의 소음을 필터링합니다.

전략 위험

  1. 트렌드를 따르는 지표로서 EMA는 지연을 가지고 있으며 최적의 입구 지점을 놓칠 수 있습니다.
  2. 스톱 로스 레벨의 배치가 최적화되지 않아 조기 스톱 아웃이 발생할 수 있습니다.
  3. 빈번한 거래는 거래 비용을 증가시키고 수익성에 영향을 줄 수 있습니다.
  4. 이 전략은 다양한 시장에서 더 많은 잘못된 신호를 생성할 수 있습니다.
  5. 고정된 수익률은 전략의 수익 잠재력을 제한할 수 있습니다.

전략 최적화 방향

  1. 트렌드 결정에 도움이 되는 다른 기술적 지표를 도입하고 MACD, RSI 등과 같은 진입점과 출구점을 개선하는 것을 고려하십시오.
  2. 스톱 로스 레벨의 배치를 최적화하고, 스톱 로스 포지션을 동적으로 조정하기 위해 ATR과 같은 변동성 지표의 사용을 고려합니다.
  3. 잘못된 신호를 줄이기 위해 적절한 거래 필터링 조건을 설정하여 거래 빈도를 제어합니다.
  4. 다른 전략 매개 변수 설정을 사용 하 여 범위 및 트렌딩 시장.
  5. 시장 변동성, 위험/이익 비율 등에 따라 동적으로 조정하는 등 수익률을 보다 유연하게 만드는 것

요약

이 전략은 EMA23 및 EMA50이라는 두 이동 평균의 교차를 기반으로 한 양적 거래 전략이다. 교차 신호를 통해 트렌드를 캡처하고 위험을 제어하고 수익 잠재력을 높이기 위해 스톱 로스 및 재입구 메커니즘을 구현합니다. 전략은 간단하고 이해하기 쉽습니다. 30 분 시간 프레임에서 중장기 및 단기 거래에 적합합니다. 그러나 전략에는 추세 식별, 서브 최적 스톱 로스 배치 및 범위 시장에서 낮은 성과와 같은 일부 제한이 있습니다. 미래에 더 많은 기술적 지표를 도입하고, 스톱 로스 포지션을 최적화하고, 거래 주파수를 제어하고, 트렌딩과 범위 시장의 차이를 구분하고, 더 강력한 수익을 달성하기 위해 동적 인 수익 수준을 구현하여 전략을 최적화 할 수 있습니다.


/*backtest
start: 2023-04-20 00:00:00
end: 2024-04-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA Crossover Strategy", overlay=true)

// EMA 23 ve EMA 50'nin hesaplanması
ema23 = ta.ema(close, 23)
ema50 = ta.ema(close, 50)

// Ana alım kuralı: EMA 23 ve EMA 50'nin yukarı kesilmesi
buySignal = ta.crossover(ema23, ema50)

// Ana satış kuralı: EMA 23 ve EMA 50'nin aşağı kesilmesi
sellSignal = ta.crossunder(ema23, ema50)

// Long pozisyon stop seviyesi
longStopLoss = low < ema50 and close < ema50[1]

// Short pozisyon stop seviyesi
shortStopLoss = high > ema50 and close > ema50[1]

// Long pozisyon için tekrar giriş kuralı
longReEntry = high > ema50 and close > ema50 and close > ema50 and ema23 > ema50

// Short pozisyon için tekrar giriş kuralı
shortReEntry = low < ema50 and close < ema50 and close < ema50 and ema23 < ema50

// Long işlemde kar alma seviyesi (%60)
longTakeProfit = strategy.position_avg_price * 1.60

// Short işlemde kar alma seviyesi (%25)
shortTakeProfit = strategy.position_avg_price * 0.75

// Long işlem için yeniden giriş koşulu
longReEntryCondition = strategy.position_size <= 0 and longReEntry

// Short işlem için yeniden giriş koşulu
shortReEntryCondition = strategy.position_size >= 0 and shortReEntry

// Geriye dönük test için başlangıç tarihi (01.01.2022)
startDate = timestamp(2022, 01, 01, 00, 00)

if (time >= startDate)
    if (buySignal)
        strategy.entry("Buy", strategy.long)

    if (sellSignal)
        strategy.entry("Sell", strategy.short)

    if (strategy.position_size > 0 and (longStopLoss or close >= longTakeProfit))
        strategy.close("Buy")

    if (strategy.position_size < 0 and (shortStopLoss or close <= shortTakeProfit))
        strategy.close("Sell")

    if (longReEntryCondition)
        strategy.entry("Buy", strategy.long)

    if (shortReEntryCondition)
        strategy.entry("Sell", strategy.short)


관련

더 많은