Estrategia de negociación de inversión cuantitativa rápida de doble vía

El autor:¿ Qué pasa?, Fecha: 2023-12-19 15:59:36
Las etiquetas:

img

Resumen general

Se trata de una estrategia de inversión de doble vía basada en el canal de precios, las bandas de Bollinger y el indicador RSI rápido. Combina el índice de canal para identificar tendencias, las bandas de Bollinger para reconocer los niveles de soporte y resistencia y el RSI rápido para detectar señales de sobrecompra y sobreventa, con el fin de lograr una inversión eficiente.

Estrategia lógica

La estrategia se basa principalmente en los siguientes indicadores para tomar decisiones comerciales:

  1. Canal de precios: Calcula el precio más alto y más bajo durante un cierto período y traza la línea central del canal.

  2. Bandas de Bollinger: La línea central es la línea central del canal de precios. Las bandas superior e inferior se calculan en función de la desviación estándar de la desviación del precio de la línea central. Las señales comerciales se generan cuando el precio interactúa con las bandas de Bollinger.

  3. RSI rápido (Período = 2): Determina situaciones de sobrecompra y sobreventa para el precio.

  4. Indicador de CryptoBottom: Determina si el precio ha roto el nivel de soporte. Combinado con RSI rápido para generar señales largas de alta probabilidad.

De acuerdo con el momento en que el precio rompe los canales y las bandas de Bollinger para realizar operaciones, y va largo o corto basado en las indicaciones de sobrecompra y sobreventa del RSI, se forma la lógica comercial central de esta estrategia.

Ventajas de la estrategia

Esta estrategia tiene las siguientes ventajas:

  1. El sistema de doble vía aumenta la precisión de la señal. El canal de precios juzga las principales tendencias y las bandas de Bollinger identifican niveles precisos de soporte y resistencia. La combinación mejora la calidad de la señal.

  2. El indicador RSI rápido captura oportunidades de reversión al detectar sobrecompra y sobreventa.

  3. CryptoBottom acelera la confirmación de señales largas.

  4. Configuración de parámetros razonables y fácil de optimizar.

Riesgos de la estrategia

También existen algunos riesgos para esta estrategia:

  1. Los parámetros incorrectos para las bandas de Bollinger pueden perder movimientos significativos de precios o generar señales falsas.

  2. Los patrones de interacción entre las pistas duales pueden ser complejos, requiriendo cierta sofisticación técnica para juicios precisos.

  3. El riesgo de reversiones fallidas sigue existiendo, ya que no se puede eliminar la probabilidad de que el precio se retire.

  4. Dificultad en la optimización de parámetros: los parámetros óptimos pueden volverse ineficaces si cambian las condiciones del mercado.

Direcciones de optimización

La estrategia puede mejorarse en los siguientes aspectos:

  1. Optimizar los parámetros de las bandas de Bollinger para acercar las bandas superior e inferior al precio, mejorando la precisión de las señales comerciales.

  2. Añadir mecanismos de stop loss para reducir las pérdidas cuando alcanzan ciertos porcentajes de umbral.

  3. Incorporar más indicadores para determinar los niveles de tendencia, soporte y resistencia para reducir las señales falsas.

  4. Introducir algoritmos de aprendizaje automático para ajustar automáticamente los parámetros para que puedan adaptarse a los entornos cambiantes del mercado.

Conclusión

Esta estrategia integra el canal de precios, las bandas de Bollinger y el indicador RSI rápido para construir un sistema de negociación de reversión de doble vía. Mientras juzga las principales tendencias, también aprovecha rápidamente el soporte, la resistencia y las oportunidades de sobrecompra / sobreventa.


/*backtest
start: 2022-12-18 00:00:00
end: 2023-11-30 05:20:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=2
strategy("Noro's Bands Strategy v1.3", shorttitle = "NoroBands str 1.3", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
color = input(true, "Use ColorBar")
usecb = input(true, "Use CryptoBottom")
usersi = input(true, "Use RSI")
needbb = input(false, defval = false, title = "Show Bands")
needbg = input(false, defval = false, title = "Show Background")
src = close

//Fast RSI
fastup = rma(max(change(src), 0), 2)
fastdown = rma(-min(change(src), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//CryptoBottom
mac = sma(close, 10)
lencb = abs(close - mac)
sma = sma(lencb, 100)
max = max(open, close)
min = min(open, close)

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

//dist
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma

//Trend
trend = close < ld and high < hd ? -1 : close > hd and low > ld ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Signals
up = trend == 1 and ((close < open or color == false) or close < hd) ? 1 : 0
dn = trend == -1 and ((close > open or color == false) or close > ld) ? 1 : 0 
up2 = close < open and lencb > sma * 3 and min < min[1] and fastrsi < 10 ? 1 : 0 //CryptoBottom
//dn2 = close > open and len > sma * 3 and max > max[1] and fastrsi > 90 ? 1 : 0 //CryptoBottom
up3 = fastrsi < 5 ? 1 : 0
//dn3 = fastrsi > 99 ? 1 : 0

longCondition = up == 1 or (up2 == 1 and usecb == true) or (up3 == 1 and usersi == true)
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)

Más.