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

Автор:Чао Чжан, Дата: 2024-01-04 17:59:04
Тэги:

img

Обзор

Цель этой стратегии заключается в выявлении потенциальных точек переворота тренда путем наблюдения за перекрестником между 20-периодным экспоненциальным скользящим средним (EMA) и 20-периодным простым скользящим средним (SMA).

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

  1. Когда 20-периодная EMA пересекает 20-периодную SMA, а цена закрытия выше 20-периодной EMA, делайте длинный выбор.
  2. Когда 20-периодная EMA пересекает 20-периодную SMA, а цена закрытия находится ниже 20-периодной EMA, перейти на короткий курс.
  3. Для длинных позиций закрыть сделку, когда 20-периодная EMA пересекает 20-периодную SMA.
  4. Для коротких позиций закрыть сделку, когда 20-периодная EMA пересекает 20-периодную SMA.

Стратегия использует функции кроссовера и кроссандера из библиотеки ta для обнаружения скользящих средних кроссоверов.

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

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

  1. Движущиеся средние эффективно отфильтровывают рыночный шум и выявляют среднесрочные и долгосрочные тенденции.
  2. Кроссоверы легко управляются и четко определяют сдвиги в рыночной динамике.
  3. Параметр 20 периодов хорошо работает для большинства акций и временных рамок без необходимости частой корректировки.
  4. Использование цены закрытия по отношению к EMA позволяет избежать некоторых ложных сигналов.
  5. Правила просты и понятны, и подходят для менее сложных инвесторов.

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

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

  1. Движущиеся средние имеют задержку и могут пропустить краткосрочные резкие изменения тренда.
  2. Кроссоверы могут генерировать шумные сигналы, влияющие на стабильность.
  3. Установленный параметр 20-периодного периода может не работать хорошо для некоторых акций, требуя настройки.
  4. Нет стоп-лосса, что позволяет вести крупные проигрышные сделки.

Решения:

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

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

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

  1. Добавить другие показатели для создания комплексной стратегии, например, объем, RSI.
  2. Тестировать и оптимизировать периоды и символы, устанавливать адаптивные параметры.
  3. Построить динамические механизмы выхода, такие как отслеживание стоп-лосса, временные стоп-лосы.
  4. Добавить алгоритмические возможности торговли для автоматизации.
  5. Включить машинное обучение для адаптивной оптимизации.

Резюме

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


/*backtest
start: 2022-12-28 00:00:00
end: 2024-01-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA-SMA Crossover Strategy", overlay=true)

// Define the length of the moving averages
emaLength = 20
smaLength = 20

// Calculate moving averages
emaValue = ta.ema(close, emaLength)
smaValue = ta.sma(close, smaLength)

// Buy condition
buyCondition = ta.crossover(emaValue, smaValue) and close > emaValue

// Short sell condition
sellCondition = ta.crossunder(emaValue, smaValue) and close < emaValue

// Exit conditions for both Buy and Short sell
exitBuyCondition = ta.crossunder(emaValue, smaValue)
exitSellCondition = ta.crossover(emaValue, smaValue)

// Strategy logic
if (buyCondition)
    strategy.entry("Buy", strategy.long)

if (sellCondition)
    strategy.entry("Sell", strategy.short)

if (exitBuyCondition)
    strategy.close("Buy")

if (exitSellCondition)
    strategy.close("Sell")

// Plot the moving averages
plot(emaValue, color=color.blue, title="20 EMA")
plot(smaValue, color=color.red, title="20 SMA")


Больше