Эта стратегия использует двойную систему скользящих средних для определения тренда и принятия торговых решений, используя относительную позицию быстрых и медленных экспоненциальных скользящих средних (EMAs) в определенные моменты времени для определения начала, продолжения или окончания тренда.
Основа стратегии основана на двух EMA с различными периодами для определения тренда. Быстрая EMA (период 10 по умолчанию) более чувствительна к изменениям цен, способна быстро улавливать движения рынка; медленная EMA (период 50 по умолчанию) отражает долгосрочные тенденции. Стратегия проверяет отношение позиций между этими двумя линиями в определенное время каждого торгового дня (по умолчанию 9:00), используя сигналы перекрестного EMA для определения направления тренда рынка и выполнения сделок. Долгая позиция вводится, когда быстрая 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")