Эта стратегия основана на концепции брин-полосы, которая устанавливает верхнюю и нижнюю траектории ценового канала для определения тенденции и получения торговых сигналов. В частности, средний абсолютный отклонение цены рассчитывается в качестве полосы пропускания канала, средняя траектория - это простая скользящая средняя цены, верхняя и нижняя траектории - уменьшение полосы пропускания в 1 или 2 раза соответственно.
Стратегия включает в себя следующие элементы:
Вычисляется средняя орбитальная линия цены, то есть простая скользящая средняя цены.
Простой подвижной средний абсолютного отклонения цены рассчитывается как пропускная способность канала.
В зависимости от средней полосы и полосы пропускания определяется верхняя и нижняя полосы пропускания. Верхняя полоса пропускания увеличивается в среднюю полосу пропускания в 1 или 2 раза, а нижняя полоса - уменьшается в среднюю полосу пропускания в 1 или 2 раза.
Вычислить индикатор оценки полярных тенденций. Если цена выше верхней полосы 2, то она является полярной, а если цена ниже нижней полосы 2, то она является полярной.
Производит торговые сигналы. Цена повышается, когда она входит в траекторию 2, а понижается, когда она выходит из траектории 2.
Настройка стоп-линии ◦ многоодиночная стоп-линия - нижний рельс 1, пустая стоп-линия - верхний рельс 1 ◦
Позиции рассчитываются в соответствии с требованиями управления капиталом.
Эта стратегия сочетает в себе движущиеся средние тенденции по оценке тренда, буринскую полосу по оценке перекупа и перепродажи, а также попытку совершить обратный прорыв. С помощью двусторонней разницы в оценке трендов, она использует функцию буринской полосы, которая возвращается к центральной оси, и в целом формирует более стабильную торговую систему.
Основные преимущества этой стратегии:
Используя двойную систему, можно лучше определить, насколько сильна или слаба тенденция.
Брин обладает мощной функцией регрессии, которая эффективно предотвращает ложные прорывы.
Двухполосная разница в сочетании с регрессивной центральной осью с буринской полосой образует более стабильный торговый сигнал.
Есть четкая логика Exit Stop Loss, которая позволяет контролировать риск.
Позиции были установлены в соответствии с требованиями по управлению капиталом, чтобы избежать супер-леверинга.
Стратегическая концепция ясна, легко понятна и оптимизируется.
Гибкость параметров оптимизации для различных рынков.
Однако эта стратегия также несет в себе некоторые риски:
Неправильная настройка параметров Брин-пояса может привести к эффекту реки-крепости и не позволит эффективно отслеживать цены.
Двухколесные различия не могут полностью избежать ошибочного восприятия тенденций.
На рынках, где наблюдается колебание, может быть больше неэффективных сигналов.
В случае фальшивого проникновения в здание могут произойти потери.
Существует определенная временная задержка, может быть пропущена точка перехода цикла.
Поскольку прибыль и убыток ограничены стоп-стопами, невозможно бесконечно отслеживать тенденции.
Соответствующие меры управления рисками:
Оптимизация параметров, позволяющая приспособиться к различным циклам.
Для того, чтобы избежать ошибочных выводов, проверьте комбинацию других показателей.
Снижение позиций, контроль одиночных потерь.
Оптимизация стоп-лосс, гарантированная прибыльность.
Сокращение циклов, чтобы уменьшить задержку.
Ветроуправление должно быть устойчивым, а не бесконечным.
Эта стратегия может быть оптимизирована в следующих направлениях:
Оптимизация параметров по Брин-полосе, позволяющая лучше отслеживать цены. Можно ввести параметры адаптации.
Попробуйте различные скользящие средние, такие как EMA, DWMA и т.д.
Добавление фильтров на тенденции, чтобы избежать ошибочных сделок на рынке волатильности.
Добавление экстремального выхода для получения большей прибыли от тренда. Можно рассмотреть мелкий стоп, мобильный стоп, индикатор выхода из игры и т. д.
Введение нескольких временных циклов для комбинирования, различные циклы подходят для различных рыночных условий.
Добавление дополнительной условной логики, например, всплеск объема торгов, чтобы избежать ложных прорывов.
Можно подумать о том, чтобы перевернуть ленту Брин, продать ее вверх и купить ее вниз.
Оптимизация параметров для поиска оптимальных комбинаций.
Общая идея этой стратегии ясна и имеет большую стабильность. В то же время существует определенная возможность для дальнейшего совершенствования с помощью оптимизации параметров, оптимизации логики, управления рисками и т. Д. Она может стать очень практичной стратегией количественной торговли.
/*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")