Стратегия Bollinger Breakout

Автор:Чао Чжан, Дата: 2023-11-13 10:19:43
Тэги:

img

Обзор

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

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

Стратегия сначала рассчитывает среднюю полосу, верхнюю полосу и нижнюю полосу полос Боллинджера.

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

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

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

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

Преимущества этой стратегии:

  1. Используйте полосы Боллинджера для определения направления тренда и выявления прорывов.

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

  3. Используйте стоп-лосс, чтобы зафиксировать прибыль и контролировать риск.

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

  5. Простые параметры делают эту стратегию легкой для реализации.

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

Риски этой стратегии включают:

  1. Брейки Bollinger Bands не могут полностью избежать ложных брейков, могут возникнуть некоторые потери.

  2. Неправильное размещение стоп-лосса может привести к преждевременной остановке или не ограничить убытки.

  3. Чрезмерное время и размер пирамиды могут привести к увеличению потерь.

  4. Невозможность своевременно остановиться, когда тенденция меняется, может привести к большим снижению.

  5. Недостаточная оптимизация параметров может привести к низкой производительности.

  6. Требует проверки на разных рынках.

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

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

  1. Тестируйте и оптимизируйте параметры полос Боллинджера, чтобы найти лучшие комбинации.

  2. Проверьте различные стратегии стоп-лосса и оптимизируйте размещение стоп-лосса.

  3. Испытайте и найдите оптимальные времена и размеры пирамид.

  4. Добавьте трендовый фильтр, чтобы избежать пирамиды против тренда.

  5. Оптимизируйте логику выхода тела, чтобы уменьшить ложные выходы.

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

  7. Провести больше обратных тестов на различные продукты и сроки для повышения надежности.

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

Заключение

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


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

//Noro
//2018

//@version=2
strategy("Noro's Bollinger Strategy v1.1", shorttitle = "Bollinger str 1.1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")

length = input(20, defval = 20, minval = 1, maxval = 1000, title = "Bollinger Length")
mult = input(2.0, minval = 0.001, maxval = 50, title = "Bollinger Mult")
source = input(ohlc4, defval = ohlc4, title = "Bollinger Source")

showbands = input(true, defval = true, title = "Show Bollinger Bands")
fromyear = input(2018, defval = 2018, 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")

//Bollinger Bands
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev

//Lines
col = showbands ? black : na 
plot(upper, linewidth = 1, color = col)
plot(basis, linewidth = 1, color = col)
plot(lower, linewidth = 1, color = col)

//Body
body = abs(close - open)
abody = ema(body, 30)

//Signals
up = close <= lower
dn = close >= upper
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open) and body > abody / 2

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
    
if time > timestamp(toyear, tomonth, today, 00, 00) or exit
    strategy.close_all()

Больше