Стратегия двойной скользящей средней торговли - это общая количественная стратегия торговли. Эта стратегия использует две скользящие средние с разными периодами времени для генерации торговых сигналов на основе их перекрестки. В частности, когда краткосрочная скользящая средняя пересекает длинную скользящую среднюю, это считается сигналом покупки; когда краткосрочная скользящая средняя пересекает длинную скользящую среднюю, это считается сигналом продажи.
Основной принцип этой стратегии заключается в следующем: краткосрочная скользящая средняя отражает краткосрочную тенденцию цены актива, а долгосрочная скользящая средняя отражает долгосрочную тенденцию цены актива. Когда краткосрочная линия пересекается выше долгосрочной линии, это указывает на то, что краткосрочная тенденция стала расти, в это время вы можете покупать. Когда краткосрочная линия пересекается ниже долгосрочной линии, это указывает на то, что краткосрочная тенденция стала падать, в это время вы можете продавать. Следуйте за тенденцией, захватывайте поворотную точку ценовой тенденции.
В частности, стратегия определяет две скользящие средние: 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())