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


Дата создания: 2023-12-06 14:43:39 Последнее изменение: 2023-12-06 14:43:39
Копировать: 0 Количество просмотров: 651
1
Подписаться
1619
Подписчики

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

Обзор

Стратегия основана на процентном показателе по Бриньовой полосе в сочетании с показателями RSI и MFI, для принятия решений по увеличению дифференциации путем обнаружения цен на финансовые продукты, которые прорывают Бриньовую полосу в сторону понижения, в сочетании с RSI oversell oversell и MFI oversell oversell сигналом.

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

  1. Вычислить процентное соотношение по Брин-Бенду (BB%) [2].BB% указывает на стандартную разницу цены по отношению к средней полосе по Брин-Бенду и определяет направление рынка по каналу по Брин-Бенду [2].
  2. RSI определяет перекуп и перепродажу путем сравнения среднего роста и среднего падения за определенный период времени. MFI определяет перекуп и перепродажу путем сравнения роста и падения объема торгов.
  3. Сделайте больше, когда цена спускается вверх и пробивает нижнюю полосу Бринга; сделайте больше, когда цена спускается вверх и пробивает нижнюю полосу Бринга.

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

  1. “Однако, я не думаю, что это будет полезно, потому что я не хочу, чтобы это стало проблемой для меня.
  2. В сочетании с различными показателями фильтруют сигналы, повышая точность принятия решений.
  3. Параметрическая настройка гибкая, можно регулировать риски и выгоды стратегии.
  4. Применяется для высоко волатильных индикаторов, таких как товары, иностранные валюты и криптовалюты.

Риски и решения

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

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

  1. Добавление механизмов устранения убытков, основанных на волатильности, таких как ATR.
  2. Внедрение моделей машинного обучения для оценки качества прорывного сигнала.
  3. Оптимизация механизмов выбора участников, динамическая коррекция участников.
  4. В дополнение к этим факторам, такие как эмоциональные показатели и новостная лента, система принятия решений должна быть усовершенствована.

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

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

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

//Noro
//2018

//@version=2
strategy(title = "BB%/MFI/RSI", shorttitle = "BB%/MFI/RSI", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 100)

//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 = "Lot, %")
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")

source = hlc3
length = input(14, minval=1), mult = input(2.0, minval=0.001, maxval=50), bblength = input(50, minval=1, title="BB Period")
DrawRSI_f=input(true, title="Draw RSI?", type=bool)
DrawMFI_f=input(false, title="Draw MFI?", type=bool)
HighlightBreaches=input(true, title="Highlight Oversold/Overbought?", type=bool)

DrawMFI = (not DrawMFI_f) and (not DrawRSI_f) ? true : DrawMFI_f
DrawRSI = (DrawMFI_f and DrawRSI_f) ? false : DrawRSI_f
// RSI
rsi_s = DrawRSI ? rsi(source, length) : na
plot(DrawRSI ? rsi_s : na, color=maroon, linewidth=2)

// MFI
upper_s = DrawMFI ? sum(volume * (change(source) <= 0 ? 0 : source), length) : na
lower_s = DrawMFI ? sum(volume * (change(source) >= 0 ? 0 : source), length) : na
mf = DrawMFI ? rsi(upper_s, lower_s) : na
plot(DrawMFI ? mf : na, color=green, linewidth=2)

// Draw BB on indices
bb_s = DrawRSI ? rsi_s : DrawMFI ? mf : na
basis = sma(bb_s, length)
dev = mult * stdev(bb_s, bblength)
upper = basis + dev
lower = basis - dev
plot(basis, color=red)
p1 = plot(upper, color=blue)
p2 = plot(lower, color=blue)
fill(p1,p2, blue)

b_color = (bb_s > upper) ? red : (bb_s < lower) ? lime : na
bgcolor(HighlightBreaches ? b_color : na, transp = 0)

//Signals
up = bb_s < lower and close < open
dn = bb_s > upper and close > open
size = strategy.position_size
lp = size > 0 and close > open
sp = size < 0 and close < open
exit = (up == false and dn == false) and (lp or sp)

//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

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