EMA와 MACD를 기반으로 한 트렌드 다음 전략

저자:차오장, 날짜: 2024-01-05 11:16:17
태그:

img

전반적인 설명

이 전략은 트렌드 신호를 식별하고 중장기 트렌드를 포착하기 위해 EMA 라인과 MACD 지표를 시간 프레임에 걸쳐 결합합니다. 단기 트렌드가 중장기 트렌드와 일치 할 때 트렌드 다음 행동을 취합니다. 한편, 전략은 ATR 지표를 사용하여 스톱 로스를 설정하고 변동의 위험을 제어하기 위해 이익을 취합니다.

원칙

이 전략은 중장기 트렌드 방향을 결정하기 위해 50일 EMA와 100일 EMA를 사용합니다. MACD 지표에 의해 단기 트렌드가 확인되면 방향이 일치하는지 확인합니다. 예라면 트렌드를 따르는 행동을 취합니다.

특히, MACD 빠른 라인이 느린 라인의 위를 넘어서 50일 EMA를 닫고 100일 EMA를 닫을 때, 그것은 길어집니다. MACD 빠른 라인이 느린 라인의 아래를 넘어서 50일 EMA를 닫고 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)


더 많은