
이 전략은 추세 판단 및 거래 결정에 이중 이동 평균 시스템을 사용하고, 특정 시점에서 빠르게 이동 평균과 느리게 이동 평균 간의 상대적인 위치 관계를 통해 시장 추세의 시작, 지속 또는 끝을 식별합니다. 전략은 매일 정해진 시간에 빠른 EMA와 느린 EMA 간의 포지션 관계를 확인하고 빠른 라인이 느린 라인 위에 있을 때는 롱 포지션을 설정하고, 빠른 라인이 느린 라인 아래에 있을 때는 숏 포지션을 설정합니다. 이를 통해 추세 추적 거래가 가능해졌습니다.
전략의 핵심은 서로 다른 기간의 두 가지 지수 이동 평균(EMA)을 기반으로 추세 판단을 내리는 것입니다. 빠른 EMA(기본 기간은 10)는 가격 변화에 더 민감하며 시장 동향을 더욱 빠르게 포착할 수 있습니다. 느린 EMA(기본 기간은 50)는 장기적인 동향을 반영합니다. 이 전략은 각 거래일의 특정 시간(기본값은 오전 9시)에 두 이동 평균선의 위치 관계를 확인하고, 시장 추세 방향을 판단하여 이동 평균선 교차 신호에 따라 거래를 진행합니다. 빠른 EMA가 느린 EMA 위로 교차할 때는 단기 상승 모멘텀이 커졌으며 롱 포지션을 취하기 위해 시장에 진입할 때임을 나타냅니다. 빠른 EMA가 느린 EMA 아래로 교차할 때는 단기 상승 모멘텀이 커졌으며 롱 포지션을 취하기 위해 시장에 진입할 때임을 나타냅니다. 하락 추세가 커졌고, 숏 포지션을 취하기 위해 시장에 진입할 때가 되었습니다.
이 전략은 빠르고 느린 이중 이동 평균 시스템과 고정 시간 확인 메커니즘을 결합하여 간단하고 효과적인 추세 추적 거래 시스템을 실현합니다. 이 전략의 장점은 논리가 명확하고 자동화 수준이 높다는 점이지만, 이동 평균 지연과 고정된 진입 시간과 같은 한계도 있습니다. 추가적인 기술 지표 도입, 매개변수 선택 메커니즘 최적화, 위험 관리 조치 강화를 통해 전략을 개선할 여지가 아직 많이 있습니다. 전반적으로 이는 실용적 가치를 지닌 기본적인 전략 프레임워크이며, 특정 요구 사항에 따라 더욱 개선되고 최적화될 수 있습니다.
/*backtest
start: 2024-12-06 00:00:00
end: 2025-01-04 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Daily EMA Comparison Strategy", shorttitle="Daily EMA cros Comparison", overlay=true)
//------------------------------------------------------------------------------
// Inputs
//------------------------------------------------------------------------------
fastEmaLength = input.int(10, title="Fast EMA Length", minval=1) // Fast EMA period
slowEmaLength = input.int(50, title="Slow EMA Length", minval=1) // Slow EMA period
checkHour = input.int(9, title="Check Hour (24h format)", minval=0, maxval=23) // Hour to check
checkMinute = input.int(0, title="Check Minute", minval=0, maxval=59) // Minute to check
//------------------------------------------------------------------------------
// EMA Calculation
//------------------------------------------------------------------------------
fastEMA = ta.ema(close, fastEmaLength)
slowEMA = ta.ema(close, slowEmaLength)
//------------------------------------------------------------------------------
// Time Check
//------------------------------------------------------------------------------
// Get the current bar's time in the exchange's timezone
currentTime = timestamp("GMT-0", year, month, dayofmonth, checkHour, checkMinute)
// Check if the bar's time equals or passes the daily check time
isCheckTime = (time >= currentTime and time < currentTime + 60 * 1000) // 1-minute tolerance
//------------------------------------------------------------------------------
// Entry Conditions
//------------------------------------------------------------------------------
// Buy if Fast EMA is above Slow EMA at the specified time
buyCondition = isCheckTime and fastEMA > slowEMA
// Sell if Fast EMA is below Slow EMA at the specified time
sellCondition = isCheckTime and fastEMA < slowEMA
//------------------------------------------------------------------------------
// Strategy Execution
//------------------------------------------------------------------------------
// Enter Long
if buyCondition
strategy.entry("Long", strategy.long)
// Enter Short
if sellCondition
strategy.entry("Short", strategy.short)
//------------------------------------------------------------------------------
// Plot EMAs
//------------------------------------------------------------------------------
plot(fastEMA, color=color.blue, title="Fast EMA")
plot(slowEMA, color=color.orange, title="Slow EMA")