Стратегия тренда с несколькими таймфреймами, основанная на прорыве полос Боллинджера и индикаторе RSI


Дата создания: 2024-02-21 13:59:31 Последнее изменение: 2024-02-21 13:59:31
Копировать: 0 Количество просмотров: 659
1
Подписаться
1617
Подписчики

Стратегия тренда с несколькими таймфреймами, основанная на прорыве полос Боллинджера и индикаторе RSI

Обзор

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

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

  1. Используйте индикатор Блин-пояса для определения цены прорыва. Средний путь Блин-пояса представляет собой движущуюся среднюю цену закрытия на N дней, верхняя и нижняя колеи - это стандартная разница между ними.

  2. В сочетании с RSI, RSI больше 70 является зоной перекупа, а меньше 30 - зоной перепродажи. Когда RSI пересекает 70 снизу вверх, считается, что он находится в состоянии перекупа, и Брин берет верхний прорыв в качестве подтверждения обратного тренда.

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

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

  1. Слияние нескольких показателей, повышение стабильности стратегии и доходности.

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

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

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

  5. Vortex - индикатор, который определяет направление тенденции и может улавливать новые тенденции, которые начинают формироваться.

Стратегический риск

  1. Неправильная настройка параметров по Бринской полосе может привести к ошибке в сигнале оперебой.

  2. Настройка параметров RSI требует определения разумных значений в зависимости от разных разновидностей.

  3. Сигналы прорыва могут быть ложными, поэтому нужно увеличить разницу между остановками.

  4. Обеспечение достаточного предела убытков, например, в 3 раза больше показателя ATR.

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

  1. Применение алгоритмов машинного обучения для оптимизации в режиме реального времени параметров ленты Брин и RSI.

  2. Оптимизация стоп-дефицита с использованием индикатора волатильности.

  3. Добавление модуля управления объемом сделок и корректировка позиций в соответствии с изменениями рынка.

  4. В соответствии с принципами управления капиталом, ограничение доли убытков по отдельным сделкам.

  5. Оценка стабильности прорывного сигнала в разные периоды торгов.

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

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

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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Noway0utstorm
//@version=5
strategy(title='Vortex0.71.3 + bb 3bar breakout + rsi - close hit upper or lower', shorttitle='truongphuthinh', format=format.price, precision=4,overlay = true)

length = input(20, title="Length")
mult = input(2.0, title="Multiplier")
source = close

basis = ta.sma(source, length)
dev = mult * ta.stdev(source, length)

upperBand = basis + dev
lowerBand = basis - dev

isClosedBar = ta.change(time("15"))

var bool closeAboveUpperBand = false
var bool closeBelowLowerBand = false


// Vortex Indicator Settings
period_ = input.int(14, title='Period', minval=2)

VMP = math.sum(math.abs(high - low[1]), period_)
VMM = math.sum(math.abs(low - high[1]), period_)
STR = math.sum(ta.atr(1), period_)
VIP = VMP / STR
VIM = VMM / STR

//
lengthrsi = input(14, title="RSI Length")
overboughtLevel = input(70, title="Overbought Level")
oversoldLevel = input(30, title="Oversold Level")

sourcersi = close
rsiValue = ta.rsi(sourcersi, lengthrsi)

shouldShort = rsiValue > overboughtLevel
shouldLong = rsiValue < oversoldLevel




if bool(isClosedBar[1]) and bool(isClosedBar[2]) and bool(isClosedBar[3])

    if close[1] > upperBand[1] and close[2] > upperBand[2] and close[3] > upperBand[3] and VIP > 1.25 and VIM < 0.7 and rsiValue > overboughtLevel
        strategy.entry("Short", strategy.short)
        closeAboveUpperBand := false  // Reset the condition when entering a new Short position
    if close[1] < lowerBand[1] and close[2] < lowerBand[2] and close[3] < lowerBand[3] and VIP < 0.7 and VIM > 1.25 and rsiValue < oversoldLevel
        strategy.entry("Long", strategy.long)
        closeBelowLowerBand := false  // Reset the condition when entering a new Long position



if strategy.position_size > 0  // Check if there is an open Long position
    closeAboveUpperBand := close > upperBand  // Update the condition based on close price
    if closeAboveUpperBand
        strategy.close("Long",disable_alert=true)  // Close the Long position if close price is above upper band

if strategy.position_size < 0  // Check if there is an open Short position
    closeBelowLowerBand := close < lowerBand  // Update the condition based on close price
    if closeBelowLowerBand
        strategy.close("Short",disable_alert=true)  // Close the Short position if close price is below lower band

// Plots
plot(basis, color=color.orange, title="Basis")
p1 = plot(upperBand, color=color.blue, title="Upper Band")
p2 = plot(lowerBand, color=color.blue, title="Lower Band")
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))