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


Дата создания: 2023-12-19 14:08:45 Последнее изменение: 2023-12-19 14:08:45
Копировать: 0 Количество просмотров: 639
1
Подписаться
1621
Подписчики

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

Обзор

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

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

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

Если цена ниже нижней линии, покупайте больше; если цена выше верхней линии, продавайте на пустую. При более высокой цене поставьте стоп-линию как входную цену, умноженную на стоп-фактор, и стоп-линию как входную цену, умноженную на стоп-фактор.

Кроме того, в стратегию были добавлены дополнительные правила, например, только один сигнал в течение 24 часов, чтобы избежать бесполезных сделок.

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

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

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

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

Меры контроля риска:

  1. Регулирование параметров Брин-полосы для оптимизации времени прорыва сигнала
  2. В сочетании с другими показателями оценить основные тенденции
  3. В зависимости от разных сортов и рыночных условий устанавливается стоп-стоп.

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

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

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

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

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

//@version=5
strategy("I11L OIL Bot",overlay=true, initial_capital=1000000,default_qty_value=1000000,default_qty_type=strategy.cash,commission_type=strategy.commission.percent,commission_value=0.00)

leverage = input.float(1,"Leverage (x)",step=1)
SL_Factor = 1 - input.float(1,"Risk Capital per Trade (%)", minval=0.1, maxval=100, step=0.05) / 100 / leverage
TP_Factor = input.float(2, step=0.1)
invertBuyLogic = input.bool(false)
 
lookbackDistance = input.int(25)
devMult = input.float(2,step=0.1)

var lastSellHour = 0
var disableAdditionalBuysThisDay = false


if(time > lastSellHour + 1000 * 60 * 60 * 6)
    disableAdditionalBuysThisDay := false
if(strategy.position_size != strategy.position_size[1])
    disableAdditionalBuysThisDay := true
    lastSellHour := time

source = close

//Trade Logic
basis = ta.sma(source, lookbackDistance)
dev = devMult * ta.stdev(source, lookbackDistance)
upper = basis + dev
lower = basis - dev
isBuy = ta.crossunder(source, upper)
isBuyInverted = ta.crossover(source, lower)

plot(upper, color=color.white)
plot(lower, color=color.white)

strategy.initial_capital = 50000

if((invertBuyLogic ? isBuyInverted : isBuy) and not(disableAdditionalBuysThisDay))
    strategy.entry("Long", strategy.long, (strategy.initial_capital / close) * leverage)

if(strategy.position_size > 0)
    strategy.exit("SL Long", "Long", stop=strategy.position_avg_price * SL_Factor)
    strategy.close("Long",  when=close > strategy.position_avg_price * (1 + (1 - SL_Factor) * TP_Factor), comment="TP Long")