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

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

img

Обзор

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

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

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

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

В частности, стратегия включает в себя:

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

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

  3. Определить золотой крест, когда быстрая EMA пересекает медленную EMA.

  4. Определить смертельный перекресток, когда быстрая EMA пересекает низкую EMA.

  5. Продолжайте на золотых крестах.

  6. Закройте позиции на крестах смерти.

  7. Опционы на короткое рассрочку и стоп-потери/прибыль.

  8. Выпуск уведомлений о покупке и продаже.

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

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

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

  1. Логика проста и понятна, легко понять.

  2. Использует только двойную EMA, легко внедряется.

  3. Может поймать краткосрочные тенденции для получения прибыли.

  4. Настраиваемые периоды EMA для разных рынков.

  5. Обязательность проведения коротких сделок для контроля рисков.

  6. Опцион на получение стоп-лосса/прибыли.

  7. Уведомления о покупке/продаже для мониторинга.

  8. Легко оптимизировать параметры EMA для большей прибыли.

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

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

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

  2. Неправильное установление стоп-лосса может увеличить убытки.

  3. Высокая частота торговли увеличивает затраты и риски скольжения.

  4. Фиксированные параметры EMA не могут адаптироваться к изменениям рынка.

  5. Склонны к погоне за импульсом, теряют спокойное суждение.

  6. Не может определить обратный тренд, может открыть обратные позиции.

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

  1. Оптимизируйте параметры EMA, чтобы уменьшить ложные сигналы.

  2. Установите правильный стоп-лосс на лимит по сделке.

  3. Оптимизируйте периоды EMA для снижения частоты.

  4. Динамическая корректировка EMA на разные этапы рынка.

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

  6. Определить основные направления тренда с помощью инструментов тренда.

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

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

  1. Динамическая оптимизация параметров EMA для различных рынков.

  2. Добавьте фильтры для улучшения точности.

  3. Включить индекс волатильности для сокращения позиции в условиях низкой волатильности.

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

  5. Установите ценовые уровни, например, прорыв 20SMA, прежде чем принимать сигналы.

  6. Улучшить стратегии стоп-лосса и прибыли.

  7. Добавьте анализ основного тренда, чтобы избежать торговли против тренда.

  8. Постоянно оптимизируйте стратегию с помощью алгоритмов машинного обучения.

Резюме

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


/*backtest
start: 2023-09-15 00:00:00
end: 2023-10-15 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy("EMA Strategy", shorttitle="EMA Strategy", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100)


// === Inputs ===
// short ma
maFastSource = input(defval=close, title="Fast MA Source")
maFastLength = input(defval=3, title="Fast MA Period", minval=1)

// long ma
maSlowSource = input(defval=close, title="Slow MA Source")
maSlowLength = input(defval=9, title="Slow MA Period", minval=1)

// invert trade direction
shorting = input(defval=false, title="Allow Shorting?")
// risk management
useStop = input(defval=false, title="Use Initial Stop Loss?")
slPoints = input(defval=25, title="Initial Stop Loss Points", minval=1)
useTS = input(defval=false, title="Use Trailing Stop?")
tslPoints = input(defval=120, title="Trail Points", minval=1)
useTSO = input(defval=false, title="Use Offset For Trailing Stop?")
tslOffset = input(defval=20, title="Trail Offset Points", minval=1)

// Messages for buy and sell
message_buy  = input("Buy message", title="Buy Alert Message")
message_sell   = input("Sell message", title="Sell Alert Message")

// Calculate start/end date and time condition
startDate  = input(timestamp("2021-01-01T00:00:00"), type = input.time)
finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time)
 
time_cond  = true

// === Vars and Series ===
fastMA = ema(maFastSource, maFastLength)
slowMA = ema(maSlowSource, maSlowLength)

plot(fastMA, color=color.blue)
plot(slowMA, color=color.purple)

goLong() =>
    crossover(fastMA, slowMA)
killLong() =>
    crossunder(fastMA, slowMA)
strategy.entry("Buy", strategy.long, when=goLong() and time_cond, alert_message = message_buy)
strategy.close("Buy", when=killLong() and time_cond, alert_message = message_sell)

// Shorting if using
if shorting
    strategy.entry("Sell", strategy.short, when=killLong() and time_cond, alert_message = message_sell)
    strategy.close("Sell", when=goLong() and time_cond, alert_message = message_buy)

if useStop
    strategy.exit("XLS", from_entry="Buy", stop=strategy.position_avg_price / 1.08)
    strategy.exit("XSS", from_entry="Sell", stop=strategy.position_avg_price * 1.08)



Больше