В процессе загрузки ресурсов... загрузка...

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

Автор:Чао Чжан, Дата: 2023-09-26 15:16:56
Тэги:

Обзор

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

Логика стратегии

Эта стратегия рассчитывает динамику цен путем измерения изменения цены закрытия по сравнению с ценой закрытия N периодов назад.

Первый индикатор импульса MOM0 рассчитывается как:

MOM0 = CLOSE - CLOSE[N]

где CLOSE - цена закрытия текущего периодаs и CLOSE[N] - цена закрытия N периодов назад. MOM0 > 0 указывает на то, что текущая цена закрытия выше, чем N периодов назад, а MOM0 < 0 указывает на то, что текущая цена закрытия ниже, чем N периодов назад.

Второй индикатор импульса MOM1 рассчитывается как:

MOM1 = MOM0 - MOM0[1]

Он вычисляет разницу между текущей MOM0 и предыдущим периодом MOM0. MOM1 > 0 указывает на увеличение MOM0, в то время как MOM1 < 0 указывает на уменьшение MOM0.

Третий индикатор импульса MOM2 рассчитывается как:

MOM2 = CLOSE - CLOSE[1]

Он вычисляет разницу между текущей ценой закрытия и ценой закрытия предыдущего периода.

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

Код также включает в себя условие времени 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")

Больше