이 전략은 트렌드 결정 및 거래 결정을 위해 이중 이동 평균 시스템을 사용하며, 트렌드 시작, 지속 또는 종료를 식별하기 위해 특정 시간 지점에서의 빠르고 느린 기하급수적 이동 평균 (EMA) 의 상대적 위치를 활용합니다. 이 전략은 매일 일정한 시간에 빠른 EMA와 느린 EMA 사이의 관계를 확인하고, 빠른 라인이 느린 라인의 위에 있고 짧은 라인이 아래에있을 때 긴 포지션을 설정합니다.
이 전략의 핵심은 트렌드 결정을위한 다른 기간을 가진 두 개의 EMA를 기반으로합니다. 빠른 EMA (디폴트 기간 10) 는 가격 변화에 더 민감하며 시장의 움직임을 빠르게 파악할 수 있습니다. 느린 EMA (디폴트 기간 50) 는 장기적인 추세를 반영합니다. 전략은 시장 트렌드 방향을 결정하고 거래를 실행하기 위해 EMA 크로스오버 신호를 사용하여 각 거래일에 지정된 시간에 (디폴트 9: 00) 이 두 라인 사이의 위치 관계를 검사합니다. 빠른 EMA가 느린 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")