Стратегия разворота полосы улучшенной волатильности


Дата создания: 2023-09-21 11:45:37 Последнее изменение: 2023-09-21 11:45:37
Копировать: 2 Количество просмотров: 653
1
Подписаться
1617
Подписчики

Обзор

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

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

  1. Вычислить параметры base и dev для регулярных полос колебаний, а также верхний предел upperBB и нижний предел lowerBB.

  2. Вычислите среднюю линию SMA и отклонение от определенного процента от SMA вверх-вниз по траекториям upex2 и dnex2.

  3. Вычислите средние значения upex2, dnex2 и upperBB, lowerBB, чтобы получить кривые upex3 и dnex3 .

  4. Возьмитеupex3 с большим значением в upperBB как новый uptrackupex, dnex3 с меньшим значением в lowerBB как новый downtrackdnex.

  5. При более низкой цене на dnex - больше; при более высокой цене на K-линии - меньше; при более высокой цене на K-линии - меньше.

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

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

  2. В сочетании с фильтрацией сигналов K-линии, избегайте частого остановки при сборке.

  3. Отзывы показывают, что стратегия была стабильно прибыльной с 2008 по 2018 год, с плавной кривой прибыли и максимальным выводом менее 20%.

  4. Параметры, такие как использование средств, время торговли и т. Д., Риск контролируется.

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

  1. Неправильная настройка параметров волатильности может привести к слишком высокой частоте торгов или упущенным возможностям.

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

  3. Сигнал фильтра K может задерживаться и не остановить его вовремя.

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

  5. Не может приспосабливаться к большим прыжкам или разрывам.

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

  1. Тестирование различных комбинаций параметров, оптимизация параметров полосы колебаний.

  2. Фильтрация в сочетании с другими индикаторными сигналами, повышая долю выгодных сделок.

  3. Присоединяйтесь к стратегии пополнения позиций, когда цена превышает планку.

  4. Установка условий стоп-лосса для управления единичными потерями.

  5. Разработка автоматической процедуры корректировки параметров для оптимизации параметров в соответствии с изменениями рынка.

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

  7. Расширение диапазона времени отсчета для проверки стабильности параметров.

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

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

Исходный код стратегии
/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Advanced Bollinger Bands Strategy v1.0", shorttitle = "ABB str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
p = input(20, "bars")
d = input(25, "percent")
showlines = input(true, defval = true, title = "Show Lines?")
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")

mult = input(2.0, minval=0.001, maxval=50)
basis = sma(close, p)
dev = mult * stdev(close, p)
source = close
upperBB = basis + dev
lowerBB = basis - dev
b1 = plot(basis, color=gray, linewidth=1)
p1 = plot(upperBB, color=aqua,  linewidth=1)
p2 = plot(lowerBB, color=aqua, linewidth=1)

//SMAs
sma = sma(close, p)
upex2 = sma * ((100 + d) / 100)
dnex2 = sma * ((100 - d) / 100)

upex3 = (upex2 + upperBB) / 2
dnex3 = (dnex2 + lowerBB) / 2

upex = max(upperBB, upex3)
dnex = min(lowerBB, dnex3)
//exit = (high > sma and low < sma)
exit = close > open


//Lines
col = showlines ? blue : na
plot(upex, linewidth = 3, color = col, transp = 0)
plot(sma, linewidth = 3, color = col, transp = 0)
plot(dnex, linewidth = 3, color = col, transp = 0)

//Trading
lot = strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]

if (not na(close[p]))
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, limit = dnex)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, limit = upex)

if exit
    strategy.close_all()