Estrategia de negociación de bandas de Bollinger de múltiples indicadores

El autor:¿ Qué pasa?, Fecha: 2023-11-15 15:30:43
Las etiquetas:

img

Resumen general

Esta estrategia combina múltiples indicadores técnicos como Bollinger Bands, RSI y MACD para tomar decisiones comerciales. Primero traza Bollinger Bands en el gráfico y utiliza bandas de ruptura para señales de entrada. RSI y MACD se utilizan luego como filtro adicional para las entradas. La estrategia también establece reglas de stop loss basadas en bandas e indicadores para controlar el riesgo.

Estrategia lógica

  1. Trace las bandas de Bollinger de 34 períodos con línea central, 1 std dev y 2 std dev bandas.

  2. Introducir largo cuando el cierre se rompe por encima de la banda superior, entrar corto cuando el cierre se rompe por debajo de la banda inferior.

  3. Cierre de la posición larga cuando la posición cerrada se cruza por debajo de la línea central, cierre de la posición corta cuando la posición cerrada se cruza por encima de la línea central.

  4. Se utilizará RSI>70 como confirmación adicional para largo, RSI<30 como confirmación para corto.

  5. Las posiciones cortas se cierran cuando el RSI cruza por encima de 50, las posiciones largas se cierran cuando el RSI cruza por debajo de 50.

  6. Utilice el cruce MACD como filtro adicional para las entradas, cruce MACD para largo, cruce MACD para corto.

  7. Cierre de posiciones largas en el cruce MACD, cierre de posiciones cortas en el cruce MACD.

  8. Requiere que los 3 indicadores se alineen antes de entrar en operaciones, múltiples filtros reducen las señales falsas.

Ventajas

La combinación de señales de múltiples indicadores reduce las señales falsas y aumenta la rentabilidad. Las bandas de Bollinger proporcionan señales de ruptura de precios, el RSI evita áreas de sobrecompra / sobreventa, el MACD captura los cambios de tendencia.

Las reglas estrictas de stop loss basadas en bandas e indicadores limitan las pérdidas en cada operación.

En comparación con las estrategias de un solo indicador, la combinación de indicadores mejora el rendimiento. Múltiples filtros eliminan las malas señales. El mecanismo de stop loss controla el impacto de la pérdida.

En general, esta estrategia sobresale en los mercados de tendencia, capturando movimientos importantes y evitando los golpes con detalles de los indicadores.

Los riesgos

Los principales riesgos son:

  1. Optimización de parámetros puede reducir pero no eliminar señales falsas.

  2. Incapacidad para obtener ganancias de los mercados de rango limitado. El stop loss puede desencadenar una pérdida durante la consolidación. Las reglas de stop loss se pueden flexibilizar para mantener las operaciones por más tiempo.

  3. Los indicadores de retraso conducen a oportunidades de entrada perdidas.

  4. El uso de trailing stops o promediando hacia abajo puede controlar las pérdidas mejor.

  5. Los parámetros fijos pueden requerir ajustes para diferentes mercados. El aprendizaje automático puede permitir la optimización automática de parámetros.

  6. La estrategia debe probarse en conjuntos de datos más grandes en todos los mercados para garantizar su robustez.

Oportunidades de mejora

La estrategia puede mejorarse de varias maneras:

  1. Optimiza los parámetros del indicador para encontrar las mejores combinaciones que minimizen las señales falsas.

  2. Incorporar stop loss adaptativo en lugar de paradas de banda media fijas. Las paradas pueden adaptarse a ATR, tendencias, etc.

  3. Utilice el aprendizaje automático para la optimización de parámetros adaptativos en condiciones cambiantes, por ejemplo, el aprendizaje por refuerzo.

  4. Añadir reglas de detección de tendencias para emplear diferentes tácticas para diferentes fases del mercado.

  5. Incorpore sentimiento, datos de redes sociales para una mejor predicción multifactorial e indicadores principales.

  6. Emplear la composición para escalar los tamaños de las posiciones en función del tamaño creciente de la cuenta para un crecimiento exponencial.

  7. Optimizar las combinaciones con estrategias no correlacionadas para reducir la volatilidad de la cartera mediante la diversificación.

Conclusión

Esta estrategia combina múltiples indicadores para señales de entrada y salida robustas y aplica una estricta disciplina de stop loss. El uso de múltiples indicadores reduce las señales falsas mientras que las paradas controlan la magnitud de la pérdida. Funciona bien para los mercados de tendencia que proporcionan rendimientos constantes. Los parámetros de ajuste fino y la mejora de la adaptabilidad pueden mejorar aún más el rendimiento. En general, es un sistema de negociación confiable, estable y eficiente.


/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Bollinger Bands: Madrid : 14/SEP/2014 11:07 : 2.0
// This displays the traditional Bollinger Bands, the difference is 
// that the 1st and 2nd StdDev are outlined with two colors and two
// different levels, one for each Standard Deviation

strategy(shorttitle='MBB', title='Bollinger Bands', overlay=true, currency=currency.NONE, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_value = 0.05)
src = input(close)
length = input.int(34, minval=1)
mult = input.float(2.0, minval=0.001, maxval=50)

basis = ta.sma(src, length)
dev = ta.stdev(src, length)
dev2 = mult * dev

upper1 = basis + dev
lower1 = basis - dev
upper2 = basis + dev2
lower2 = basis - dev2

colorBasis = src >= basis ? color.blue : color.orange

pBasis = plot(basis, linewidth=2, color=colorBasis)
pUpper1 = plot(upper1, color=color.new(color.blue, 0), style=plot.style_circles)
pUpper2 = plot(upper2, color=color.new(color.blue, 0))
pLower1 = plot(lower1, color=color.new(color.orange, 0), style=plot.style_circles)
pLower2 = plot(lower2, color=color.new(color.orange, 0))

fill(pBasis, pUpper2, color=color.new(color.blue, 80))
fill(pUpper1, pUpper2, color=color.new(color.blue, 80))
fill(pBasis, pLower2, color=color.new(color.orange, 80))
fill(pLower1, pLower2, color=color.new(color.orange, 80))


//Strategy code starts here

long_entry = ta.crossover(src, upper1)
short_entry = ta.crossunder(src, lower1)

strategy.entry("Long", strategy.long, when=long_entry)
strategy.entry("Short", strategy.short, when=short_entry)

if long_entry or close < basis
    strategy.close("Long", "Long") 

if short_entry or close > basis
    strategy.close("Short", "Short") 


//Calculate RSI
rsiLength = input(14)
rsiValue = ta.rsi(src, rsiLength)

// Define RSI conditions for entering and exiting trades
rsiLong = rsiValue > 70
rsiShort = rsiValue < 30


//Enter long position when RSI crosses above 50 and Bollinger Bands long entry condition is met
strategy.entry("Long", strategy.long, when=long_entry and rsiLong)

//Exit long position when RSI crosses below 50 or Bollinger Bands exit condition is met
strategy.close("Long Exit", when=rsiShort or close < basis)

//Enter short position when RSI crosses below 50 and Bollinger Bands short entry condition is met
strategy.entry("Short", strategy.short, when=short_entry and rsiShort)

//Exit short position when RSI crosses above 50 or Bollinger Bands exit condition is met
strategy.close("Short Exit", when=rsiLong or close > basis)



//Calculate MACD
fastLength = input(12)
slowLength = input(26)
macdLength = input(9)
macdValue = ta.macd(src, fastLength, slowLength, macdLength)

// Define MACD conditions for entering and exiting trades
macdLong = ta.crossover(src, macdLength)
macdShort = ta.crossunder(src, macdLength)

//Enter long position when MACD crosses above signal line and RSI and Bollinger Bands long entry condition is met
strategy.entry("Long", strategy.long, when=long_entry and rsiLong and macdLong)

//Exit long position when MACD crosses below signal line or RSI crosses below 50 or Bollinger Bands exit condition is met
strategy.close("Long Exit", when=macdShort or rsiShort or close < basis)

//Enter short position when MACD crosses below signal line and RSI crosses below 50 and Bollinger Bands short entry condition is met
strategy.entry("Short", strategy.short, when=short_entry and rsiShort and macdShort)

//Exit short position when MACD crosses above signal line or RSI crosses above 50 or Bollinger Bands exit condition is met
strategy.close("Short Exit", when=macdLong or rsiLong or close > basis)

Más.