В процессе загрузки ресурсов... загрузка...

Двойные полосы Боллинджера

Автор:Чао Чжан, Дата: 2023-12-25 13:20:31
Тэги:

img

Обзор

Стратегия Breakout Double Bollinger Bands - это стратегия, использующая верхние и нижние полосы Bollinger Bands для оценки ценовых тенденций и установления длинных позиций, когда цены прорываются через внутренние полосы Bollinger, и закрытия позиций, когда цены падают ниже внешних полос Bollinger.

Логика стратегии

Стратегия сначала рассчитывает скользящую среднюю величину и стандартное отклонение за определенный период. Затем она строит двойные полосы Боллинджера, используя скользящую среднюю ± одно стандартное отклонение для внутренних полос и скользящую среднюю ± 1,5 стандартных отклонений для внешних полос.

Когда цены выходят выше верхней внутренней полосы, это указывает на то, что рынок начинает бычий поток, поэтому идет длинный.

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

Стратегия также устанавливает стоп-лосс, прибыль и выходы стоп-лосса.

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

Стратегия Double Bollinger Bands Breakout имеет следующие преимущества:

  1. Использование двойных полос Боллинджера для оценки движения цен позволяет эффективно следить за трендом;
  2. Введение на внутренние прорывы в диапазоне позволяет избежать ненужных сделок с средней реверсией;
  3. эффективно контролировать риск при получении прибыли, стоп-лосса и последующих стоп-лосса;
  4. Оптимизируемые параметры позволяют настраивать различные продукты.

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

Стратегия Double Bollinger Bands Breakout также сопряжена с некоторыми рисками:

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

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

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

Стратегия Double Bollinger Bands Breakout может быть оптимизирована несколькими способами:

  1. Оптимизировать параметры скользящей средней и стандартного отклонения для различных продуктов;
  2. Добавление объема, MACD или других фильтров для предотвращения ложных прорывов;
  3. Использование методов машинного обучения для динамической оптимизации параметров;
  4. Копируйте стратегию на нескольких высокочастотных интервалах, чтобы расширить потенциал прибыли.

Заключение

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


/*backtest
start: 2023-12-17 00:00:00
end: 2023-12-24 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("BB Strat",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,currency="USD",initial_capital=100, overlay=true)
l=input(title="length",defval=100)
pbin=input(type=float,step=.1,defval=.25)
pbout=input(type=float,step=.1,defval=1.5)
ma=sma(close,l)
sin=stdev(ma,l)*pbin
sout=stdev(ma,l)*pbout
inu=sin+ma
inb=-sin+ma
outu=sout+ma
outb=-sout+ma
plot(inu,color=lime)
plot(inb,color=lime)
plot(outu,color=red)
plot(outb,color=yellow)

inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0)
inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0)
inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)
useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na


longCondition = close>inu and rising(outu,1) 
exitlong = (open[1]>outu and close<outu) or crossunder(close,ma)

shortCondition = close<inb and falling(outb,1)
exitshort = (open[1]<outb and close>outb) or crossover(close,ma)

strategy.entry(id = "Long", long=true, when = longCondition)
strategy.close(id = "Long", when = exitlong)
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitlong)

strategy.entry(id = "Short", long=false, when = shortCondition)
strategy.close(id = "Short", when = exitshort)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitshort)

Больше