EMA 및 MACD를 기반으로 한 다중 시간 프레임 추세 추종 전략


생성 날짜: 2024-01-05 11:16:17 마지막으로 수정됨: 2024-01-05 11:16:17
복사: 0 클릭수: 640
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

EMA 및 MACD를 기반으로 한 다중 시간 프레임 추세 추종 전략

개요

이 전략은 EMA 평균선과 MACD 지표를 사용하여 여러 시간 프레임에 걸쳐 트렌드 신호를 식별하여 중장선 트렌드를 포착합니다. 단기 트렌드가 중장기 트렌드 방향과 일치하면 트렌드 추적 작업을 수행합니다. 동시에 ATR 지표를 사용하여 스톱을 설정하고 변동에 대한 위험을 제어합니다.

전략 원칙

전략은 50일 EMA선과 100일 EMA선으로 중장기 트렌드 방향을 판단한다. 단기 트렌드 방향이 MACD 지표에 의해 식별될 때, 단기 트렌드 방향이 중장기 트렌드 방향과 일치하는지 판단한다. 일치하면 트렌드 추적 동작을 한다.

구체적으로, MACD 빠른 라인에서 느린 라인을 통과하고, closes > 50 일 EMA와 closes > 100 일 EMA를 닫을 때, 더 많이; MACD 빠른 라인 아래에서 느린 라인을 통과하고, closes < 50 일 EMA와 closes < 100 일 EMA를 닫을 때, 공백을 다.

또한, 전략은 ATR 지표를 사용하여 변동 범위를 계산하고, 스톱 스톱 가격을 설정한다. 클로즈 가격의 일정한 배수의 ATR을 스톱 위치로 삼고, 클로즈 가격의 일정한 배수의 ATR을 스톱 위치로 삼는다.

우위 분석

  1. EMA 평균선과 MACD 지표가 결합되어 여러 시간 프레임에 걸쳐 트렌드 신호를 식별하여 놓친 긴 선의 트렌드를 방지합니다.
  2. ATR 지표를 사용하여 시장의 변동에 따라 스톱로스트를 설정하여 위험을 효과적으로 제어할 수 있습니다.
  3. 거래 시장 중립 영역을 피하고 불필요한 손실을 줄여라

위험 분석

  1. EMA 평균이 지연되어 전환점을 놓칠 수 있습니다.
  2. MACD 지표는 여러 시간 주기를 가지고 있으며, 매개 변수 설정은 결과에 영향을 미칩니다.
  3. ATR의 변동 범위는 미래의 가격 변동에 대한 완전한 표현이 아니며 위험을 완전히 피할 수 없습니다.

대책:

  1. 다른 지표와 함께 확인 신호를 사용하여 EMA 지연 문제를 피할 수 있습니다.
  2. MACD 변수를 조정하여 결과를 최적화합니다.
  3. ATR 배수를 합리적으로 설정하여 최대 손실을 제어합니다.

최적화 방향

  1. 다른 EMA 평균주기 조합을 테스트
  2. MACD 변수 설정을 최적화
  3. 최적의 ATR 스톱 로즈 스톱 배수를 자동으로 찾아내는 기계 학습 방법을 사용합니다.

요약하다

이 전략은 EMA, MACD 및 ATR과 같은 지표를 종합적으로 활용하여 다중 시간 프레임의 트렌드 추적 작업을 수행합니다. 매개 변수를 최적화하여 더 나은 전략 수익률을 얻을 수 있습니다. 또한 지표 지연, 매개 변수 조정 및 변동 제어 부적절 등의 위험을 예방하는 것이 필요하며 계속 최적화 및 향상해야합니다.

전략 소스 코드
/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA-50, EMA-100, and MACD Strategy with ATR for Stop Loss/Profit", overlay=true)

// MACD hesaplama
fastLength = input(12, title="Fast Length")
slowLength = input(26, title="Slow Length")
signalLength = input(9, title="Signal Length")
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalLength)

// EMA-50 ve EMA-100 hesaplama
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)

// ATR hesaplama
atrLength = input(14, title="ATR Length")
atrValue = ta.atr(atrLength)

// Take Profit ve Stop Loss çoklayıcıları
takeProfitMultiplier = input(3.0, title="Take Profit Multiplier") // TP, 3 katı ATR
stopLossMultiplier = input(1.0, title="Stop Loss Multiplier")

// Long Pozisyon Koşulları
longCondition = ta.crossover(macdLine, signalLine) and close > ema50 and close > ema100

// Short Pozisyon Koşulları
shortCondition = ta.crossunder(macdLine, signalLine) and close < ema50 and close < ema100

// Take Profit ve Stop Loss Seviyeleri
takeProfitLevel = close + takeProfitMultiplier * atrValue
stopLossLevel = close - stopLossMultiplier * atrValue

// Long Pozisyon İşlemleri
strategy.entry("Long", strategy.long, when=longCondition)
strategy.exit("Take Profit/Stop Loss", from_entry="Long", loss=stopLossLevel, profit=takeProfitLevel)

// Short Pozisyon İşlemleri
strategy.entry("Short", strategy.short, when=shortCondition)
strategy.exit("Take Profit/Stop Loss", from_entry="Short", loss=stopLossLevel, profit=takeProfitLevel)

// Grafikte Gösterme
plot(ema50, color=color.blue, title="EMA-50")
plot(ema100, color=color.red, title="EMA-100")
hline(0, "Zero Line", color=color.gray)