Estrategia de negociación de volumen con bandas de Bollinger duales


Fecha de creación: 2023-11-16 17:36:00 Última modificación: 2023-11-16 17:36:00
Copiar: 0 Número de Visitas: 722
1
Seguir
1617
Seguidores

Estrategia de negociación de volumen con bandas de Bollinger duales

Descripción general

Esta estrategia se basa en el concepto de la banda de Brin, que establece la trayectoria ascendente y descendente del canal de precios, y se utiliza para juzgar la tendencia y generar señales de negociación. Concretamente, se calcula el promedio de la desviación absoluta del precio como el ancho de banda del canal, el ancho de banda medio como el promedio simple de movimiento del precio, el ancho de banda superior y inferior se agrega y se reduce 1 o 2 veces el ancho de banda del canal para el ancho de banda medio respectivamente.

El principio

La estrategia incluye los siguientes puntos:

  1. Se calcula la línea media del precio, es decir, el promedio móvil simple del precio.

  2. Calcula el promedio móvil simple de la desviación absoluta de precios como el ancho de banda del canal.

  3. De acuerdo con el medio y el ancho de banda, se determina la banda superior y la banda inferior. La banda superior es el medio más 1 o 2 veces más ancho de banda, y la banda inferior es el medio menos 1 o 2 veces más ancho de banda.

  4. Calcula el indicador de determinación de la tendencia a la baja. Cuando el precio está por encima de la vía 2 es de alta cabeza y cuando el precio está por debajo de la vía 2 es de baja cabeza.

  5. Generar una señal de negociación. Hacer más cuando el precio sube a la vía 2 y hacer vacío cuando baja a la vía 2.

  6. Configure la línea de parada de pérdidas. La línea de parada de pérdidas múltiple es la vía inferior 1, la línea de parada de pérdidas vacía es la vía superior 1.

  7. Las posiciones se calculan de acuerdo con los requisitos de gestión de fondos.

Esta estrategia combina la idea de juzgar la tendencia de las medias móviles, de las bandas de Brin para juzgar sobrecompras y sobreventa, y de la ruptura para hacer una inversión. A través de la diferencia de dos vías para juzgar la tendencia de la fuerza y la debilidad, al mismo tiempo que ejerce la función de la banda de Brin para regresar al eje central, se forma un sistema de comercio más estable en general.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. El uso de un sistema de dos vías permite un mejor entendimiento de las tendencias.

  2. El Brin tiene una función de regresión muy potente que evita la falsa ruptura.

  3. La diferencia de dos vías se combina con el eje central de regresión de la banda de Brin para formar una señal de negociación más estable.

  4. Tiene una lógica de Exit Stop Loss clara para controlar el riesgo.

  5. La configuración de las posiciones cumple con los requisitos de gestión de fondos y evita el súper-leverage.

  6. La estrategia es clara, fácil de entender y de optimizar.

  7. Los parámetros se pueden configurar de manera flexible y se pueden optimizar para diferentes mercados.

Análisis de riesgos

La estrategia también tiene sus riesgos:

  1. La configuración incorrecta de los parámetros de la franja de Bryn puede causar un efecto de estuario de la muralla, que no permite un seguimiento eficaz de los precios.

  2. Las diferencias en las dos vías no evitan completamente el error de tendencia.

  3. En un mercado convulso, puede haber más señales no válidas.

  4. El fallo de la brecha puede causar pérdidas.

  5. Hay un cierto retraso en el tiempo, y es posible que se pierda el punto de conversión del ciclo.

  6. Las ganancias y las pérdidas están limitadas a los puntos de parada, y no se puede seguir la tendencia indefinidamente.

Las medidas de gestión de riesgos correspondientes:

  1. Optimización de parámetros para adaptar la banda de Bryn a diferentes ciclos.

  2. La combinación de los otros indicadores se verificará para evitar errores.

  3. Bajar posiciones y controlar pérdidas individuales.

  4. Optimización de los puntos de parada para garantizar la rentabilidad.

  5. Reducir adecuadamente los ciclos y reducir los retrasos.

  6. El control del viento debe ser sólido, no se puede perseguir indefinidamente la caída.

Dirección de optimización

La estrategia puede ser optimizada en las siguientes direcciones:

  1. Optimización de los parámetros de las bandas de Bryn para un mejor seguimiento de los precios. Se pueden introducir parámetros de adaptación.

  2. Prueba diferentes promedios móviles, como EMA, DWMA, etc.

  3. Aumentar los filtros de tendencias para evitar el mal funcionamiento de los mercados de volatilidad.

  4. Aumentar la salida Exit para obtener más ganancias de tendencia. Se pueden considerar paradas pequeñas, paradas móviles, indicadores de salida, etc.

  5. La introducción de varios períodos de tiempo para combinar, con diferentes períodos adecuados para diferentes situaciones de mercado.

  6. Añadir la lógica de condiciones adicionales, como el aumento del volumen de transacciones, para evitar falsas rupturas.

  7. Se puede considerar la inversión de la banda de Brin, vender en la vía y comprar en la vía baja.

  8. Realizar pruebas de optimización de parámetros para encontrar la combinación óptima de parámetros.

Resumir

Esta estrategia tiene una idea general clara y una gran estabilidad. Al mismo tiempo, hay cierto margen de mejora, y puede ser una estrategia de comercio cuantitativa muy práctica a través de la optimización de parámetros, optimización de la lógica y gestión de riesgos. Esta estrategia proporciona una buena referencia de ideas para la estrategia de inicio de comercio cuantitativo.

Código Fuente de la Estrategia
/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 00:00:00
period: 1d
basePeriod: 1h
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/
// © noro

//@version=4
strategy(title = "Noro's Bands Strategy", shorttitle = "Bands", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, commission_value = 0.1)

//Sattings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
lotsize = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
len = input(20, defval = 20, minval = 1, maxval = 1000, title = "Length")
src = input(ohlc4, title = "Source")
showbb = input(true, title = "Show Bands")
showof = input(true, title = "Show Offset")
showbg = input(false, title = "Show Background")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//Distance
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd2 = center + distsma * 2
ld2 = center - distsma * 2

//Trend
trend = 0
trend := high > hd2 ? 1 : low < ld2 ? -1 : trend[1]
bgcol = showbg == false ? na : trend == 1 ? color.lime : color.red
bgcolor(bgcol, transp = 70)

//Lines
colo = showbb == false ? na : color.black
offset = showof ? 1 : 0
plot(hd2, color = colo, linewidth = 1, transp = 0, offset = offset, title = "High band 2")
plot(hd, color = colo, linewidth = 1, transp = 0, offset = offset, title = "High band 1")
plot(center, color = colo, linewidth = 1, transp = 0, offset = offset, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, offset = offset, title = "Low band 1")
plot(ld2, color = colo, linewidth = 1, transp = 0, offset = offset, title = "Low band 2")

//Trading
size = strategy.position_size
needstop = needlong == false or needshort == false
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * lotsize / 100 : lot[1]
if distsma > 0
    strategy.entry("Long", strategy.long, lot, stop = hd2, when = truetime and needlong)
    strategy.entry("Short", strategy.short, lot, stop = ld2, when = truetime and needshort)
sl = size > 0 ? ld2 : size < 0 ? hd2 : na
if size > 0 and needstop
    strategy.exit("Stop Long", "Long", stop = sl)
if size < 0 and needstop
    strategy.exit("Stop Short", "Short", stop = sl)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("Long")
    strategy.cancel("Short")