Стратегия «Золотой крест» и «Смертельный крест» с двойной скользящей средней


Дата создания: 2023-09-17 22:35:07 Последнее изменение: 2023-09-17 22:35:07
Копировать: 1 Количество просмотров: 626
1
Подписаться
1617
Подписчики

Эта стратегия формирует сигналы покупки и продажи, рассчитывая движущиеся средние за два различных периода и формируя их в зависимости от их золотых и мертвых точек.

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

Эта стратегия сначала позволяет пользователям выбирать тип и длину движущейся средней. Типы включают SMA, EMA, VWMA и т. д., а длина определяет период средней.

Затем, по выбору пользователя, вычисляются две скользящие средние. Если быстрая линия сверху проходит медленную линию, образуя золотую вилку, то создается сигнал покупки. Если быстрая линия сверху снизу проходит медленную линию, образуя мертвую вилку, то создается сигнал продажи.

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

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

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

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

  • Когда рынок находится в состоянии колебаний, может возникнуть несколько ошибочных сигналов.
  • Неправильный выбор параметров может привести к плохой работе стратегии.
  • Сигналы задерживаются, поэтому не удается вовремя обнаружить поворотный момент.
  • Риск возникновения внезапных событий

Риск можно контролировать путем соответствующего оптимизации параметров, комбинации других показателей, генерирования сигналов, установки стоп-стоп и т. д.

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

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

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

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

Исходный код стратегии
/*backtest
start: 2023-09-09 00:00:00
end: 2023-09-13 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's MAs Tests", shorttitle = "MAs tests", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)


len = input(30, defval = 30, minval = 2, maxval = 1000, title = "MA length")
type = input(1, defval = 1, minval = 1, maxval = 7, title = "Type")
src = input(close, defval = close, title = "Source")

//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 = nz(kama[1]) + nsmooth * (src - nz(kama[1]))

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0

plot(ma, color = blue, linewidth = 3, transp = 0)

trend = low > ma ? 1 : high < ma ? -1 : trend[1]

longCondition = trend == 1 and trend[1] == -1
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = trend == -1 and trend[1] == 1
if (shortCondition)
    strategy.entry("Short", strategy.short)