Стратегия перекрестного использования двойной EMA

Автор:Чао Чжан, Дата: 2023-10-30 12:27:50
Тэги:

img

Обзор

Стратегия двойной EMA Crossover - это типичная стратегия, следующая за трендом. Она использует две линии EMA разных периодов и генерирует торговые сигналы на основе их перекрестного действия. Когда более быстрая EMA пересекает более медленную EMA, генерируется сигнал покупки. Когда более быстрая EMA пересекает ниже более медленной EMA, генерируется сигнал продажи. Эта стратегия может отслеживать средне-долгосрочные тенденции и захватывать торговые возможности на стадиях начала тренда.

Логика стратегии

Ключевыми компонентами этой стратегии являются:

  1. Установите длины для более быстрой EMA и более медленной EMA.

  2. Вычислите более быструю и более медленную ЕМА.

  3. Установление ситуаций перекрестного EMA для генерации торговых сигналов. Когда более быстрая EMA пересекает более медленную EMA, генерируется сигнал покупки. Когда более быстрая EMA пересекает ниже более медленной EMA, генерируется сигнал продажи.

  4. При покупке длинных позиций, существующие короткие позиции закрываются сначала, прежде чем открывать длинные позиции.

  5. Когда вы идете на длинный рынок, стоп-лосс запускается, если цена падает ниже предыдущего минимума на определенный процент.

  6. Выходные сделки основаны на сигналах. Долгие позиции закрываются, когда более быстрая EMA пересекается ниже более медленной EMA. Краткие позиции закрываются, когда более быстрая EMA пересекается выше более медленной EMA.

Логика проста и интуитивна. Скрещивание EMA определяет направление и силу тренда. Более быстрая EMA быстро реагирует на краткосрочные изменения цен, в то время как более медленная EMA стабильно реагирует на долгосрочные тенденции. Скрещивание двух линий является классическим способом обнаружения изменений тренда.

Анализ преимуществ

Преимущества этой стратегии:

  1. Простая концепция, легкая для понимания и реализации.

  2. Способен эффективно отслеживать средне- и долгосрочные тенденции и ранне использовать возможности.

  3. Установка двойной EMA позволяет избежать шума от краткосрочных колебаний рынка.

  4. У него четкие правила входа, выхода и стоп-лосс.

  5. Нужно всего несколько параметров, не подвержены перенастройке, легкая настройка параметров, подходящая для начинающих.

  6. Хорошие результаты обратных тестов, жизнеспособные для торговли в режиме реального времени.

Анализ рисков

Некоторые риски этой стратегии:

  1. Параметры должны быть настроены, чтобы фильтровать недействительные сигналы.

  2. Не может справиться с ситуацией с колебаниями и изменением тренда. Нужно подтверждение от других индикаторов.

  3. Двойная стратегия EMA имеет тенденцию преследовать максимумы и продавать минимумы.

  4. Результаты обратных испытаний могут быть в некоторой степени перегружены.

  5. Невоевременная остановка потерь не может привести к большим потерям.

  6. Стоимость сделки может влиять на фактическую рентабельность.

Области улучшения

Некоторые способы улучшения стратегии:

  1. Оптимизируйте параметры периода EMA для поиска наилучшей комбинации, используя оптимизацию ходьбы вперед и машинное обучение.

  2. Добавьте индикаторы фильтра тренда, такие как ADX, CCI и т. д., чтобы избежать торговли в неопределенных тенденциях.

  3. Добавьте показатели объема, такие как объем торговли, к объему баланса, чтобы убедиться, что реальная торговля является движущим сигналом.

  4. Внедрить динамический стоп-лосс для автоматической корректировки стопов на основе волатильности рынка.

  5. Сочетать коррелированные продукты для использования корреляции для управления рисками.

  6. Внедрение машинного обучения для оптимизации параметров, инженерии функций, фильтрации сигналов и т.д.

  7. Учитывайте затраты на транзакции, корректируйте остановки и размер, чтобы уменьшить частоту торговли.

  8. Настройка параметров на основе характеристик продукта для улучшения адаптивности.

  9. Разработать комплексную стратегическую структуру в сочетании с другими стратегиями для повышения устойчивости.

Эти улучшения могут сделать стратегию более надежной и прибыльной для торговли в режиме реального времени.

Заключение

Эта стратегия использует двойной кроссовер EMA для генерации торговых сигналов и может эффективно отслеживать средне-долгосрочные тенденции. Преимущества заключаются в ее простоте и хороших результатах бэкстеста, что облегчает использование новичками. Но риски существуют и должны управляться с помощью оптимизации параметров, добавления индикаторов, динамических остановок, оптимизации торговых затрат и т. Д. Стратегия может использоваться отдельно или в сочетании с другими для дополнительной практичности.


/*backtest
start: 2022-10-23 00:00:00
end: 2023-10-29 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

strategy(title = "EMA Cross Strategy", shorttitle = "EMA Cross",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)
StartYear = input(2018, "Backtest Start Year")
StartMonth = input(1, "Backtest Start Month")
StartDay = input(1, "Backtest Start Day")
UseStopLoss = input(true,"UseStopLoss")

window() => time >=  timestamp(StartYear, StartMonth, StartDay,00,00) ? true : false

stopLoss = input(20, title = "Stop loss percentage(0.1%)")


maFastSource   = input(defval = open, title = "Fast MA Source")
maFastLength   = input(defval = 12, title = "Fast MA Period", minval = 1)
// long ma
maSlowSource   = input(defval = open, title = "Slow MA Source")
maSlowLength   = input(defval = 26, title = "Slow MA Period", minval = 1)

maFast = ema(maFastSource, maFastLength)
maSlow = ema(maSlowSource, maSlowLength)


fast = plot(maFast, title = "Fast MA", color = #7a8598, linewidth = 2, style = line, transp = 50)
slow = plot(maSlow, title = "Slow MA", color = #e08937, linewidth = 2, style = line, transp = 50)


longEMA = crossover(maFast, maSlow)
exitLong = crossunder(maFast, maSlow)

shortEMA = crossover(maSlow, maFast)
exitShort = crossover(maFast, maSlow)


if (longEMA)
    strategy.entry("LongId", strategy.long, when=window())
 
if (shortEMA)
    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)

Больше