Estrategia de trading de bandas de Bollinger con ruptura de impulso


Fecha de creación: 2024-02-05 10:53:46 Última modificación: 2024-02-05 10:53:46
Copiar: 0 Número de Visitas: 699
1
Seguir
1617
Seguidores

Estrategia de trading de bandas de Bollinger con ruptura de impulso

Descripción general

Esta estrategia combina el indicador de la banda de Brin y el indicador de volumen de transacciones para identificar oportunidades fuertes de romper la banda de Brin en un entorno de alto volumen de transacciones y realizar operaciones de compra y venta. Al mismo tiempo, combina el indicador de la media móvil para determinar la dirección de la tendencia y reducir el riesgo de posiciones muertas.

Principio de estrategia

  1. Utiliza el indicador de la banda de Brin para determinar si el precio ha roto la banda de Brin.
  2. Utilice el indicador de volumen de transacciones para determinar si el volumen de transacciones en curso es significativamente mayor que el promedio de transacciones en el pasado.
  3. En el caso de que el volumen de operaciones sea activo y el precio rompa el Brin y se ponga en marcha, se realizarán operaciones de compra y venta.
  4. Utiliza un indicador de media móvil para determinar tendencias a corto y medio plazo y para cerrar las pérdidas de posición a tiempo cuando la tendencia es negativa.

La estrategia tiene en cuenta tres factores: el precio, la dinámica y la tendencia. Cuando el precio se rompe con el Brin y entra en la zona de compra, una gran cantidad de capital entra en la zona de compra, lo que provoca una explosión de volumen de operaciones, lo que indica que hay un fuerte apoyo y energía de la tendencia.

Ventajas estratégicas

  1. Las señales de negociación son precisas y evitan falsas rupturas. En combinación con los indicadores de volumen de negociación, compra solo en situaciones de verdadera fuerza, reduciendo el riesgo de posición.

  2. Los promedios móviles pueden ayudar a determinar la dirección de la tendencia y reducir la pérdida de la posición vacía.

  3. La implementación de una estrategia cuantitativa para la toma de decisiones que integra varios indicadores, los parámetros se pueden ajustar con flexibilidad para adaptarse a diferentes variedades y períodos.

  4. La estructura del código es clara y aumenta la legibilidad de la estrategia. Los módulos organizados en indicadores, señales de negociación, lógica de apertura de posición, etc., son fáciles de mantener en el futuro.

Riesgo estratégico

  1. Las bandas de Brin, como indicadores de rango de fluctuación, pueden fallar en casos extremos. Si se produce una fluctuación anormal, se perderá la señal de compra o se producirá una señal falsa.

  2. Cuando el volumen de transacciones es insuficiente, la estrategia no puede obtener ganancias. Si el volumen de transacciones en el mercado en general es insuficiente, incluso generar una señal de compra es difícil de ganar.

  3. Las medias móviles también pueden ser ineficaces como indicadores de tendencias, y no pueden garantizar completamente el stop loss.

  4. La configuración inadecuada de los parámetros también puede afectar los beneficios de la estrategia. Por ejemplo, la ventana de tiempo de negociación se establece demasiado corta, se pierde la reversión de la tendencia, etc.

Dirección de optimización de la estrategia

  1. Se puede considerar la inclusión de más indicadores técnicos para juzgar tendencias, apoyar puntos de resistencia, mejorar el efecto de deterioro, como la forma de la línea K, indicadores de canales, puntos de soporte clave, etc.

  2. Aumentar la probabilidad de que los modelos de aprendizaje automático juzguen las brechas reales y reducir la tasa de señales falsas. Modelos de aprendizaje profundo como LSTM.

  3. Optimización de las estrategias de gestión de fondos, como el ajuste dinámico de las posiciones, el seguimiento de las líneas de stop loss, etc.

  4. Pruebe más variedades y parámetros de ciclo de tiempo. Ajuste los parámetros de la banda de Bryn, los parámetros de volumen de transacción, etc., para optimizar la estrategia de adaptación al mercado.

Resumir

La estrategia integra el indicador de la banda de Brin y el indicador de volumen de transacciones para identificar el momento de comprar en condiciones de fuerza. Al mismo tiempo, utiliza el indicador de promedios móviles para juzgar la tendencia y detener los pérdidas a tiempo.

Código Fuente de la Estrategia
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 1h
basePeriod: 15m
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/
// © KAIST291

//@version=4
initial_capital=1000
strategy("prototype", overlay=true)
length1=input(1)
length3=input(3)
length7=input(7)
length9=input(9)
length14=input(14)
length20=input(20)
length60=input(60)
length120=input(120)
ma1= sma(close,length1)
ma3= sma(close,length3)
ma7= sma(close,length7)
ma9= sma(close,length9)
ma14=sma(close,length14)
ma20=sma(close,length20)
ma60=sma(close,length60)
ma120=sma(close,length120)
rsi=rsi(close,14)
// BUYING VOLUME AND SELLING VOLUME //
BV = iff( (high==low), 0, volume*(close-low)/(high-low))
SV = iff( (high==low), 0, volume*(high-close)/(high-low))
vol = iff(volume > 0, volume, 1)
dailyLength = input(title = "Daily MA length", type = input.integer, defval = 50, minval = 1, maxval = 100)
weeklyLength = input(title = "Weekly MA length", type = input.integer, defval = 10, minval = 1, maxval = 100)
//-----------------------------------------------------------
Davgvol = sma(volume, dailyLength)
Wavgvol = sma(volume, weeklyLength)
//-----------------------------------------------------------
length = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
mult2= input(1.5, minval=0.001, maxval=50, title="exp")
mult3= input(1.0, minval=0.001, maxval=50, title="exp1")
mult4= input(2.5, minval=0.001, maxval=50, title="exp2")
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
dev2= mult2 * stdev(src, length)
Supper= basis + dev2
Slower= basis - dev2
dev3= mult3 * stdev(src, length)
upper1= basis + dev3
lower1= basis - dev3
dev4= mult4 * stdev(src, length)
upper2=basis + dev4
lower2=basis - dev4
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))
//----------------------------------------------------
exit=(close-strategy.position_avg_price / strategy.position_avg_price*100)
bull=( BV>SV and BV>Davgvol)
bull2=(BV>SV and BV>Davgvol)
bux =(close>Supper and close>Slower and volume<Davgvol)
bear=(SV>BV and SV>Davgvol)
con=(BV>Wavgvol and rsi>80)
imInATrade = strategy.position_size != 0
highestPriceAfterEntry = valuewhen(imInATrade, high, 0)
// STRATEGY LONG //
if (bull and close>upper1 and close>Supper and high>upper and rsi<80)
    strategy.entry("Long",strategy.long)

if (strategy.position_avg_price*1.02<close)
    strategy.close("Long")
else if (low<ma9 and strategy.position_avg_price<close)
    strategy.close("Long")
else if (ma20>close and strategy.position_avg_price<close )
    strategy.close("Long")
else if (rsi>80 and strategy.position_avg_price<close)
    strategy.close("Long")
else if (strategy.openprofit < strategy.position_avg_price*0.9-close)
    strategy.close("Long")
else if (high<upper and strategy.position_avg_price<close)
    strategy.close("Long")
//////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////
strategy.entry("Short",strategy.short,when=low<ma20 and low<lower1 and close<Slower and crossunder(ma60,ma120))

if (close<strategy.position_avg_price*0.98)
    strategy.close("Short")

else if (rsi<20)
    strategy.close("Short")