Стратегия свинг-трейдинга на основе импульса


Дата создания: 2024-02-05 10:44:19 Последнее изменение: 2024-02-05 10:44:19
Копировать: 1 Количество просмотров: 678
1
Подписаться
1617
Подписчики

Стратегия свинг-трейдинга на основе импульса

Обзор

Эта стратегия является динамической, основанной на технологиях, и использует ATR-стоп. Стратегия была разработана Корри Хоангом из Stabley.

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

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

В коде сначала устанавливается диапазон времени отслеживания.

Затем мы переходим к показателям, которые включают в себя следующие показатели:

  • atr(): рассчитывает показатель ATR, используемый для установки стоп-лосса;
  • max_/min_Например, если вы хотите получить максимальную или минимальную цену на одну K-линию, то вы можете сделать это, используя следующие параметры:
  • is_uptrend: определяет, находится ли страна в восходящем тренде;
  • Вход: линия остановки убытков;

Основная логика суждения о тенденциях заключается в следующем:

Если закрытие выше, чем предыдущая линия остановки (vstop) падения, то это будет восходящий тренд; если закрытие ниже предыдущей линии остановки (vstop) подъема, то это будет нисходящий тренд.

При изменении тренда, скорректируйте положение стоп-линии.

В частности, при восходящем тренде стоп-линия определяется как максимальная цена предыдущей K-линии минус ATR; при нисходящем тренде стоп-линия определяется как минимальная цена предыдущей K-линии плюс ATR.

Это позволит остановить убытки от отслеживания трендов.

В разделе правил торговли, при открытии позиции при прорыве линии стоп-лосса, делается дополнительный кузов.

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

Эта стратегия имеет следующие преимущества:

  1. Используйте динамические технологии для определения направления тенденции, чтобы вовремя уловить переломные моменты и избежать ложных прорывов.
  2. ATR Stop Loss отслеживает наивысшую/наименьшую цену, что позволяет хорошо контролировать риски.
  3. Стратегическая логика проста, понятна и легко понятна.
  4. Это означает, что можно совершать шокирующие сделки между трендами.

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

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

  1. Неправильно выбранные значения ATR могут привести к тому, что остановка будет слишком расслабленной или слишком компактной.
  2. В результате, в течение нескольких недель, в течение нескольких месяцев, в течение нескольких недель, в течение нескольких недель, в течение нескольких недель, в течение нескольких недель.
  3. Это может быть связано с большим количеством транзакций и высокими комиссионными.

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

  1. Тестирование различных параметров ATR для поиска оптимального сочетания параметров
  2. Оптимизация стоп-линий в сочетании с показателями волатильности на основе ATR.
  3. Вместе с фильтрацией трендов, избежать колебаний рынка не стоит.

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

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

  1. Тестирование различных параметров ATR, чтобы найти оптимальную комбинацию параметров. Можно проверить несколько параметров, чтобы оценить соотношение риска и прибыли.

  2. Оптимизация стоп-линий в сочетании с показателями волатильности на основе ATR. Можно вводить показатели волатильности, а при увеличении волатильности следует расширять стоп-линию.

  3. В сочетании с фильтрацией трендов, избежать колебаний рынка не стоит открывать позиции. Можно увеличить индикаторы для определения тренда, открывать позиции только тогда, когда тенденция ясна.

  4. Повышение механизма управления позициями. Позиции могут быть скорректированы в зависимости от использования средств, количества последовательных остановок убытков и т. Д.

  5. Повышение контроля риска ночного промежутка. Можно активно останавливать убытки перед закрытием, чтобы избежать скачка цены на ночь.

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

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

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

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

//@version=2
strategy("BTC Swinger", overlay=true, commission_value = 0.25, default_qty_type=strategy.percent_of_equity, default_qty_value = 100)

/////////////////////////////////////////////////////////////
//START - SET DATE RANGE

// === BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2010, title = "From Year")
ToMonth   = input(defval = 12, title = "To Month", minval = 1)
ToDay     = input(defval = 31, title = "To Day", minval = 1)
ToYear    = input(defval = 2020, title = "To Year")

startDate = time > timestamp(FromYear, FromMonth, FromDay, 1, 1)
endDate = time < timestamp(ToYear, ToMonth, ToDay, 23, 59)
withinTimeRange = true

/////////////////////////////////////////////////////////////
//END - SET DATE RANGE



/////////////////////////////////////////////////////////////
//START - INDICATORS

length = input(3)
mult = input(1, minval = 0.01)
atr_ = atr(length)
max1 = max(nz(max_[1]), close)
min1 = min(nz(min_[1]), close)
is_uptrend_prev = nz(is_uptrend[1], true)
stop = is_uptrend_prev ? max1 - mult * atr_ : min1 + mult * atr_
vstop_prev = nz(vstop[1])
vstop1 = is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend = close - vstop1 >= 0
is_trend_changed = is_uptrend != is_uptrend_prev
max_ = is_trend_changed ? close : max1
min_ = is_trend_changed ? close : min1
vstop = is_trend_changed ? is_uptrend ? max_ - mult * atr_ : min_ + mult * atr_ : vstop1
plot(vstop, color = is_uptrend ? yellow : red, style=circles, linewidth=2)

/////////////////////////////////////////////////////////////
//END - INDICATORS



/////////////////////////////////////////////////////////////
//START - TRADING RULES
direction = input(defval=1, title = "Strategy Direction", minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

condition1 = close > vstop and withinTimeRange
condition2 = close < vstop and withinTimeRange

strategy.entry("BUY", strategy.long, when = condition1)
strategy.entry("SELL", strategy.short, when = condition2)

/////////////////////////////////////////////////////////////
//END - TRADING RULES