Стратегия следования тренду EMA - это стратегия отслеживания тренда, основанная на индикаторе EMA. Она оценивает направление тренда путем расчета линии EMA за определенный период и следует за трендом. Она становится короткой, когда цена пересекает линию EMA, и длинной, когда цена пересекает линию EMA. Это типичная стратегия следования тренду.
Основой этой стратегии является определение тренда с использованием индикатора EMA. EMA - это экспоненциальная скользящая средняя, которая придает большее значение последним ценам и быстрее реагирует на изменения цен. Вычисляя среднюю цену за период EMA, она создает сглаженную кривую. Когда цена пересекает линию EMA снизу, это сигнализирует о восходящей тенденции; когда цена пересекает линию EMA снизу сверху, это сигнализирует о нисходящей тенденции.
Основываясь на этой логике, стратегия становится короткой, когда цена выходит выше EMA, и длинной, когда цена выходит ниже EMA, отслеживая тенденцию, следуя линии EMA. В частности, она рассчитывает 8-периодную EMA на цене закрытия - короткое закрытие, когда закрытие выходит выше EMA, и длинное закрытие, когда закрытие выходит ниже EMA. Она также устанавливает стоп-лосс для контроля рисков.
Эффективное отслеживание тенденций: EMA сглаживает колебания цен, отфильтровывает рыночный шум и отслеживает средне- и долгосрочные тенденции.
В сравнении с краткосрочными показателями, EMA имеет среднюю частоту корректировки, избегая чрезмерной торговли.
Стратегия основана исключительно на одном индикаторе EMA, однако достигает цели следования тенденции.
Стратегия может быть улучшена путем оптимизации параметров EMA или добавления других индикаторов.
Когда цены быстро меняются, EMA нуждается в времени для корректировки и может пропустить лучшие точки входа.
Увеличение потерь. EMA следует тенденциям и не может точно определить точки настройки. Обратные действия могут привести к большим потерям. Решение заключается в установке разумной стоп-лосс.
Частота слишком высокая или слишком низкая. Различные периоды EMA приводят к разным частотам торговли. Слишком короткий может переторговаться, слишком длинный может упустить возможности. Решение заключается в тестировании различных периодов EMA, чтобы найти оптимальный.
Оптимизируйте параметры EMA, чтобы найти наилучший баланс.
Добавьте другие индикаторы для определения точек настройки.
Оптимизировать стратегию стоп-лосса, чтобы найти наилучший уровень стоп-лосса с помощью обратного тестирования.
Оптимизируйте выбор символов.
Стратегия EMA - это очень типичная стратегия отслеживания трендов, основанная на индикаторе. Она проста и проста в реализации, подходит для обучения новичков. Между тем, она имеет возможность расширения для дальнейшего улучшения стратегии путем добавления индикаторов или оптимизации параметров. С постоянными улучшениями она может стать очень практичным инструментом отслеживания трендов.
/*backtest start: 2022-10-09 00:00:00 end: 2023-10-15 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "EMA Close Strategy", shorttitle = "EMA Close",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100) EmaSource = input(defval = close, title = "EMA Source") EmaLength = input(defval = 8, title = "EMA Period", minval = 1) StartYear = input(2018, "Backtest Start Year") StartMonth = input(1, "Backtest Start Month") StartDay = input(1, "Backtest Start Day") stopLoss = input(30, title = "Stop loss percentage(0.1%)") UseStopLoss = input(true,"UseStopLoss") window() => time >= timestamp(StartYear, StartMonth, StartDay,00,00) ? true : false EMA = ema(EmaSource,EmaLength) plot(EMA, title = "EMA", color = green, linewidth = 2, style = line, transp = 50) long = crossunder(EMA, close) short= crossover(EMA, close) if (long) strategy.entry("LongId", strategy.long, when=window()) if (short) strategy.entry("ShortId", strategy.short, when=window()) if (UseStopLoss) strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick) strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)