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


Дата создания: 2023-12-22 13:28:01 Последнее изменение: 2023-12-22 13:28:01
Копировать: 0 Количество просмотров: 768
1
Подписаться
1623
Подписчики

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

Обзор

Стратегия Moving Average Crossover - это количественная торговая стратегия, основанная на простых движущихся средних. Эта стратегия производит сигналы покупки и продажи, когда они пересекаются, путем вычисления простых движущихся средних разных периодов.

В частности, эта стратегия рассчитывает простые движущиеся средние для 9-й и 45-й линий. Когда цена пересекает 9-ю и 45-ю линию вверх, она создает сигнал покупки; когда цена пересекает 9-ю и 45-ю линию вниз, она создает сигнал продажи.

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

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

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

С точки зрения логики кода, стратегия сначала вычисляет простые движущиеся средние для 9-й и 45-й линий, а затем определяет золотые и мертвые форки равной линии с помощью функций ta.crossover и ta.crossunder. При создании сигналов покупки и продажи, используйте функцию plotshape, чтобы нанести на K-линейный график сигналы треугольника и перевернутого треугольника.

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

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

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

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

  • Двухлинейная стратегия может привести к появлению сигнала “мертвый трос”, который может привести к слишком большому количеству недействительных сделок.
  • Стоп-цены могут быть слишком консервативными и не позволяют постоянно отслеживать тенденции.
  • Неправильный выбор параметров может привести к слишком высокой или слишком низкой частоте торгов.
  • “Я не могу приспособиться к тому, что происходит вокруг меня.

Ответ:

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

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

В этой стратегии есть место для дальнейшей оптимизации:

  1. Использование адаптивных или индексированных скользящих средних позволяет лучше улавливать изменения в тренде.

  2. Увеличение фильтрующих сигналов, таких как показатели волатильности, чтобы избежать ошибочного сигнала в условиях потрясения.

  3. Используйте метод оптимизации параметров для поиска оптимальной комбинации параметров.

  4. В логике стоп-стоп добавляется механизм отслеживания трендов, что позволяет стоп-линии гибко отслеживать цены.

  5. Повышение оценки поддержки и сопротивления на больших уровнях, чтобы избежать ошибочных сигналов в ключевых ценовых зонах.

  6. Вместе с моделью машинного обучения мы можем дополнительно отфильтровывать качество сигнала.

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

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

Исходный код стратегии
/*backtest
start: 2022-12-15 00:00:00
end: 2023-12-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

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

// Input parameters
fast_length = input(9, title="Fast SMA Length")
slow_length = input(45, title="Slow SMA Length")

// Calculate moving averages
fast_sma = ta.sma(close, fast_length)
slow_sma = ta.sma(close, slow_length)

// Buy condition
buy_condition = ta.crossover(close, fast_sma) and ta.crossover(close, slow_sma)

// Sell condition
sell_condition = ta.crossunder(close, fast_sma) and ta.crossunder(close, slow_sma)

// Calculate stop loss levels
prev_low = request.security(syminfo.tickerid, "1D", low[1], lookahead=barmerge.lookahead_on)
prev_high = request.security(syminfo.tickerid, "1D", high[1], lookahead=barmerge.lookahead_on)

// Plot signals on the chart
plotshape(buy_condition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(sell_condition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)

// Strategy exit conditions
long_stop_loss = sell_condition ? prev_low : na
short_stop_loss = buy_condition ? prev_high : na

strategy.exit("Long Exit", from_entry="Long", when=sell_condition, stop=long_stop_loss)
strategy.exit("Short Exit", from_entry="Short", when=buy_condition, stop=short_stop_loss)

strategy.entry("Long", strategy.long, when=buy_condition)
strategy.entry("Short", strategy.short, when=sell_condition)