Estrategia de combinación de bandas de Supertrend y Bollinger

El autor:¿ Qué pasa?, Fecha: 2024-03-29 15:18:22
Las etiquetas:

img

Resumen general

Esta estrategia combina el indicador de Supertrend y el indicador de Bollinger Bands para capturar oportunidades de tendencia en el mercado. El indicador de Supertrend se utiliza para determinar la dirección de la tendencia actual del mercado, mientras que el indicador de Bollinger Bands se utiliza para medir la volatilidad del mercado. Se genera una señal larga cuando el precio de cierre se rompe por encima de la línea de Supertrend y está por debajo de la banda inferior de Bollinger, y se genera una señal corta cuando el precio de cierre se rompe por debajo de la línea de Supertrend y está por encima de la banda superior de Bollinger.

Principios de estrategia

  1. Calcular el rango medio verdadero (ATR) y el indicador Supertrend para determinar la dirección actual de la tendencia del mercado.
  2. Calcular las bandas de Bollinger superior e inferior para medir la volatilidad del mercado.
  3. Generar una señal larga cuando el precio de cierre rompe por encima de la línea de Supertrend y está por debajo de la banda inferior de Bollinger; generar una señal corta cuando el precio de cierre rompe por debajo de la línea de Supertrend y está por encima de la banda superior de Bollinger.
  4. Cuando se mantenga una posición larga, si el precio de cierre se rompe por debajo de la línea Supertrend, se cierra la posición; cuando se mantenga una posición corta, si el precio de cierre se rompe por encima de la línea Supertrend, se cierra la posición.

Ventajas estratégicas

  1. La combinación de información tanto de las dimensiones de tendencia como de volatilidad permite captar de manera más completa las oportunidades del mercado.
  2. Capaz de entrar en el mercado de manera oportuna cuando la tendencia es clara, lo que ayuda a capturar las ganancias de los mercados de tendencia.
  3. En un mercado inestable, la combinación de Bollinger Bands y Supertrend puede filtrar eficazmente las falsas señales de ruptura y reducir el riesgo de pérdidas.
  4. La lógica del código es clara, con pocos parámetros, y es fácil de entender e implementar.

Riesgos estratégicos

  1. En un mercado de tendencia unilateral, debido a las frecuentes señales de ruptura, puede dar lugar a una frecuencia de negociación excesiva y aumentar los costes de transacción.
  2. La captura de los puntos de ruptura se basa en el indicador Supertrend, que es sensible a los parámetros, y las tendencias del indicador varían mucho bajo diferentes parámetros, lo que puede afectar a la eficacia de la estrategia.
  3. La amplitud de las bandas de Bollinger cambiará con los cambios en la volatilidad del mercado y puede ampliar los stop-loss en entornos de alta volatilidad.

Direcciones para la optimización de la estrategia

  1. Considere la posibilidad de introducir condiciones de filtrado más eficaces, como el volumen de operaciones, el sentimiento del mercado, etc., para mejorar aún más la fiabilidad de las señales.
  2. Para los parámetros del indicador Supertrend, se pueden realizar pruebas de optimización para seleccionar los parámetros óptimos para mejorar la estabilidad de la estrategia.
  3. En cuanto a la ejecución de operaciones, se pueden introducir medidas de gestión de posiciones y control de riesgos más detalladas, como el establecimiento de paradas de seguimiento, el ajuste dinámico de posiciones, etc., para reducir la exposición al riesgo de una operación única.

Resumen de las actividades

La estrategia de combinación de Supertrend Bollinger Band es una estrategia de seguimiento de tendencias que puede capturar de manera efectiva las oportunidades de tendencia al combinar dos factores del mercado: tendencia y volatilidad. Sin embargo, esta estrategia también tiene ciertas limitaciones, como ser sensible a los parámetros y aumentar el riesgo en entornos de alta volatilidad. Por lo tanto, en la aplicación real, es necesario optimizar y mejorar adecuadamente la estrategia de acuerdo con las características del mercado y las propias preferencias de riesgo.


/*backtest
start: 2024-03-21 00:00:00
end: 2024-03-28 00:00:00
period: 5m
basePeriod: 1m
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/
// © sabhiv27

//@version=4
strategy("Supertrend & Bollinger Bands Strategy", shorttitle="ST_BB_Strategy", overlay=true)

// Input options
factor = input(3, title="Supertrend Factor")
length = input(10, title="ATR Length")
bollinger_length = input(20, title="Bollinger Bands Length")
bollinger_deviation = input(2, title="Bollinger Bands Deviation")

// Calculate True Range for Supertrend
truerange = rma(tr, length)

// Calculate Supertrend
var float up_trend = na
var float dn_trend = na
var float trend = na
up_signal = hl2 - (factor * truerange)
dn_signal = hl2 + (factor * truerange)
up_trend := close[1] > up_trend[1] ? max(up_signal, up_trend[1]) : up_signal
dn_trend := close[1] < dn_trend[1] ? min(dn_signal, dn_trend[1]) : dn_signal
trend := close > dn_trend ? 1 : close < up_trend ? -1 : nz(trend[1], 1)

// Calculate Bollinger Bands
basis = sma(close, bollinger_length)
dev = stdev(close, bollinger_length)
upper_band = basis + bollinger_deviation * dev
lower_band = basis - bollinger_deviation * dev

// Entry conditions
long_condition = crossover(close, up_trend) and close < lower_band
short_condition = crossunder(close, dn_trend) and close > upper_band

// Exit conditions
exit_long_condition = crossover(close, dn_trend)
exit_short_condition = crossunder(close, up_trend)

// Plot Supertrend
plot(trend == 1 ? up_trend : dn_trend, color=trend == 1 ? color.green : color.red, linewidth=2)

// Plot Bollinger Bands
plot(upper_band, color=color.blue)
plot(lower_band, color=color.blue)

// Generate buy and sell signals
strategy.entry("Long", strategy.long, when=long_condition)
strategy.entry("Short", strategy.short, when=short_condition)
strategy.close("Long", when=exit_long_condition)
strategy.close("Short", when=exit_short_condition)

Más.