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

EMA의 이중 이동평균 크로스오버 전략

저자:차오장, 날짜: 2024-06-07 15:58:15
태그:EMAMA

img

전반적인 설명

이 전략은 두 개의 기하급수적인 이동 평균 (EMA) 을 사용하여 가격 트렌드의 변화를 파악합니다. 단기 EMA가 아래에서 장기 EMA를 넘을 때 구매 신호가 생성됩니다. 단기 EMA가 위에서 장기 EMA를 넘을 때 판매 신호가 생성됩니다. 전략은 또한 일일 손실과 이익을 제어하기 위해 매일 스톱 로스 및 영업 한도를 설정합니다.

전략 원칙

  1. 단기 EMA (9의 기본 기간) 및 장기 EMA (21의 기본 기간) 를 계산합니다.
  2. 단기 EMA가 장기 EMA를 넘으면 긴 포지션을 열고 단기 EMA가 장기 EMA를 넘으면 짧은 포지션을 열고
  3. 각 거래의 시작에 계정 자금을 기록하고, 현재 계정 자금과 시작 자금, 즉 일일 이익과 손실 사이의 차이를 계산합니다.
  4. 일일 손실이 허용되는 최대 손실 (0.25%의 초기 계좌 자금) 을 초과하면 모든 포지션을 닫습니다.
  5. 일일 이윤이 허용된 최대 이윤 (2%의 초기 계좌 자금) 을 초과하면 모든 포지션을 종료합니다.

전략적 장점

  1. 간단하고 이해하기 쉽다: 전략 논리는 명확하고 거래 신호를 생성하기 위해 두 개의 이동 평균만을 사용하므로 이해하기 쉽고 구현 할 수 있습니다.
  2. 트렌드 추적: 빠른 EMA와 느린 EMA의 교차를 사용하여 전략은 가격 트렌드의 변화를 비교적 잘 파악할 수 있으며 트렌드 시장에서 사용하기 적합합니다.
  3. 리스크 제어: 매일 스톱 로스 및 영업 제한은 일일 손실과 수익을 효과적으로 제어하여 계좌의 과도한 변동을 방지 할 수 있습니다.

전략 위험

  1. 매개 변수 최적화: 전략의 성능은 EMA 기간의 선택에 크게 의존하며, 다른 매개 변수 설정은 크게 다른 결과를 초래할 수 있습니다. 따라서 매개 변수 최적화 및 백테스팅은 다른 시장 환경에서 수행해야합니다.
  2. 불안한 시장: 불안한 시장에서는 가격이 EMA를 상하고 아래로 자주 변동하여 많은 잘못된 신호를 생성하고 빈번한 거래와 자본 침식으로 이어집니다.
  3. 트렌드 역전: 시장 트렌드가 역전되면 전략은 가장 좋은 거래 기회를 놓치고 입출을 지연시킬 수 있습니다.

전략 최적화 방향

  1. 트렌드 강도와 방향을 판단하고 신호 정확도를 향상시키기 위해 RSI와 MACD와 같은 다른 기술적 지표를 도입하십시오.
  2. 스톱 로스 및 트레이킹 스톱 또는 동적 트레이킹 수익 레벨을 사용하는 것과 같은 스톱 로스 및 트레이크 수익 규칙을 최적화하여 수익을 더 잘 보호하고 위험을 제어합니다.
  3. 다른 시장 상태에 적응하기 위해 시장 변동성에 따라 EMA 기간을 동적으로 조정합니다.
  4. 경제 데이터와 주요 이벤트와 같은 근본 분석을 결합하여 거래 신호를 필터하고 확인합니다.

요약

EMA 이중 이동 평균 크로스오버 전략은 트렌딩 시장에 적합한 간단하고 이해하기 쉬운 거래 전략이다. 빠르고 느린 이동 평균의 크로스오버를 사용하여 가격 트렌드의 변화를 비교적 잘 파악할 수 있다. 동시에, 일일 스톱 로스 및 테이크 노프트 설정은 위험을 효과적으로 제어할 수 있다. 그러나, 전략은 불안한 시장이나 트렌드 역전 시에는 저성공할 수 있으며, 다른 기술적 지표와 분석 방법을 결합하여 최적화 및 개선되어야 한다.


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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © DD173838

//@version=5
strategy("Moving Average Strategy with Daily Limits", overlay=true)

// Moving Average settings
shortMaLength = input.int(9, title="Short MA Length")
longMaLength = input.int(21, title="Long MA Length")

// Calculate MAs
shortMa = ta.ema(close, shortMaLength)
longMa = ta.ema(close, longMaLength)

// Plot MAs
plot(shortMa, title="9 EMA", color=color.blue)
plot(longMa, title="21 EMA", color=color.red)

// Strategy conditions
crossUp = ta.crossover(shortMa, longMa)
crossDown = ta.crossunder(shortMa, longMa)

// Debug plots to check cross conditions
plotshape(series=crossUp, title="Cross Up", location=location.belowbar, color=color.green, style=shape.labelup, text="UP")
plotshape(series=crossDown, title="Cross Down", location=location.abovebar, color=color.red, style=shape.labeldown, text="DOWN")

// Entry at cross signals
if (crossUp)
    strategy.entry("Long", strategy.long)

if (crossDown)
    strategy.entry("Short", strategy.short)

// Daily drawdown and profit limits
var float startOfDayEquity = na
if (na(startOfDayEquity) or ta.change(time('D')) != 0)
    startOfDayEquity := strategy.equity

maxDailyLoss = 50000 * 0.0025
maxDailyProfit = 50000 * 0.02
currentDailyPL = strategy.equity - startOfDayEquity

if (currentDailyPL <= -maxDailyLoss)
    strategy.close_all(comment="Max Daily Loss Reached")

if (currentDailyPL >= maxDailyProfit)
    strategy.close_all(comment="Max Daily Profit Reached")


관련

더 많은