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

Автор:Чао Чжан, Дата: 2024-01-29 15:56:56
Тэги:

img

Обзор

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

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

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

После входа в позиции, стратегия также устанавливает стоп-лосс и берёт прибыль одновременно. Стоп-лосс - это определенный процент от цены входа как линия стоп-лосса. Если цена коснется линии стоп-лосса, она выйдет из позиции для стоп-лосса. Прибыль - это определенный процент от цены входа как линия прибыли. Если цена коснется линии прибыли, она выйдет из позиции для получения прибыли.

Эта стратегия также позволяет выбирать только длинную, только короткую, внутридневную торговлю или торговлю позициями.

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

Эта стратегия имеет следующие преимущества:

  1. Использование индикатора EMA для фильтрации шума и несложного обнаружения средне-долгосрочных тенденций.

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

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

  4. Разрешать только длинную, только короткую, внутридневную и позиционную торговлю для различных типов трейдеров.

  5. Поддержка нескольких торговых активов, таких как акции, валюты, криптовалюты и т. Д.

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

Эта стратегия также сопряжена с некоторыми потенциальными рисками:

  1. Показатель EMA имеет отстающий эффект и может пропустить некоторые краткосрочные поворотные моменты тренда.

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

  3. Если держать позиции слишком долго, это может привести к более значительным колебаниям на рынке.

  4. Механические стоп-лосс и прибыль могут выйти из позиций слишком рано или преждевременно снизить прибыль.

Соответствующие измерения управления рисками:

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

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

  3. Динамически регулируйте стоп-лосс и прибыль.

  4. Ручное вмешательство в необычные рыночные условия.

Руководство по оптимизации

Эта стратегия может быть оптимизирована в следующих аспектах:

  1. Наилучшая оптимизация параметров EMA для поиска подходящих комбинаций коротких и длинных периодов для различных торговых активов.

  2. Добавьте другие индикаторы, такие как MACD, KD для многоиндикаторной синергии.

  3. Добавьте модели машинного обучения для генерирования динамических стоп-лосса и получения прибыли.

  4. Подключить более продвинутые индикаторы риска для разработки функций.

  5. Добавить адаптивные торговые компоненты для самооптимизации параметров.

Резюме

В целом, это отличный тренд, следующий за шаблоном стратегии. Его основная сила заключается в использовании индикатора EMA для фильтрации шума и достижения устойчивой прибыли, при этом обладая комплексным управлением рисками и вознаграждениями. Благодаря непрерывной оптимизации эта стратегия может стать универсальной количественной стратегией на всех рынках и полезна для трейдеров для изучения и практики.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA Crossover Strategy by Vikrant Singh", overlay=true)


// Input for EMA Lengths
var bool runningPOS = false
var float stopLossLevel = na
var float targetLevel = na
shortLength = input(11, title="Short EMA Length")
longLength = input(21, title="Long EMA Length")

// Input for Stop-Loss and Target
stopLossPct = input(1, title="Stop-Loss (%)")
targetPct = input(3, title="Target (%)")
longOnly = input(true, title="Long Only")
intraDay = input(true, title="intraday?")


// Calculate EMAs
emaShort = ta.ema(close, shortLength)
emaLong = ta.ema(close, longLength)

// Calculate crossover conditions
crossoverCondition = ta.crossover(emaShort, emaLong)
crossunderCondition = ta.crossunder(emaShort, emaLong)

// Entry condition (long position just before crossover)
if crossoverCondition and not runningPOS and longOnly and (hour <= 15)
    strategy.entry("Long", strategy.long)
    runningPOS := true
    stopLossLevel := close * (1 - stopLossPct / 100)
    targetLevel := close * (1 + targetPct / 100)

//Entry condition (short position just before crossover)
if crossunderCondition and not runningPOS and not longOnly and (hour <= 15)
    strategy.entry("Short", strategy.short)
    runningPOS := true
    stopLossLevel := close * (1 + stopLossPct / 100)
    targetLevel := close * (1 - targetPct / 100)

// Exit conditions (square off on reverse crossover)
//Exit long
if (crossunderCondition or (low < stopLossLevel) or (high > targetLevel) ) and longOnly and runningPOS
    strategy.close("Long",comment = "Exit long")// ("Long", from_entry="Long",stop=stopLossLevel, limit=targetLevel)
    runningPOS := false

//Exit short
if (crossoverCondition or (high > stopLossLevel) or (low < targetLevel) ) and not longOnly and runningPOS
    strategy.close("Short", comment = "Exit Short")
    runningPOS := false

if intraDay and runningPOS
    if (hour >= 15)
        strategy.close_all(comment = "Intraday square off")
        //strategy.close("Long",comment = "intraday square off")
        runningPOS := false


// Plot EMAs
plot(emaShort, color=color.blue, title="Short EMA")
plot(emaLong, color=color.red, title="Long EMA")

Больше