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


Дата создания: 2024-01-29 15:56:56 Последнее изменение: 2024-01-29 15:56:56
Копировать: 0 Количество просмотров: 608
1
Подписаться
1617
Подписчики

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

Обзор

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

Стратегический принцип

В качестве торгового сигнала в стратегии используется золотая спираль EMA. В частности, рассчитываются краткосрочные EMA и долгосрочные EMA, которые генерируют сигнал покупки, когда краткосрочные EMA пересекают долгосрочные EMA, и сигнал продажи, когда краткосрочные EMA пересекают долгосрочные EMA.

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

Эта стратегия также позволяет выбирать только лизинг или лизинг, а также выбирать между внутридневными сделками или держать позиции. Для внутридневных сделок, они будут обязательными до закрытия акций США.

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

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

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

  2. Используйте пересечение коротких и длинных ЭМА в качестве торговых сигналов, чтобы избежать частых торгов.

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

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

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

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

Однако есть и потенциальные риски этой стратегии:

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

  2. Неправильный выбор долгосрочных и краткосрочных ЭМА может привести к искажению торговых сигналов.

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

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

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

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

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

  3. Динамическая коррекция остановки убытков.

  4. Вмешательство человека в аномальную ситуацию

Направление оптимизации

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

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

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

  3. Добавление обучения моделей машинного обучения, создание динамического стоп-ущерба.

  4. Доступ к более продвинутым показателям RISK для характеристики.

  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")