EMA23/EMA50 이중 이동 평균 교차 양적 거래 전략

EMA EMA23 EMA50
생성 날짜: 2024-04-26 15:29:21 마지막으로 수정됨: 2024-04-26 15:29:21
복사: 3 클릭수: 605
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

EMA23/EMA50 이중 이동 평균 교차 양적 거래 전략

개요

이 전략은 EMA23와 EMA50의 교차 신호를 기반으로 거래한다. EMA23이 EMA50을 통과하면 구매 신호가 발생하고, EMA50을 통과하면 판매 신호가 발생한다. 이 전략은 가격이 EMA50을 넘어지면 다단위 포지션을 중지하고, 반대로 공수 포지션을 중지한다. 또한, 이 전략은 가격이 EMA50에 다시 올라갈 때 다시 진입한다. 이 전략은 30분 시간 프레임에 적용된다.

전략 원칙

  1. EMA23와 EMA50 두 지수의 이동 평균을 계산한다.
  2. EMA23 위에 EMA50을 밟으면 구매 신호가 발생하고, EMA23 아래에 EMA50을 밟으면 판매 신호가 발생한다.
  3. 다단계 포지션의 경우, 가격이 EMA50 아래로 내려가면, K선 앞의 EMA50 아래로 클로즈되는 경우, 손실을 다.
  4. 공백 상위 포지션의 경우, 가격이 EMA50을 넘어서서 마감 가격이 전 K 선의 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)