Estrategia de captura de volatilidad dinámica con bandas de Bollinger y RSI


Fecha de creación: 2023-12-01 14:17:55 Última modificación: 2023-12-01 14:17:55
Copiar: 0 Número de Visitas: 751
1
Seguir
1619
Seguidores

Estrategia de captura de volatilidad dinámica con bandas de Bollinger y RSI

Descripción general

La estrategia RSI-Bulling Band es una estrategia de negociación que integra la idea de las bandas de Bulling (BB), el indicador de la fuerza relativa (RSI) y el promedio móvil simple (SMA). La estrategia se caracteriza por calcular un nivel dinámico entre el precio de cierre en el tren superior y el precio de cierre en el tren inferior. Esta característica única permite a la estrategia adaptarse a la volatilidad del mercado y a los cambios de precios.

Los mercados de criptomonedas y acciones son altamente volátiles, por lo que son ideales para aplicar la estrategia de las bandas de Brin. El RSI puede ayudar a identificar sobrecompras y sobreventas en este mercado, que suele ser especulativo.

Principio de estrategia

Las bandas de Bolling Dinámicas: La estrategia primero calcula las bandas de Bolling de subida y bajada de acuerdo con la longitud y el multiplicador definidos por el usuario. Luego, combina las bandas de Bolling y la dinámica de precios de cierre para ajustar el valor de las bandas de Bolling Presente. Finalmente, genera señales de más cuando los precios atraviesan las bandas de Bolling Presente y de menos cuando los precios atraviesan las bandas de Bolling Presente.

RSI: Si el usuario elige usar el RSI para generar señales, la estrategia también calcula el RSI y su SMA, y los usa para generar señales adicionales de venta y ventaja. La señal basada en el RSI solo se usa cuando el parche de generar señales con el RSI está configurado como verdadero.

Luego, la estrategia comprueba la dirección de la operación elegida y entra en posiciones de venta o venta corta, respectivamente. Si la dirección de la operación está configurada como un eje bidireccional, la estrategia puede entrar en posiciones de venta y venta corta al mismo tiempo.

Por último, cuando el precio de cierre atraviesa la banda de cambio actual, la posición se apaga y se abre; cuando el precio de cierre atraviesa la banda de cambio actual, se apaga y abre.

Análisis de las ventajas

La estrategia combina las ventajas de los indicadores Brin, RSI y SMA para adaptarse a la volatilidad del mercado, capturar dinámicamente las fluctuaciones y generar señales de negociación en caso de sobrecompra y sobreventa.

El indicador RSI complementa las señales de trading de las bandas de Bryn para evitar entradas erróneas en mercados convulsionados. Permite opciones de solo hacer más, solo hacer menos o de comercio bidireccional, adaptándose a diferentes condiciones de mercado.

Los parámetros son personalizables y se pueden ajustar a las preferencias de riesgo individuales.

Análisis de riesgos

La estrategia se basa en indicadores técnicos y no puede hacer frente a los cambios fundamentales.

La configuración incorrecta de los parámetros de la banda de Brin puede causar señales de transacción demasiado frecuentes o demasiado escasas.

El riesgo de una operación bidireccional aumenta, por lo que hay que estar atento a la posibilidad de que se produzca un retroceso de la pérdida de la cotización.

Se recomienda la combinación de stop loss para controlar el riesgo.

Dirección de optimización

  1. En combinación con otras señales de filtración de indicadores, como MACD.

  2. Aumentar las estrategias para detener los daños.

  3. Optimización de los parámetros de la banda de Brin y el RSI.

  4. Ajuste de parámetros según el tipo de transacción y el ciclo.

  5. Considere la optimización del disco y ajuste los parámetros para adaptarse a la situación real.

Resumir

La estrategia RSI-Brines es una estrategia impulsada por indicadores técnicos que combina las ventajas de los Brines, RSI y SMA para capturar las fluctuaciones del mercado mediante el ajuste dinámico de Brines. La estrategia puede ser personalizada y optimizada, pero no puede predecir los cambios fundamentales.

Código Fuente de la Estrategia
/*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.