Тенденция прорыва полосы Боллинджера в соответствии со стратегией

Автор:Чао Чжан, Дата: 2023-09-22 14:31:17
Тэги:

Обзор

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

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

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

Конкретная логика торговли:

  1. Вычислить средние, верхние и нижние полосы полос Боллинджера.

  2. Когда цена проходит через верхнюю полосу, выходите в длинный, а когда цена проходит через нижнюю полосу, выходите в короткий.

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

  4. Возвращайтесь к тренду, когда цены снова прорвутся через диапазоны.

Использование полос Боллинджера для определения тенденций и сочетание с динамическим стоп-лосом может эффективно контролировать риски.

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

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

  1. Использование полос Боллинджера для определения трендов, просто и эффективно.

  2. Комбинация прорыва и динамического отслеживания стоп-лосса обеспечивает сбалансированное отслеживание тренда и контроль рисков.

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

  4. Немногие параметры, легко оптимизировать.

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

  6. Хорошие результаты обратных тестов, с большим потенциалом прибыли.

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

Основными рисками являются:

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

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

  3. Точки остановки потерь слишком тесные, риски остановки нормальными колебаниями.

  4. Не учитывается стоимость сделки.

  5. Ограниченный период обратных испытаний, риск переподготовки.

Решения:

  1. Оптимизировать параметры или добавлять другие показатели для проверки сигнала.

  2. Улучшить идентификацию колебаний и каналов.

  3. Динамическое регулирование стоп-потери на основе ATR и т.д.

  4. Добавьте комиссию, расходы на сдвиг.

  5. Расширить период обратного тестирования, проверку на разных рынках.

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

Стратегия может быть оптимизирована путем:

  1. Испытание комбинированных эффектов различных показателей.

  2. Улучшение идентификации колебаний тренда.

  3. Внедрение машинного обучения для оптимизации динамических параметров.

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

  5. Оценка и суммирование затрат на транзакции.

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

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

Заключение

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


/*backtest
start: 2022-09-15 00:00:00
end: 2023-09-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Bollinger Band Breakout", shorttitle = "BB Strategy",initial_capital=1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, commission_type = strategy.commission.percent, commission_value = 0.3, max_bars_back = 1000, overlay=true)

// Inputs //

sma = input(20,  minval=1)
mult   = input(1.2, minval=0.001, maxval=50)
src = input(close)

// alert msg  //

message_long_entry  = input("long entry")
message_short_entry = input("short entry")

// Calculations //

basis = sma(close, sma)
dev   = mult * stdev(close, sma)

upper = basis + dev
lower = basis - dev

// Backtest //
fromyear = input(2019, defval = 2019, 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(1, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

leverage = input(1, "Leverage")

term = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))

// PLOT //

plot(basis, color = color.gray,  linewidth = 2)
lu = plot(upper, color = color.green, linewidth = 2)
ll = plot(lower, color = color.red,   linewidth = 2)

fill(lu, ll, color = color.gray)

// Signals //

long  = crossover(close, upper)
short = crossunder(close, lower)

// Strategy entry //
strategy.initial_capital = 50000
if (long and term)
    strategy.entry("long",  strategy.long, qty=strategy.initial_capital/close*leverage, when = long and barstate.isconfirmed, alert_message = message_long_entry)
    
if (short and term)
    strategy.entry("short",  strategy.short, qty=strategy.initial_capital/close*leverage, when = short and barstate.isconfirmed, alert_message = message_short_entry)

// strategy exit //

strategy.exit("long tsl", "long", loss = close*0.075 / syminfo.mintick, trail_points = close*0.05 / syminfo.mintick, trail_offset = close*0.005 / syminfo.mintick)
strategy.exit("short tsl", "short", loss = close*0.075 / syminfo.mintick, trail_points = close*0.05 / syminfo.mintick, trail_offset = close*0.005 / syminfo.mintick)





Больше