
EMA MACD 운동 추적 전략은 지수 이동 평균 (EMA) 과 이동 평균 동향 분산 지표 (MACD) 를 결합한 양적 거래 전략이다. 이 전략은 5 분 차트에 적용되며, 단기 가격 추세와 운동 변화를 포착하여 높은 승률의 거래를 실현한다.
이 전략의 핵심 원칙은 두 가지 핵심 기술 지표에 기반합니다: EMA와 MACD. 첫째, 가격 트렌드를 식별하기 위해 두 개의 다른 주기의 EMA를 사용한다. 9 주기와 21 주기의 EMA를 사용한다. 빠른 EMA가 느린 EMA를 아래에서 통과하면 잠재적인 상승 신호로 간주되며, 반대로 하향 신호로 간주됩니다.
전략은 또한 동적인 중지 및 수익 설정, 평균 실제 범위 (ATR) 지표를 사용하여 시장의 변동성에 적응합니다. 이 방법은 다양한 시장 조건에 따라 위험 관리 매개 변수를 조정하여 전략의 적응성과 안정성을 향상시킵니다.
EMA MACD 동력 추적 전략은 기술 분석과 동적 위험 관리를 결합한 양적 거래 방법이다. 이 전략은 여러 기술 지표를 통합하여 단기 시장 추세와 동력 변화를 포착하고 ATR을 사용하여 위험을 통제하는 것을 목표로 한다. 전략은 우수한 적응력과 잠재력을 보여 주지만 과도한 거래와 시장 조건 변화와 같은 위험에 대해 신중하게 대처해야합니다. 지속적인 최적화와 추가 필터링 메커니즘을 도입함으로써 이 전략은 다양한 시장 환경에서 안정적인 성능을 유지할 것으로 예상된다.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-09-24 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA and MACD Strategy for 5-Min Chart", overlay=true)
// Inputs for EMAs
fastLength = input.int(9, title="Fast EMA Length")
slowLength = input.int(21, title="Slow EMA Length")
// Inputs for MACD
macdShortLength = input.int(12, title="MACD Short Length")
macdLongLength = input.int(26, title="MACD Long Length")
macdSignalLength = input.int(9, title="MACD Signal Length")
// Inputs for ATR
atrLength = input.int(14, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Multiplier")
// Calculate EMAs
fastEMA = ta.ema(close, fastLength)
slowEMA = ta.ema(close, slowLength)
// Calculate MACD
[macdLine, signalLine, macdHist] = ta.macd(close, macdShortLength, macdLongLength, macdSignalLength)
// Calculate ATR
atrValue = ta.atr(atrLength)
// Plot EMAs
plot(fastEMA, color=color.green, title="Fast EMA")
plot(slowEMA, color=color.red, title="Slow EMA")
// Plot MACD
hline(0, "Zero Line", color=color.gray)
plot(macdLine - signalLine, color=color.blue, title="MACD Histogram", style=plot.style_columns)
plot(macdLine, color=color.green, title="MACD Line")
plot(signalLine, color=color.orange, title="Signal Line")
// Entry conditions
longCondition = ta.crossover(fastEMA, slowEMA) and ta.crossover(macdLine, signalLine)
shortCondition = ta.crossunder(fastEMA, slowEMA) and ta.crossunder(macdLine, signalLine)
// Execute trades
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
// Dynamic Stop Loss and Take Profit based on ATR
longSL = strategy.position_avg_price - atrValue * atrMultiplier
longTP = strategy.position_avg_price + atrValue * atrMultiplier * 2
shortSL = strategy.position_avg_price + atrValue * atrMultiplier
shortTP = strategy.position_avg_price - atrValue * atrMultiplier * 2
if (strategy.position_size > 0)
strategy.exit("Take Profit/Stop Loss", "Long", stop=longSL, limit=longTP)
if (strategy.position_size < 0)
strategy.exit("Take Profit/Stop Loss", "Short", stop=shortSL, limit=shortTP)
// Alert conditions
alertcondition(longCondition, title="Long Alert", message="Long Entry Signal")
alertcondition(shortCondition, title="Short Alert", message="Short Entry Signal")