Эта стратегия, по сути, является перекрестной стратегией скользящей средней. Расчитывая скользящую среднюю цены и устанавливая определенные краткосрочные и долгосрочные скользящие средние, идите длинным, когда краткосрочная скользящая средняя пересекает длинную скользящую среднюю снизу; идите коротким, когда краткосрочная скользящая средняя пересекает длинную скользящую среднюю сверху.
Основная идея пересекающейся стратегии движущихся средних цен заключается в следующем: движущийся средний цены может эффективно отражать тенденцию изменения цен. Стратегия оценивает изменение тенденции рынка путем установления двух движущихся средних различных циклов и определенной логики торговли для генерации торговых сигналов.
Стратегия рассчитывает долгосрочную скользящую среднюю и краткосрочную. Длинная линия в основном оценивает основную тенденцию, а короткая линия используется для улавливания среднесрочных колебаний во время основной тенденции. Торговые сигналы стратегии в основном поступают от перекрестка короткой линии над длинной линией: длинный сигнал, когда короткая линия пересекает длинную линию, и короткий сигнал, когда короткая линия пересекает ниже. Кроме того, стратегия фильтрует сигналы, чтобы избежать ложных сигналов.
В частности, стратегия использует 7 различных типов скользящих средних, включая SMA, EMA, VWMA и т. Д. Пользователи могут выбрать тип скользящей средней. Длина скользящей средней также может быть гибко установлена. Кроме того, стратегия также предусматривает ограничения на определенные периоды времени торговли и механизмы управления позициями.
Основными преимуществами кросс-стратегии скользящей средней цены являются следующие:
Логика стратегии ясна и проста, легко понять и реализовать, подходит для обучения новичков.
Принцип стратегии является надежным, основанным на полностью проверенных правилах торговли скользящей средней, и был проверен на практике на рынках.
Параметры стратегии гибкие и регулируемые, пользователи могут выбирать соответствующие параметры в соответствии со своими собственными суждениями и предпочтениями на рынке.
Стратегия включает в себя определенные механизмы контроля рисков для сокращения времени хранения проигрышных ордеров и предотвращения ненужных обратных позиций.
Стратегия содержит несколько типов скользящих средних. Пользователи могут выбрать наиболее подходящий тип скользящей средней для своих торговых сортов.
Стратегия поддерживает логику торговли в определенные периоды торговли, чтобы избежать ненормальных колебаний на основных праздничных рынках.
Хотя пересекающаяся стратегия движущегося среднего имеет много преимуществ, в фактической торговле все еще существуют некоторые риски, которые в основном отражаются на следующих двух аспектах:
Из-за задержки большинства скользящих средних, перекрестные сигналы могут появиться на поздней стадии после завершения переворота цены, что легко попасть в ловушку.
В случае неправильной настройки параметров перекрестные сигналы могут быть слишком частыми, что приводит к слишком высокой активности торговли и более высоким затратам на торговлю.
В ответ на вышеуказанные риски методы контроля и противодействия осуществляются следующими способами:
Контролировать риск однократной потери путем установки соответствующего диапазона стоп-потери.
Уменьшить частоту торговли и предотвратить чрезмерную торговлю, добавив условия фильтрации.
Оптимизируйте параметры скользящей средней для выбора наиболее подходящей комбинации параметров для ваших собственных торговых сортов и циклов.
Эта стратегия перекрестного использования скользящей средней цены может быть оптимизирована в следующих аспектах:
Усилить механизм защиты при экстремальных рыночных условиях, например, временно приостановить торговлю во время сильных колебаний цен, чтобы избежать ненормальных рыночных условий.
Увеличить количество условий фильтрации и комбинированных торговых сигналов для улучшения качества и стабильности сигнала.
В соответствии с условиями рынка и характеристиками сортов, автоматически корректируйте ключевые параметры, такие как длина скользящей средней, переключатель торговли и т. Д., Вместо использования фиксированных значений.
Используйте этот сигнал пересечения скользящей средней в продвинутых стратегиях, таких как арбитраж совокупной разновидности. Объедините его с другой информацией для углубленной оптимизации стратегии.
Эти предложения могут расширить применяемую среду и эффективность этой стратегии и достичь лучшего баланса риска и прибыли.
Эта статья представляет собой подробный анализ кода и интерпретацию простой стратегии пересечения скользящей средней - Noro
/*backtest start: 2022-11-20 00:00:00 end: 2023-11-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2019 //@version=4 strategy(title = "Noro's CrossMA", shorttitle = "CrossMA", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0, commission_value = 0.1) needlong = input(true, "long") needshort = input(true, "short") lotsize = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %") type = input(defval = "SMA", options = ["SMA", "EMA", "VWMA", "DEMA", "TEMA", "KAMA", "PCMA"], title = "MA type") src = input(close, defval = close, title = "MA Source") len = input(30, defval = 30, minval = 1, title = "MA length") off = input(00, defval = 00, minval = 0, title = "MA offset") anti = input(true, defval = true, title = "Anti-saw filter") showma = input(true, defval = true, title = "Show MA") showbg = input(false, defval = false, title = "Show background") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //DEMA dema = 2 * ema(src, len) - ema(ema(close, len), len) //TEMA xPrice = close xEMA1 = ema(src, len) xEMA2 = ema(xEMA1, len) xEMA3 = ema(xEMA2, len) tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3 //KAMA xvnoise = abs(src - src[1]) nfastend = 0.20 nslowend = 0.05 nsignal = abs(src - src[len]) nnoise = sum(xvnoise, len) nefratio = iff(nnoise != 0, nsignal / nnoise, 0) nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) kama = 0.0 kama := nz(kama[1]) + nsmooth * (src - nz(kama[1])) //PriceChannel lasthigh = highest(src, len) lastlow = lowest(src, len) center = (lasthigh + lastlow) / 2 sma_1 = sma(src, len) ema_1 = ema(src, len) vwma_1 = vwma(src, len) ma2 = type == "SMA" ? sma_1 : type == "EMA" ? ema_1 : type == "VWMA" ? vwma_1 : type == "DEMA" ? dema : type == "TEMA" ? tema : type == "KAMA" ? kama : type == "PCMA" ? center : 0 ma = ma2[off] macol = showma ? color.blue : na plot(ma, color = macol, linewidth = 3, transp = 0) //Background trend = 0 trend := anti == false and close > ma ? 1 : anti == false and close < ma ? -1 : low > ma ? 1 : high < ma ? -1 : trend[1] bgcol = showbg ? trend == 1 ? color.lime : trend == -1 ? color.red : na : na bgcolor(bgcol, transp = 70) //Trading size = strategy.position_size truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59) lot = 0.0 lot := size != size[1] ? strategy.equity / close * lotsize / 100 : lot[1] if trend == 1 and trend[1] == -1 strategy.entry("Long", strategy.long, lot, when = needlong and truetime) if trend == -1 and trend[1] == 1 strategy.entry("Short", strategy.short, lot, when = needshort and truetime) if size > 0 and needshort == false and trend == -1 strategy.close_all() if size < 0 and needlong == false and trend == 1 strategy.close_all() if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all() strategy.cancel("Long") strategy.cancel("Short")