Стратегия следования за трендом с использованием индикатора импульса цены


Дата создания: 2024-01-17 13:58:19 Последнее изменение: 2024-01-17 13:58:19
Копировать: 1 Количество просмотров: 540
1
Подписаться
1617
Подписчики

Стратегия следования за трендом с использованием индикатора импульса цены

Обзор

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

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

Центральным показателем стратегии является динамика цены. Формула для расчета динамики:

momentum = close - close[n]

где n представляет собой длину динамического цикла. Когда momentum > 0, это означает, что цена в течение текущего цикла постоянно растет; когда momentum < 0, это означает, что цена в течение текущего цикла постоянно падает.

В этой стратегии сначала устанавливается параметр confirmBars, который представляет собой определение тенденции, требующую нескольких K-линий, чтобы совершить сделку. В пределах отсчета, если momentum > 0 сохраняет корень K-линии confirmBars, то делается дополнительный вход; если momentum < 0 сохраняет корень K-линии confirmBars, то делается пустой вход.

Ключом к определению тенденции в этой стратегии является подсчет числа последовательных K-линий, имеющих мгновенье больше или меньше 0, с помощью переменных bcount и scount. Они возвращаются к 0 при удовлетворении соответствующих условий + 1, а при неудовлетворении - 0 . Когда счет достигает confirmBars, выполняются соответствующие сделки с лишним или нулевым значением.

Стратегические преимущества

Это более простая стратегия отслеживания трендов, которая имеет следующие преимущества:

  1. Простая логика и понятная реализация
  2. Движущийся индикатор чувствителен к ценовым изменениям и может быстро улавливать тенденции
  3. Конфигурируемые параметры, регулирующие чувствительность
  4. Используется в различных рыночных условиях

Стратегический риск

Однако эта стратегия также несет в себе некоторые риски:

  1. Подверженность многократным шоковым сделкам и переделкам
  2. Требуется разумная конфигурация параметров, особенно фильтрации потрясений в ConfirmBars
  3. Неспособность эффективно реагировать на рыночные сбои
  4. Отзыв может отличаться от реального диска, требует проверки данных и оптимизации дополнительных параметров

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

Эта стратегия может быть оптимизирована в следующих аспектах:

  1. Увеличение логики остановки убытков, контроль риска в одной сделке
  2. Добавление фильтров прорыва, чтобы избежать ложных сигналов, вызванных колебаниями цен
  3. Параметры, такие как ConfirmBars, адаптируются к различным сортам и рыночным условиям
  4. Добавление многофакторных суждений, в сочетании с другими показателями, подтверждающими поступление
  5. Применение методов машинного обучения для адаптации параметров и правил фильтрации

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

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

Исходный код стратегии
/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Momentum Strategy [TS Trader]", overlay=true)

confirmBars = input(1)
momentumLength = input(14, title="Momentum Length")

price = close
momentum = close - close[momentumLength]

// === INPUT BACKTEST RANGE ===
fromYear = input.int(2019, title="Backtest Start Year")
fromMonth = input.int(1, title="Backtest Start Month", minval=1, maxval=12)
fromDay = input.int(1, title="Backtest Start Day", minval=1, maxval=31)
toYear = input.int(2023, title="Backtest End Year")
toMonth = input.int(12, title="Backtest End Month", minval=1, maxval=12)
toDay = input.int(31, title="Backtest End Day", minval=1, maxval=31)

startTimestamp = timestamp(fromYear, fromMonth, fromDay, 00, 00)
endTimestamp = timestamp(toYear, toMonth, toDay, 23, 59)

inBacktestRange = true

// === STRATEGY LOGIC ===
bcond = momentum > 0
bcount = 0
bcount := bcond ? nz(bcount[1]) + 1 : 0
if (bcount == confirmBars and inBacktestRange)
    strategy.entry("Buy", strategy.long, comment="Long")

scond = momentum < 0
scount = 0
scount := scond ? nz(scount[1]) + 1 : 0
if (scount == confirmBars and inBacktestRange)
    strategy.entry("Sell", strategy.short, comment="Short")

// Plotting Momentum
plot(momentum, title="Momentum", color=color.purple)