Стратегия торговли индексами на основе полос Боллинджера

Автор:Чао Чжан, Дата: 2023-12-08 16:52:24
Тэги:

img

Обзор

Стратегия называется Quant Trading Strategy Based on Bollinger Bands. Это индекс и стратегия торговли акциями, основанная на улучшенном канале Bollinger Bands.

Логика торговли

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

Эта стратегия использует две полосы Боллинджера. Болинджерская полоса 1 подходит для длинных сделок, а Болинджерская полоса 2 подходит для коротких сделок. Параметры Болинджерской полосы 1 оптимизированы с длиной 25 и отклонением в 2,9 раза. Параметры Болинджерской полосы 2 оптимизированы с длиной 36 и отклонением в 3,2 раза. Когда цена закрытия пересекает нижний пояс Болинджерской полосы 1, он генерирует длинный сигнал. Когда цена закрытия пересекает ниже верхнего полосы Болинджерской полосы 2, он генерирует короткий сигнал.

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

По сравнению с традиционными стратегиями Bollinger Bands, эта стратегия имеет следующие преимущества:

  1. Он реализует двунаправленную торговлю как на длинной, так и на короткой стороне, которая может использовать торговые возможности на разных этапах рынка.

  2. Параметры оптимизированы. Два набора параметров полос Боллинджера тщательно проверены для эффективного генерирования торговых сигналов.

  3. Риск контролируемый. Движущийся метод стоп-лосса может эффективно контролировать риск одной стороны.

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

Существуют также некоторые потенциальные риски для этой стратегии:

  1. Риск недействительности полос Боллинджера.

  2. Мы можем правильно расширить стоп-лосс или своевременно остановить, чтобы избежать этого риска.

  3. Слишком чувствительные параметры могут привести к частой торговле и увеличению затрат на торговлю.

Руководство по оптимизации

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

  1. Комбинируйте другие индикаторы для фильтрации сигналов и избегайте неправильных сделок, когда полосы Боллинджера терпят неудачу.

  2. Динамически корректировать параметры, чтобы соответствовать рыночным характеристикам разных периодов.

  3. Оптимизировать методы стоп-лосса с использованием последующего стоп-лосса или экспоненциального движущегося стоп-лосса для эффективного контроля рисков.

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

Резюме

В целом, эта стратегия оптимизирует двунаправленную торговлю как для длинной, так и для короткой сторон на основе двойного канала и оптимизации параметров. По сравнению с традиционными стратегиями Bollinger Bands, она имеет преимущества двунаправленной торговли и контроля рисков. Она подходит для использования возможностей на разных этапах рынка и имеет определенную практическую ценность.


/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © exlux99

//@version=4
strategy("BB NDX strategy", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, calc_on_every_tick = true, commission_type = strategy.commission.percent, commission_value = 0.01)

source = close
length = input(25, minval=1, title="Length BB long")
mult = input(2.9, minval=0.001, maxval=50, step=0.1, title="MULT BB long")

length2 = input(36, minval=1, title="Length BB short")
mult2 = input(3.2, minval=0.001, maxval=50, step=0.1, title="MULT BB short")


basis = sma(source, length)
dev = mult * stdev(source, length)
dev2 = mult2 * stdev(source, length2)

upper = basis + dev2
lower = basis - dev

buyEntry = crossover(source, lower)
sellEntry = crossunder(source, upper)

longEntry=input(true)
shortEntry=input(true)

g(v, p) => round(v * (pow(10, p))) / pow(10, p)
risk     = input(100)
leverage = input(1.0, step = 0.5)
c = g((strategy.equity * leverage / open) * (risk / 100), 4)


tplong=input(0.065, step=0.005, title="Take profit % for long")
sllong=input(0.04, step=0.005, title="Stop loss % for long")
tpshort=input(0.025, step=0.005, title="Take profit % for short")
slshort=input(0.04, step=0.005, title="Stop loss % for short")

if(longEntry)
    strategy.entry("long",1,c,when=buyEntry)
    strategy.exit("short_tp/sl", "long", profit=close * tplong / syminfo.mintick, loss=close * sllong / syminfo.mintick, comment='LONG EXIT',  alert_message = 'closeshort')
    strategy.close("long",when=sellEntry)
if(shortEntry)
    strategy.entry("short",0,c,when=sellEntry)
    strategy.exit("short_tp/sl", "short", profit=close * tpshort / syminfo.mintick, loss=close * slshort / syminfo.mintick, comment='SHORT EXIT',  alert_message = 'closeshort')
    strategy.close("short",when=buyEntry)




Больше