Estrategia de desestabilización basada en el indicador de porcentaje de bandas de Bollinger


Fecha de creación: 2023-12-06 14:43:39 Última modificación: 2023-12-06 14:43:39
Copiar: 0 Número de Visitas: 651
1
Seguir
1619
Seguidores

Estrategia de desestabilización basada en el indicador de porcentaje de bandas de Bollinger

Descripción general

La estrategia se basa en el indicador de porcentaje de la banda de Brin en combinación con los indicadores RSI y MFI, mediante la detección de precios de productos financieros que rompen la banda de Brin y se mueven hacia abajo, en combinación con las señales de RSI de sobreventa y MFI de sobreventa y sobreventa, para tomar más decisiones de desventaja. Es una estrategia de negociación de tendencia típica.

Principio de estrategia

  1. Calcula el porcentaje de la banda de Brin ((BB%) BB% indica la diferencia estándar de precios con respecto a la banda de Brin en el medio, y la dirección del mercado se determina a través de la banda de Brin.
  2. Combinación de los indicadores RSI y MFI para determinar la sobrecompra y la sobreventa. El RSI determina la sobrecompra y la sobreventa comparando el aumento promedio y la caída promedio en un período de tiempo. Las MFI determinan la sobrecompra y la sobreventa comparando el aumento y la caída del volumen de operaciones.
  3. Haga más cuando el precio rompa la banda de Brin desde abajo hacia arriba; haga un vacío cuando el precio rompa la banda de Brin desde arriba hacia abajo hacia arriba. Al mismo tiempo, filtre las señales de sobreventa y sobrecompra combinadas con los indicadores RSI y MFI.

Ventajas estratégicas

  1. En la actualidad, los inversores de la Bolsa de Valores de Japón (BVH) están en la fase de negociación de tendencias, evitando las tendencias del mercado y reduciendo la volatilidad de los ingresos.
  2. La combinación de varios indicadores de filtración de señales para mejorar la precisión de la toma de decisiones.
  3. La configuración de parámetros es flexible y se puede ajustar la estrategia de riesgo-beneficio.
  4. Se aplica a indicadores de alta volatilidad como las mercancías, divisas y criptomonedas.

Riesgos y soluciones

  1. La brecha de la banda de Bryn tiene una probabilidad mayor de generar falsas señales y requiere un filtro de combinaciones de indicadores.
  2. El juicio de las señales de ruptura requiere la debida flexibilidad para evitar perder buenas oportunidades.
  3. Ajustar los parámetros de configuración para controlar el riesgo, como ajustar el tamaño de la posición, aumentar la línea de stop loss, etc.

Dirección de optimización

  1. Aumentar los mecanismos de pérdidas basados en la volatilidad, como el indicador ATR.
  2. Introducción de modelos de aprendizaje automático para ayudar a determinar la calidad de la señal de ruptura.
  3. Optimizar el mecanismo de selección de la variedad de participación y ajustar dinámicamente los criterios de participación.
  4. El sistema de toma de decisiones se perfecciona mediante la combinación de más factores, como indicadores de sentimiento y noticias.

Resumir

La estrategia se aplica principalmente a las variedades no tendenciales de alta volatilidad, y el comercio de tendencia se logra a través de la combinación de los canales de la banda de Bryn con los indicadores. Se puede controlar el riesgo de las características de ganancias mediante el ajuste de los parámetros. Posteriormente, se pueden introducir más indicadores auxiliares y modelos para optimizar la calidad de las decisiones, lo que permite un mejor rendimiento de la estrategia.

Código Fuente de la Estrategia
/*backtest
start: 2023-11-05 00:00:00
end: 2023-12-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "BB%/MFI/RSI", shorttitle = "BB%/MFI/RSI", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 100)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(false, defval = false, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
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")

source = hlc3
length = input(14, minval=1), mult = input(2.0, minval=0.001, maxval=50), bblength = input(50, minval=1, title="BB Period")
DrawRSI_f=input(true, title="Draw RSI?", type=bool)
DrawMFI_f=input(false, title="Draw MFI?", type=bool)
HighlightBreaches=input(true, title="Highlight Oversold/Overbought?", type=bool)

DrawMFI = (not DrawMFI_f) and (not DrawRSI_f) ? true : DrawMFI_f
DrawRSI = (DrawMFI_f and DrawRSI_f) ? false : DrawRSI_f
// RSI
rsi_s = DrawRSI ? rsi(source, length) : na
plot(DrawRSI ? rsi_s : na, color=maroon, linewidth=2)

// MFI
upper_s = DrawMFI ? sum(volume * (change(source) <= 0 ? 0 : source), length) : na
lower_s = DrawMFI ? sum(volume * (change(source) >= 0 ? 0 : source), length) : na
mf = DrawMFI ? rsi(upper_s, lower_s) : na
plot(DrawMFI ? mf : na, color=green, linewidth=2)

// Draw BB on indices
bb_s = DrawRSI ? rsi_s : DrawMFI ? mf : na
basis = sma(bb_s, length)
dev = mult * stdev(bb_s, bblength)
upper = basis + dev
lower = basis - dev
plot(basis, color=red)
p1 = plot(upper, color=blue)
p2 = plot(lower, color=blue)
fill(p1,p2, blue)

b_color = (bb_s > upper) ? red : (bb_s < lower) ? lime : na
bgcolor(HighlightBreaches ? b_color : na, transp = 0)

//Signals
up = bb_s < lower and close < open
dn = bb_s > upper and close > open
size = strategy.position_size
lp = size > 0 and close > open
sp = size < 0 and close < open
exit = (up == false and dn == false) and (lp or sp)

//Trading
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()