
Двойная движущаяся средняя торговая стратегия - это распространенная количественная торговая стратегия, в которой используются движущиеся средние двух разных временных периодов, чтобы создать торговый сигнал в зависимости от их перекрестного положения. В частности, когда краткосрочная движущаяся средняя пересекает долгосрочную движущуюся среднюю, это рассматривается как сигнал покупки; когда долгосрочная движущаяся средняя пересекает краткосрочную движущуюся среднюю, это рассматривается как сигнал продажи.
Ключевые принципы этой стратегии заключаются в следующем: кратковременные скользящие средние отражают краткосрочные тенденции цен на активы, а долгосрочные скользящие средние отражают долгосрочные тенденции цен на активы. Когда кратковременная линия пересекает длинную линию, то краткосрочные тенденции переходят вверх, и тогда можно купить; когда кратковременная линия пересекает длинную линию, то краткосрочные тенденции переходят вниз, и тогда можно продать.
В частности, в стратегии определены два скользящих средних: 5-дневная краткосрочная скользящая средняя, используемая для улавливания краткосрочных ценовых тенденций; и 15-дневная долгосрочная скользящая средняя, используемая для определения долгосрочных ценовых тенденций. Когда 5-дневная линия пересекает 15-дневную линию снизу, это означает, что краткосрочные цены начали расти, что является сигналом покупки; когда 5-дневная линия пересекает 15-дневную линию снизу, что означает, что краткосрочные цены начали снижаться, что является сигналом продажи.
По сравнению с другими стратегиями, стратегия двойных движущихся средних имеет следующие преимущества:
Существуют также некоторые риски, связанные со стратегией двойных скользящих средних, в основном:
Решение проблемы:
Эта стратегия может быть оптимизирована в следующих направлениях:
В сочетании с другими индикаторами фильтруют сигналы, такие как MACD, KDJ и т. Д., Чтобы избежать создания ложных сигналов
Введение адаптивных скользящих средних, динамическая корректировка параметров скользящих средних в зависимости от степени волатильности рынка, повышение устойчивости
Оптимизация параметров скользящих средних, поиск оптимального сочетания параметров для повышения эффективности стратегии
Присоединение к механизму погашения убытков, предотвращение расширения убытков и повышение способности к контролю рисков
Комбинация нескольких временных рамок, одновременно использующая солнечные и орбитальные сигналы для повышения стабильности
Марковское состояние переключения, используя различные параметры для различных состояний рынка, повышает адаптивность
Стратегия двойного движущегося среднего трейдинга в целом является стратегией количественного трейдинга с более стабильной эффективностью. Принципы торговли просты, просты в понимании и реализации, параметры регулируются гибко и могут эффективно отслеживать тенденции рынка. В то же время существуют определенные ограничения, такие как создание ложных сигналов, трудность в обработке резких колебаний рынка и т. Д. Это требует контроля путем введения других вспомогательных инструментов и методов оптимизации параметров.
//@version=3
strategy("CS: 2 Moving Averages Script - Strategy (Testing)", overlay=true)
// === GENERAL INPUTS ===
// short ma
ma1Source = input(defval = close, title = "MA 1 Source")
ma1Length = input(defval = 5, title = "MA 1 Period", minval = 1)
// long ma
ma2Source = input(defval = close, title = "MA 2 Source")
ma2Length = input(defval = 15, title = "MA 2 Period", minval = 1)
// === SERIES SETUP ===
/// a couple of ma's..
ma1 = ema(ma1Source, ma1Length)
ma2 = ema(ma2Source, ma2Length)
// === PLOTTING ===
fast = plot(ma1, title = "MA 1", color = red, linewidth = 2, style = line, transp = 30)
slow = plot(ma2, title = "MA 2", color = green, linewidth = 2, style = line, transp = 30)
// === LOGIC ===
enterLong = crossover(ma1, ma2)
exitLong = crossover(ma2, ma1)
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2018, title = "From Year", minval = 2012)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2012)
// === FUNCTION EXAMPLE ===
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => true // create function "within window of time"
// Entry //
strategy.entry(id="Long Entry", long=true, when=enterLong and window())
strategy.entry(id="Short Entry", long=false, when=exitLong and window())