Estrategia de avance de oscilación de bandas de Bollinger

El autor:¿ Qué pasa?, Fecha: 2023-11-01 16:45:54
Las etiquetas:

img

Resumen general

Esta estrategia combina las bandas de Bollinger y el indicador de Aroon para beneficiarse de la oscilación y los avances en los mercados volátiles.

Estrategia lógica

La estrategia utiliza principalmente dos indicadores para identificar las oportunidades comerciales y los puntos de salida.

Primero, las bandas de Bollinger. Consisten en una banda media, una banda superior y una banda inferior. La banda media es un promedio móvil simple del precio de cierre durante n períodos. La banda superior es la banda media + k desviaciones estándar. La banda inferior es la banda media - k desviaciones estándar. Una ruptura ascendente de la banda media desde la banda inferior señala una entrada larga. Una ruptura descendente de la banda media desde la banda superior señala una entrada corta. La estrategia utiliza las bandas de Bollinger para identificar puntos de oportunidad en medio de tendencias de oscilación, entrando alrededor de las rupturas de la banda media.

En segundo lugar, el indicador Aroon. Refleja la fuerza relativa del precio más alto y más bajo en n períodos. Aroon puede determinar tendencias y oportunidades. Cuando la línea Aroon Up es superior a un umbral, indica una tendencia al alza. Cuando la línea Aroon Down es superior a un umbral, indica una tendencia a la baja. La estrategia utiliza Aroon Up para confirmar una tendencia al alza y Aroon Down para determinar el stop loss.

Combinando los dos indicadores, la estrategia va largo cuando ocurre un avance de Bollinger y Aroon Up es superior a un umbral. Cierra la posición cuando se activa el stop loss o Aroon Up cae por debajo de un valor establecido.

Ventajas

  1. La combinación de múltiples indicadores mejora la precisión. Un solo indicador es susceptible al ruido del mercado. La combinación de Bollinger Bands y Aroon puede filtrar señales falsas.

  2. Las bandas de Bollinger tienen una fuerte capacidad de identificación de tendencias y pueden detectar oportunidades de avance a corto plazo.

  3. Control de riesgos adecuado. Stop loss y Aroon Down controlan el riesgo a la baja. El tamaño de la posición también limita la pérdida por operación.

  4. En comparación con las estrategias de seguimiento de tendencias, esta estrategia tiene un mejor rendimiento en los mercados oscilantes.

Los riesgos

  1. Las bandas de Bollinger pueden ser inexactas, los eventos repentinos del mercado pueden invalidar las bandas de Bollinger.

  2. Los parámetros de Aroon necesitan optimización. Diferentes mercados necesitan parámetros de Aroon ajustados para obtener mejores resultados.

  3. El intervalo de stop loss debe ser relajado adecuadamente para evitar toques repetidos.

  4. Evite los mercados con tendencias fuertes. La estrategia se adapta a los mercados oscilantes.

Optimizaciones

  1. Optimice los parámetros de Bollinger, use bandas de Bollinger adaptables, permita el ajuste dinámico de los parámetros para una mejor flexibilidad.

  2. Optimizar los parámetros dinámicos de Aroon. Diferentes activos y plazos necesitan diferentes parámetros de Aroon. Investigar la optimización dinámica.

  3. Añadir filtros como RSI para evitar sobrecompras/sobreventas mejora aún más la precisión de las señales de estrategia.

  4. Utilice el aprendizaje automático para optimizar el stop loss.

  5. Los indicadores de volumen pueden prevenir señales falsas de ruptura de Bollinger.

Conclusión

En general, esta es una estrategia de negociación de oscilación típica. Identifica las oportunidades de negociación mediante la combinación de Bollinger Bands y Aroon, capaces de capitalizar las oscilaciones del mercado a corto plazo. Con un stop loss adecuado, gestión de riesgos y optimización de parámetros, es adecuado para mercados de rango. Pero se necesita optimización y control de riesgos para evitar su aplicación en mercados de tendencia. Con mejoras adicionales, puede convertirse en una estrategia cuantitativa muy práctica.


/*backtest
start: 2023-10-24 00:00:00
end: 2023-10-28 21:00:00
period: 1m
basePeriod: 1m
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/
// © relevantLeader16058

//@version=4
// strategy(shorttitle='Bollinger bands And Aroon Scalping',title='Bollinger bands And Aroon Scalping (by Coinrule)', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 30, commission_type=strategy.commission.percent, commission_value=0.1)

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"


// BB inputs and calculations
lengthBB = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(src, lengthBB)
dev = mult * stdev(src, lengthBB)
upper = basis + dev
lower = basis - dev
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)


lengthAr = input(288, minval=1)
AroonUP = 100 * (highestbars(high, lengthAr+1) + lengthAr)/lengthAr
AroonDown = 100 * (lowestbars(low, lengthAr+1) + lengthAr)/lengthAr


Confirmation = input(90, "Aroon Confirmation")
Stop = input(70, "Aroon Stop")

Bullish = crossunder (close, basis)
Bearish = crossunder (close, upper)

//Entry 

strategy.entry(id="long", long = true, when = Bullish and AroonUP > Confirmation and window())

//Exit

strategy.close("long", when = Bearish or AroonUP < Stop and window())




Más.