Высокочастотная торговая стратегия, сочетающая полосы Боллинджера и DCA


Дата создания: 2024-03-29 16:20:13 Последнее изменение: 2024-03-29 16:20:13
Копировать: 5 Количество просмотров: 828
1
Подписаться
1617
Подписчики

Высокочастотная торговая стратегия, сочетающая полосы Боллинджера и DCA

Обзор

Стратегия называется “DCA Booster (1 minute) “, это высокочастотная торговая стратегия, которая работает в 1-минутный временной рамке. Стратегия объединяет два метода: бурин-пояса и DCA (Dollar-Cost Averaging, средняя стоимость доллара), целью которого является использование рыночных колебаний для многократных покупок и продаж, чтобы попытаться получить прибыль. Основная идея стратегии заключается в следующем: когда цена снижается ниже бурин-пояса в течение двух последовательных циклов, начинайте строить опционы в соответствии с DCA; когда цена проходит через бурин-пояса, выровняйте все позиции.

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

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

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

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

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

  1. Если рынок сильно колеблется, и цена быстро выходит за пределы баланса, это может привести к тому, что стратегия не сможет достичь равновесия, что может привести к убыткам.
  2. При этом, если цена будет падать, то пирамида может привести к чрезмерной экспозиции и увеличить риск.
  3. Стратегия может не работать в условиях волатильности рынка, поскольку частые покупки и продажи могут привести к более высоким затратам на торговлю.

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

  1. Можно рассмотреть возможность включения стоп-лосса в условиях равного положения, чтобы контролировать максимальный убыток от одной сделки.
  2. Можно оптимизировать логику пополнения пирамиды, например, корректировать количество пополнения в зависимости от величины падения цены, чтобы избежать чрезмерного воздействия.
  3. Для повышения точности входа и выхода можно использовать другие показатели, такие как RSI, MACD и т. д.
  4. Можно оптимизировать параметры, такие как цикличность и стандартная дифференциальная кратность в Брин-Бенде, чтобы адаптироваться к различным рыночным условиям.

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

“DCA Booster (1 minute) ” - это высокочастотная торговая стратегия, объединяющая бурин-пояса и DCA, которая используется для поимки рыночных колебаний, чтобы попытаться получить прибыль, создавая позиции в серии, когда цены ниже бурин-пояса, и закрывая позиции, когда цены находятся на бурин-поясе, чтобы поймать рыночные колебания. Эта стратегия позволяет пирамидально наращивать позиции, но в то же время подвергается риску сильного колебания рынка и чрезмерного воздействия.

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

//@version=5
strategy("DCA Booster (1 minute)",
  overlay=true )

// Parameters for Bollinger Bands
length = input.int(50, title="BB Length")
mult = input.float(3.0, title="BB Mult")

// Bollinger Bands calculation
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper = basis + dev
lower = basis - dev

// Variables for DCA
cantidad_dolares = 50000
orden1 = cantidad_dolares / close
orden2 = orden1 * 1.2
orden3 = orden2 * 1.3
orden4 = orden3 * 1.5
orden5 = orden4 * 1.5

// Variables for tracking purchases
var comprado1 = false
var comprado2 = false
var comprado3 = false
var comprado4 = false
var comprado5 = false

// Buy conditions
condicion_compra1 = close < lower and close[1] < lower[1] and not comprado1
condicion_compra2 = close < lower and close[1] < lower[1] and comprado1 and not comprado2
condicion_compra3 = close < lower and close[1] < lower[1] and comprado2 and not comprado3
condicion_compra4 = close < lower and close[1] < lower[1] and comprado3 and not comprado4
condicion_compra5 = close < lower and close[1] < lower[1] and comprado4 and not comprado5
// Variables de control
var int consecutive_closes_below_lower = 0
var int consecutive_closes_above_upper = 0

// Entry logic
if condicion_compra1 and barstate.isconfirmed
    consecutive_closes_below_lower := consecutive_closes_below_lower + 1
    if consecutive_closes_below_lower >= 2
        strategy.entry("Compra1", strategy.long, qty=orden1)
        comprado1 := true
        consecutive_closes_below_lower := 0

if condicion_compra2 and barstate.isconfirmed
    consecutive_closes_below_lower := consecutive_closes_below_lower + 1
    if consecutive_closes_below_lower >= 2
        strategy.entry("Compra2", strategy.long, qty=orden2)
        comprado2 := true
        consecutive_closes_below_lower := 0

if condicion_compra3 and barstate.isconfirmed
    consecutive_closes_below_lower := consecutive_closes_below_lower + 1
    if consecutive_closes_below_lower >= 2
        strategy.entry("Compra3", strategy.long, qty=orden3)
        comprado3 := true
        consecutive_closes_below_lower := 0

if condicion_compra4 and barstate.isconfirmed
    consecutive_closes_below_lower := consecutive_closes_below_lower + 1
    if consecutive_closes_below_lower >= 2
        strategy.entry("Compra4", strategy.long, qty=orden4)
        comprado4 := true
        consecutive_closes_below_lower := 0

if condicion_compra5 and barstate.isconfirmed
    consecutive_closes_below_lower := consecutive_closes_below_lower + 1
    if consecutive_closes_below_lower >= 2
        strategy.entry("Compra5", strategy.long, qty=orden5)
        comprado5 := true
        consecutive_closes_below_lower := 0


// Sell conditions
if close > upper  and comprado1 and barstate.isconfirmed
    strategy.close("Compra1")
    comprado1 := false

if close > upper  and comprado2 and barstate.isconfirmed
    strategy.close("Compra2")
    comprado2 := false

if close > upper  and comprado3 and barstate.isconfirmed
    strategy.close("Compra3")
    comprado3 := false

if close > upper and comprado4 and barstate.isconfirmed
    strategy.close("Compra4")
    comprado4 := false

if close > upper and comprado5 and barstate.isconfirmed
    strategy.close("Compra5")
    comprado5 := false