Комбинированная торговая стратегия закрытия прорыва тройных полос BB и индикатора RSI


Дата создания: 2024-02-29 14:57:49 Последнее изменение: 2024-02-29 14:57:49
Копировать: 1 Количество просмотров: 627
1
Подписаться
1617
Подписчики

Комбинированная торговая стратегия закрытия прорыва тройных полос BB и индикатора RSI

Обзор

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

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

Эта стратегия основана на следующих принципах:

  1. Использование брин-полосы длиной 20 с возможностью подачи торгового сигнала, когда цена закрывается и прорывается вверх или вниз
  2. Требование о одновременном прорыве закрытия трех K-линий, чтобы избежать ложного прорыва
  3. В сочетании с индикатором колеса, сильный превышение VIP> 1.25, сильный превышение VIM> 1.25, фильтрующий сигнал
  4. В сочетании с показателем RSI, чтобы определить, является ли это перекуп или перепродажа, RSI выше 70 рассматривается как пробой, а RSI ниже 30 рассматривается как перепродажа
  5. При выполнении вышеперечисленных условий генерируется сигнал “сделай больше” или “сделай меньше”.

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

Основные преимущества этой стратегии:

  1. Трехмерные группы BB фильтруют ложные прорывы, обеспечивая надежность прорыва
  2. Показатель “Тенденции” помогает оценить рыночную силу и избегать неблагоприятных сделок
  3. RSI определяет зоны перекупа и перепродажи в сочетании с индексом Брин-Бенда
  4. Комбинация различных показателей, комплексный анализ состояния рынка, высокая надежность сигнала

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

Однако эта стратегия также несет в себе некоторые риски:

  1. Показатели по ленте Бринга чувствительны к параметрам, требуют оптимизации длины и кратности StdDev
  2. Показатели гирлянда также более чувствительны к циклическим параметрам, которые требуют корректировки в разных рынках.
  3. RSI может отклоняться от тренда или пропускать его
  4. Если вы не согласны с тремя критериями, вы не сможете принять участие и пропустите часть возможностей.

Меры контроля риска включают в себя:

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

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

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

  1. Оптимизация длины и кратности StdDev индикатора по ленте Бурин, чтобы найти оптимальные параметры
  2. Оптимизация циклов для гиперзвуковых индикаторов для их адаптации к различным рынкам
  3. Добавление других показателей, таких как объем торгов, macd и т. д., чтобы обеспечить разнообразные сигналы
  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='RSI + BB  over 3 bar+--- vortex0.71.3  ', shorttitle='NoWaytruongphuthinh', 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))