Торговая стратегия, основанная на пересечении скользящих средних


Дата создания: 2024-01-24 14:59:44 Последнее изменение: 2024-01-24 14:59:44
Копировать: 0 Количество просмотров: 528
1
Подписаться
1617
Подписчики

Торговая стратегия, основанная на пересечении скользящих средних

Обзор

Стрельба по пересеченным средним является наиболее распространенной количественной стратегией торговли. Стрельба производится путем вычисления пересеченных средних за разные периоды и создания торговых сигналов в зависимости от их пересечения. В частности, вычисляется показательная пересеченная средняя за 4 цикла, 8 циклов и 20 циклов (ЕМА), которая увеличивается при прохождении долгосрочной ЭМА на краткосрочной ЭМА, а уменьшается при прохождении долгосрочной ЭМА.

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

Основная логика этой стратегии заключается в следующем:

  1. Вычислить линию EMA 4 цикла, 8 цикла и 20 цикла.
  2. Определение связи между 4-циклической и 8-циклической линиями EMA:
    1. Когда 4-циклическая линия EMA проходит через 8-циклическую линию EMA, это указывает на усиление ценового движения и относится к многоголовному сигналу.
    2. Когда 4-циклическая ЭМА проходит 8-циклическую ЭМА, это указывает на ослабление ценового движения и относится к пустому сигналу.
  3. При этом следует определить направление 20-циклической линии EMA:
    1. Если 20-циклическая линия EMA повышается, Enter Long
    2. Если 20-циклическая линия EMA падает, Enter Short
  4. Когда 4-циклическая линия EMA и 8-циклическая линия EMA взаимодействуют, Prepare Exit.
  5. Когда 20-циклическая линия EMA поворачивает в обратном направлении, Exit Now.

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

Стратегические преимущества

Основные преимущества этой стратегии:

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

Стратегический риск

Однако эта стратегия также несет в себе некоторые риски:

  1. Двойная равновесная стратегия может привести к ложному сигналу.
  2. Фиксированный цикл не может адаптироваться к изменениям рынка.
  3. В случае с крупным рынком, это может привести к убыткам.

Основные решения:

  1. Сокращение срока хранения и своевременное прекращение убытков.
  2. Динамическая оптимизация параметров, коррекция среднелинейного цикла.
  3. Создание комбинированной стратегии в сочетании с другими показателями или моделями.

Оптимизация стратегии

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

  1. Оптимизация цикла: определение оптимального сочетания циклов MA для разных сортов

    1. Оптимизация стоп-лосса: разумная установка стоп-лосса, контроль одиночных потерь
    2. Оптимизация параметров: динамическая оптимизация параметров с использованием генетических алгоритмов и цепей Маркова
  2. Интеграция моделей: интеграция с глубокими моделями обучения, такими как LSTM, RNN, для извлечения большего количества Альфы

  3. Оптимизация портфеля: создание портфеля стратегий с другими показателями

Подвести итог

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

Исходный код стратегии
/*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=3
//future strategy
//strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2.05)
//stock strategy
strategy(title = "stub",   overlay = true)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true, commission_type=strategy.commission.percent,commission_value=.0,default_qty_value=10000)


testStartYear = input(1900, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testEndYear = input(2018, "Backtest Start Year")
testEndMonth = input(12, "Backtest Start Month")
testEndDay = input(1, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testPeriod() => true

ema1 = ema(close,4)
ema2 = ema(close,8)
ema3 = ema(close,20)

go_long = ema1[0] > ema2[0] and ema3[0] > ema3[1]
exit_long = ema1[0] < ema2[0] or ema3[0] < ema3[1]

go_short = ema1[0] < ema2[0] and ema3[0] < ema3[1]
exit_short = ema1[0] > ema2[0] or ema3[0] > ema3[1]

 
if testPeriod()
    strategy.entry("simpleBuy", strategy.long, when=go_long)
    strategy.exit("simpleBuy", "simpleSell",when=exit_long)
    
    strategy.entry("simpleSell", strategy.short,when=go_short)
    strategy.exit("simpleSell", "simpleSell",when=exit_short)