
Стратегия RSI-Bulling-Band является торговой стратегией, которая интегрирует концепцию Буллинской полосы (BB), относительно сильного индикатора (RSI) и простой движущейся средней (SMA). Уникальность этой стратегии заключается в том, что она рассчитывает динамический уровень между верхним и нижним трейлером в зависимости от цены закрытия. Эта уникальная функция позволяет стратегии адаптироваться к рыночной волатильности и изменениям цен.
Рынок криптовалют и акций очень волатилен, поэтому очень подходит для применения стратегии Брин-бейн. RSI может помочь определить перекуп и перепродажу на этом часто спекулятивном рынке.
Динамические BollingBands: Сначала стратегия рассчитывает верхние и нижние BollingBands в зависимости от длины и умножения, определенного пользователем. Затем в сочетании с BollingBand и динамикой цены закрытия корректирует значение PresentBollingBand.
RSI: Если пользователь выберет использовать RSI для создания сигнала, стратегия также рассчитывает RSI и его SMA и использует их для создания дополнительных сигналов плюс и минус. Сигнал на основе RSI используется только в том случае, если параметр фильтрации для создания сигнала с использованием RSI настроен на true.
Затем стратегия проверяет выбранное торговое направление и вступает в позиции на покупку или продажу соответственно. Если торговое направление настроено на двунаправленную коробку, стратегия может одновременно входить в позиции на покупку и продажу.
Наконец, когда цена закрытия проходит через Present BollingBand, она выровняется в позиции; когда цена закрытия проходит через Present BollingBand, она выровняется в позиции.
Эта стратегия, объединяющая преимущества BRI, RSI и SMA, способна адаптироваться к волатильности рынка, динамически улавливать колебания и генерировать торговые сигналы в случае перепродажи.
Индекс RSI дополняет торговые сигналы по Брин-Бенду, чтобы избежать ошибочного входа в рынок во время колебаний. Позволяет выбирать только оптовую, только дисковую или двустороннюю торговлю, адаптируясь к различным рыночным условиям.
Параметры могут быть настроены на индивидуальные предпочтения в отношении риска.
Стратегия, опирающаяся на технические показатели, не может справиться с существенными изменениями, вызванными фундаментальными факторами.
Неправильная настройка параметров Брин-полосы может привести к слишком частому или слишком редкому появлению торговых сигналов.
В то же время, по мнению экспертов, риски, связанные с двусторонней торговлей, повышаются, поэтому следует быть осторожным, чтобы не допустить убытков в результате дефолта.
Рекомендуется сочетать с остановкой для контроля риска.
В сочетании с другими показателями фильтруют сигналы, например MACD.
Повышение стратегии по сдерживанию убытков.
Оптимизируйте параметры для Brin Belt и RSI.
Параметры корректируются в зависимости от разных видов и циклов торгов.
Оптимизация диска, адаптация параметров к реальному положению дел.
Стратегия RSI-Bulling - это стратегия, основанная на технических показателях, которая объединяет преимущества Bulling, RSI и SMA для захвата рыночных колебаний путем динамической корректировки Bullings. Стратегия может быть настроена и оптимизирована, но не может прогнозировать фундаментальные изменения. Рекомендуется тестировать эффективность на практике, при необходимости корректировать параметры или добавлять другие показатели в сочетании с использованием, чтобы снизить риск.
/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-30 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © PresentTrading
//@version=5
// Define the strategy settings
strategy('Volatility Capture RSI-Bollinger - Strategy [presentTrading]', overlay=true)
// Define the input parameters for the indicator
priceSource = input.source(title='Source', defval=hlc3, group='presentBollingBand') // The price source to use
lengthParam = input.int(50, 'lengthParam', minval=1, group='presentBollingBand') // The length of the moving average
multiplier = input.float(2.7183, 'Multiplier', minval=0.1, step=.1, group='presentBollingBand') // The multiplier for the ATR
useRSI = input.bool(true, 'Use RSI for signals', group='presentBollingBand') // Boolean input to decide whether to use RSI for signals
rsiPeriod = input.int(10, 'RSI Period', minval=1, group='presentBollingBand') // The period for the RSI calculation
smaPeriod = input.int(5, 'SMA Period', minval=1, group='presentBollingBand') // The period for the SMA calculation
boughtRange = input.float(55, 'Bought Range Level', minval=1, group='presentBollingBand') // The level for the bought range
soldRange = input.float(50, 'Sold Range Level', minval=1, group='presentBollingBand') // The level for the sold range
// Add a parameter for choosing Long or Short
tradeDirection = input.string("Both", "Trade Direction", options=["Long", "Short", "Both"], group='presentBollingBand') // Dropdown input for trade direction
// Calculate the bollingerBand
barIndex = bar_index // The current bar index
upperBollingerBand = ta.sma(high, lengthParam) + ta.stdev(high, lengthParam) * multiplier // Calculate the upper Bollinger Band
lowerBollingerBand = ta.sma(low, lengthParam) - ta.stdev(low, lengthParam) * multiplier // Calculate the lower Bollinger Band
var float presentBollingBand = na // Initialize the presentBollingBand variable
crossCount = 0 // Initialize the crossCount variable
// Calculate the buy and sell signals
longSignal1 = ta.crossover(priceSource, presentBollingBand) // Calculate the long signal
shortSignal1 = ta.crossunder(priceSource, presentBollingBand) // Calculate the short signal
// Calculate the RSI
rsiValue = ta.rsi(priceSource, rsiPeriod) // Calculate the RSI value
rsiSmaValue = ta.sma(rsiValue, smaPeriod) // Calculate the SMA of the RSI value
// Calculate the buy and sell signals
longSignal2 = rsiSmaValue > boughtRange // Calculate the long signal based on the RSI SMA
shortSignal2 = rsiSmaValue < soldRange // Calculate the short signal based on the RSI SMA
presentBollingBand := na(lowerBollingerBand) or na(upperBollingerBand)?0.0 : close>presentBollingBand?math.max(presentBollingBand,lowerBollingerBand) : close<presentBollingBand?math.min(presentBollingBand,upperBollingerBand) : 0.0
if (tradeDirection == "Long" or tradeDirection == "Both") and longSignal1 and (useRSI ? longSignal2 : true) // Use RSI for signals if useRSI is true
presentBollingBand := lowerBollingerBand // If the trade direction is "Long" or "Both", and the long signal is true, and either useRSI is false or the long signal based on RSI is true, then assign the lowerBollingerBand to the presentBollingBand.
strategy.entry("Long", strategy.long) // Enter a long position.
if (tradeDirection == "Short" or tradeDirection == "Both") and shortSignal1 and (useRSI ? shortSignal2 : true) // Use RSI for signals if useRSI is true
presentBollingBand := upperBollingerBand // If the trade direction is "Short" or "Both", and the short signal is true, and either useRSI is false or the short signal based on RSI is true, then assign the upperBollingerBand to the presentBollingBand.
strategy.entry("Short", strategy.short) // Enter a short position.
// Exit condition
if (strategy.position_size > 0 and ta.crossunder(close, presentBollingBand)) // If the strategy has a long position and the close price crosses under the presentBollingBand, then close the long position.
strategy.close("Long")
if (strategy.position_size < 0 and ta.crossover(close, presentBollingBand)) // If the strategy has a short position and the close price crosses over the presentBollingBand, then close the short position.
strategy.close("Short")
//~~ Plot
plot(presentBollingBand,"presentBollingBand", color=color.blue) // Plot the presentBollingBand on the chart.