Esta estrategia incorpora bandas de Bollinger, indicador RSI y análisis de marcos de tiempo múltiples para capturar la dirección de las tendencias a medio y largo plazo. Identifica puntos de inversión de tendencia a través de breakouts de bandas de Bollinger combinados con señales de sobrecompra / sobreventa de RSI para una entrada de bajo riesgo. Mientras tanto, se aplican marcos de tiempo más altos para filtrar mercados variados y evitar quedar atrapados.
La banda media es el promedio móvil del precio de cierre durante N días. Las bandas superior e inferior se colocan a una distancia de una desviación estándar a cada lado de la banda media. Romper por encima de la banda superior indica alza mientras que romper por debajo de la banda inferior indica bajista.
Incorporar el indicador RSI para identificar los niveles de sobrecompra/sobreventa. RSI por encima de 70 sugiere condiciones de sobrecompra mientras que por debajo de 30 sugiere condiciones de sobreventa. Una ruptura al alza del RSI por encima de 70 confirma el debilitamiento del impulso al alza. Una ruptura a la baja del RSI por debajo de 30 confirma el debilitamiento del impulso a la baja.
Cuando una señal de ruptura aparece en el marco de tiempo diario, requiere una confirmación adicional de los marcos de tiempo de 4 horas o más para evitar quedar atrapado.
La integración de múltiples indicadores mejora la estabilidad y la rentabilidad de la estrategia.
La inclusión de RSI mitiga las pérdidas de las falsas rupturas.
El análisis de múltiples marcos de tiempo filtra eficazmente los mercados y evita quedar atrapados.
La determinación optimizada de la señal de ruptura (rupturas en 3 barras consecutivas) garantiza una madurez de tendencia suficiente antes de las entradas.
El indicador de vórtice determina la dirección de la tendencia naciente desde el principio.
La inadecuada parametrización de las bandas de Bollinger conduce a señales erróneas de sobrecompra/sobreventa.
Los valores razonables de los parámetros RSI deben determinarse por separado para los diferentes productos.
Las señales de ruptura pueden resultar ser falsas rupturas.
Mantener un margen de stop loss suficiente, por ejemplo, 3 veces el ATR.
Aplicar algoritmos de aprendizaje automático para ajustar automáticamente los parámetros de Bollinger Bands y RSI.
Optimizar los niveles de stop loss basados en las métricas de volatilidad.
Incorporar un módulo de dimensionamiento de posiciones para calibrar las exposiciones en función de las condiciones cambiantes del mercado.
Limitar las pérdidas máximas por operación basándose en los principios de gestión del dinero.
Evaluar la estabilidad de la señal en diferentes sesiones de negociación.
Esta estrategia examina de manera exhaustiva la determinación de tendencias, las condiciones de sobrecompra/sobreventa y múltiples marcos de tiempo para controlar los riesgos, al tiempo que busca el momento de entrada óptimo para capturar tendencias de mediano a largo plazo de alta calidad para perfiles de riesgo-recompensa atractivos.
/*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))