Стратегия импульса


Дата создания: 2023-09-26 15:16:56 Последнее изменение: 2023-09-26 15:16:56
Копировать: 1 Количество просмотров: 777
1
Подписаться
1617
Подписчики

Обзор

Динамическая стратегия - это стратегия, основанная на тенденциях изменения цен. Эта стратегия использует двусторонние динамические индикаторы для создания торговых сигналов.

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

Эта стратегия определяет динамику цены, рассчитывая изменения цены закрытия в течение определенного периода. В частности, это изменение цены закрытия относительно цены закрытия до N циклов.

Сначала рассчитывается первый динамический показатель MOM0, формула которого:

MOM0 = CLOSE - CLOSE[N]

Из них, CLOSE означает текущую циклическую закрытую цену, CLOSE[N] означает, что цена закрытия до N цикла. Таким образом, MOM0>0 означает, что цена закрытия выросла до N цикла относительно текущего цикла, а MOM0 означает, что цена закрытия упала до N цикла относительно текущего цикла.

Затем рассчитывается второй показатель мощности MOM1, формула которого:

MOM1 = MOM0 - MOM0[1]

Иными словами, вычислить значение MOM0 текущего цикла минус значение предыдущего цикла. MOM1>0 означает, что MOM0 вырос, MOM1 означает, что MOM0 упал.

В то же время рассчитывается третий динамический показатель MOM2, формула которого:

MOM2 = CLOSE - CLOSE[1]

Иными словами, вычислить текущую циклическую цену закрытия за вычетом цены закрытия предыдущего цикла. MOM2>0 означает, что цена закрытия выросла, MOM2 означает, что цена закрытия упала.

Когда MOM0>0 и MOM1>0, показывает, что динамика продолжает расти, создавая сигнал покупки; когда MOM0 и MOM2, показывает, что динамика продолжает падать, создавая сигнал продажи.

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

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

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

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

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

Можно уменьшить риск путем сокращения динамического цикла, внедрения трендового суждения или конфигурации стоп-лосса. Также можно рассмотреть возможность включения индикатора объема торговли для фильтрации.

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

  • Попробуйте различные методы подсчета динамики, такие как ROC, RSI и т. Д.
  • Повышение оценки трендов, чтобы избежать обратного колебания рынка
  • Конфигурация стратегии стоп-лосс, контроль одиночных потерь
  • Обеспечение поддержки объемов сделок в сочетании с показателями объемов сделок
  • Включение алгоритмов машинного обучения для динамической оптимизации параметров
  • Стратегия многовременных рамок, разграничение краткосрочных и долгосрочных тенденций
  • Рассматривать арбитраж на рынках, используя различные рыночные ценовые отношения

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

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

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

//@version=4
strategy("Momentum Strategy", overlay = false, precision = 2, initial_capital = 10000, default_qty_value = 10000, default_qty_type = strategy.cash, commission_type = strategy.commission.percent, commission_value = 0, calc_on_every_tick = true)

// Calculate start/end date and time condition
startDate  = input(timestamp("2021-01-02T00:00:00"), title = "Start Date", type = input.time)
finishDate = input(timestamp("2021-12-31T00:00:00"), title = "End Date",type = input.time)
 
time_cond  = true

i_len           =       input(defval = 12,      title = "Length",       minval = 1)
i_src           =       input(defval = close,   title = "Source")
i_percent       =       input(defval = true,    title = "Percent?")
i_mom           =       input(defval = "MOM2",  title = "MOM Choice",   options = ["MOM1", "MOM2"])

momentum(seria, length, percent) =>
	_mom        =       percent ? ( (seria / seria[length]) - 1) * 100 : seria - seria[length]
	_mom

mom0        =       momentum(i_src, i_len, i_percent)
mom1        =       momentum(mom0, 1, i_percent)
mom2        =       momentum(i_src, 1, i_percent)

momX        =       mom1

if i_mom == "MOM2"
    momX    :=     mom2

if (mom0 > 0 and momX > 0 and time_cond)
    strategy.entry("MomLE", strategy.long, stop = high + syminfo.mintick, comment = "MomLE")
else
	strategy.cancel("MomLE")
if (mom0 < 0 and momX < 0 and time_cond)
	strategy.entry("MomSE", strategy.short, stop = low - syminfo.mintick, comment = "MomSE")
else
	strategy.cancel("MomSE")

plot(mom0, color = #00bcd4, title = "MOM")
plot(mom1, color = #00FF00, title = "MOM1", display = display.none)
plot(mom2, color = #00FF00, title = "MOM2")