Тенденция EMA в соответствии со своей стратегией

Автор:Чао Чжан, Дата: 2023-10-16 15:54:41
Тэги:

img

Обзор

Стратегия следования тренду 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)

Больше