Стратегия торговли объемом Dual Bollinger Band


Дата создания: 2023-11-16 17:36:00 Последнее изменение: 2023-11-16 17:36:00
Копировать: 0 Количество просмотров: 391
1
Подписаться
1166
Подписчики

Стратегия торговли объемом Dual Bollinger Band

Обзор

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

Принципы

Стратегия включает в себя следующие элементы:

  1. Вычисляется средняя орбитальная линия цены, то есть простая скользящая средняя цены.

  2. Простой подвижной средний абсолютного отклонения цены рассчитывается как пропускная способность канала.

  3. В зависимости от средней полосы и полосы пропускания определяется верхняя и нижняя полосы пропускания. Верхняя полоса пропускания увеличивается в среднюю полосу пропускания в 1 или 2 раза, а нижняя полоса - уменьшается в среднюю полосу пропускания в 1 или 2 раза.

  4. Вычислить индикатор оценки полярных тенденций. Если цена выше верхней полосы 2, то она является полярной, а если цена ниже нижней полосы 2, то она является полярной.

  5. Производит торговые сигналы. Цена повышается, когда она входит в траекторию 2, а понижается, когда она выходит из траектории 2.

  6. Настройка стоп-линии ◦ многоодиночная стоп-линия - нижний рельс 1, пустая стоп-линия - верхний рельс 1 ◦

  7. Позиции рассчитываются в соответствии с требованиями управления капиталом.

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

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

Основные преимущества этой стратегии:

  1. Используя двойную систему, можно лучше определить, насколько сильна или слаба тенденция.

  2. Брин обладает мощной функцией регрессии, которая эффективно предотвращает ложные прорывы.

  3. Двухполосная разница в сочетании с регрессивной центральной осью с буринской полосой образует более стабильный торговый сигнал.

  4. Есть четкая логика Exit Stop Loss, которая позволяет контролировать риск.

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

  6. Стратегическая концепция ясна, легко понятна и оптимизируется.

  7. Гибкость параметров оптимизации для различных рынков.

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

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

  1. Неправильная настройка параметров Брин-пояса может привести к эффекту реки-крепости и не позволит эффективно отслеживать цены.

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

  3. На рынках, где наблюдается колебание, может быть больше неэффективных сигналов.

  4. В случае фальшивого проникновения в здание могут произойти потери.

  5. Существует определенная временная задержка, может быть пропущена точка перехода цикла.

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

Соответствующие меры управления рисками:

  1. Оптимизация параметров, позволяющая приспособиться к различным циклам.

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

  3. Снижение позиций, контроль одиночных потерь.

  4. Оптимизация стоп-лосс, гарантированная прибыльность.

  5. Сокращение циклов, чтобы уменьшить задержку.

  6. Ветроуправление должно быть устойчивым, а не бесконечным.

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

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

  1. Оптимизация параметров по Брин-полосе, позволяющая лучше отслеживать цены. Можно ввести параметры адаптации.

  2. Попробуйте различные скользящие средние, такие как EMA, DWMA и т.д.

  3. Добавление фильтров на тенденции, чтобы избежать ошибочных сделок на рынке волатильности.

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

  5. Введение нескольких временных циклов для комбинирования, различные циклы подходят для различных рыночных условий.

  6. Добавление дополнительной условной логики, например, всплеск объема торгов, чтобы избежать ложных прорывов.

  7. Можно подумать о том, чтобы перевернуть ленту Брин, продать ее вверх и купить ее вниз.

  8. Оптимизация параметров для поиска оптимальных комбинаций.

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

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

Исходный код стратегии
/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 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/
// © noro

//@version=4
strategy(title = "Noro's Bands Strategy", shorttitle = "Bands", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, commission_value = 0.1)

//Sattings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
lotsize = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
len = input(20, defval = 20, minval = 1, maxval = 1000, title = "Length")
src = input(ohlc4, title = "Source")
showbb = input(true, title = "Show Bands")
showof = input(true, title = "Show Offset")
showbg = input(false, title = "Show Background")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//Distance
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd2 = center + distsma * 2
ld2 = center - distsma * 2

//Trend
trend = 0
trend := high > hd2 ? 1 : low < ld2 ? -1 : trend[1]
bgcol = showbg == false ? na : trend == 1 ? color.lime : color.red
bgcolor(bgcol, transp = 70)

//Lines
colo = showbb == false ? na : color.black
offset = showof ? 1 : 0
plot(hd2, color = colo, linewidth = 1, transp = 0, offset = offset, title = "High band 2")
plot(hd, color = colo, linewidth = 1, transp = 0, offset = offset, title = "High band 1")
plot(center, color = colo, linewidth = 1, transp = 0, offset = offset, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, offset = offset, title = "Low band 1")
plot(ld2, color = colo, linewidth = 1, transp = 0, offset = offset, title = "Low band 2")

//Trading
size = strategy.position_size
needstop = needlong == false or needshort == false
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * lotsize / 100 : lot[1]
if distsma > 0
    strategy.entry("Long", strategy.long, lot, stop = hd2, when = truetime and needlong)
    strategy.entry("Short", strategy.short, lot, stop = ld2, when = truetime and needshort)
sl = size > 0 ? ld2 : size < 0 ? hd2 : na
if size > 0 and needstop
    strategy.exit("Stop Long", "Long", stop = sl)
if size < 0 and needstop
    strategy.exit("Stop Short", "Short", stop = sl)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")