Стратегия торговли колебаниями импульса

Автор:Чао Чжан, Дата: 2023-11-21 16:57:07
Тэги:

img

Обзор

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

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

Стратегия использует среднюю линию Боллингеровских полос SMA в качестве индикатора скользящей средней и динамически регулирует ширину полосы через param mult * stdev. Когда цена проходит через среднюю линию снизу, это указывает на то, что набирается подъемный импульс и, следовательно, идет в длительный путь. Когда цена проходит через среднюю линию сверху, это показывает, что набирается подъемный импульс и, следовательно, идет в короткий путь. После входа в длинные / короткие позиции параметры стоп-лосса и прибыли устанавливаются для отслеживания прибыли и контроля рисков.

В частности, полосы Боллинджера рассчитываются с помощью двух параметров - длины и мульти. Длина определяет период средней линии, а мульти определяет ширину полосы. enterLong и enterShort определяют время выхода. exitLong и exitShort рассчитывают стоп-лосс и цены прибыли на основе цены входа и целевого процента.

Преимущества

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

Риски

  • Отставание в Болинджеров диапазоны приспособления цен, может пропустить некоторые движения
  • Слишком широкое установление стоп-лосса может увеличить риски потери
  • Короткие сигналы на бычьем рынке могут не быть хорошими

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

Улучшение

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

Заключение

Эта стратегия сочетает в себе сильные стороны реверсии и импульса, что позволяет зафиксировать некоторые тенденции на ранней стадии. Благодаря настройке параметров она может адаптироваться к различным стадиям рынка. Прямое учет стоп-лосса/прибыли уменьшает ручное вмешательство.


/*backtest
start: 2023-11-13 00:00:00
end: 2023-11-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("BURATINO", overlay=true)

// Входные параметры
length = input(20, minval=1, title="Length")
mult = input(2.0, minval=0.1, maxval=5, title="Multiplier")
target_percent = input(0.5, minval=0.1, title="Target Percent")
stop_loss_percent = input(95, minval=0.1, title="Stop Loss Percent")

// Расчет полос Боллинджера
basis = sma(close, length)
dev = mult * stdev(close, length)
upper = basis + dev
lower = basis - dev

// Переворот снизу вверх через среднюю линию Боллинджера для открытия лонга
enterLong = cross(close, basis) and close[1] < basis[1]

// Переворот сверху вниз через среднюю линию Боллинджера для открытия шорта
enterShort = cross(basis, close) and close[1] > basis[1]

// Закрытие лонга после роста цены на указанный процент или падения на указанный процент
exitLong = close >= strategy.position_avg_price * (1 + (target_percent / 100)) or close <= strategy.position_avg_price * (1 - (stop_loss_percent / 100))

// Закрытие шорта после падения цены на указанный процент или роста на указанный процент
exitShort = close <= strategy.position_avg_price * (1 - (target_percent / 100)) or close >= strategy.position_avg_price * (1 + (stop_loss_percent / 100))

// Управление позициями и ограничениями на открытие противоположных позиций
strategy.entry("Long", strategy.long, when = enterLong and strategy.position_size == 0)
strategy.entry("Short", strategy.short, when = enterShort and strategy.position_size == 0)

strategy.close("Long", when = exitLong)
strategy.close("Short", when = exitShort)

// Визуализация полос Боллинджера
plot(basis, color=color.blue, title="Basis")
plot(upper, color=color.red, title="Upper")
plot(lower, color=color.green, title="Lower")

Больше