Estrategia de cuadrícula rectangular RSI dinámica


Fecha de creación: 2023-10-30 11:29:30 Última modificación: 2023-10-30 11:29:30
Copiar: 0 Número de Visitas: 1022
1
Seguir
1617
Seguidores

Estrategia de cuadrícula rectangular RSI dinámica

Descripción general

La estrategia es una estrategia similar a la de Grid Bot, que se utiliza principalmente para operaciones algorítmicas. Utiliza una grilla de Grid dinámica, de intervalos no equivalentes, calculada en base al volumen de las operaciones, y la actualiza solo cuando el RSI cumple con ciertas condiciones. También tiene características de transacción de ruptura, a diferencia de la de Grid Bot común (el Grid Bot típico se vende cuando se alcanza la línea de la red más alta, mientras que esta estrategia se vende cuando se cae la línea de la red más baja bajo ciertas condiciones).

En pocas palabras, la estrategia actualiza la cuadrícula a un precio máximo/mínimo basado en el volumen de transacciones calculado en la fuente de datos que se le ha dado (“src” en la configuración) cada vez que el RSI atraviesa la línea de la señal de compra/venta. Se generan 5 líneas equidistantes en función de este intervalo y se utiliza la fuente de datos actual para determinar cuál es la fuente de datos más cercana.

Puede configurar en la configuración si hay un vacío, la fuente de datos, la longitud del ciclo RSI y la línea de sobreventa.

Principio de estrategia

La lógica central de esta estrategia es la siguiente:

  1. Utiliza el indicador RSI para determinar el punto de reversión de la tendencia, con la línea RSI que atraviesa la zona de sobrecompra o la zona de sobreventa como señal de confirmación.

  2. Cuando se produce la señal de confirmación del RSI, se registran los precios más altos y más bajos de un período determinado y se establece como el límite inferior de la red.

  3. Los precios se dividen en cinco líneas de la red según el límite superior y inferior, y se determina en tiempo real cuál de ellas está más cerca de la línea de la red.

  4. Cuando el precio se rompe la línea de la red por encima de la línea, hacer más entrada; Cuando el precio se cae por debajo de la línea de la red, la posición de salida de la entrada de la posición en blanco.

  5. El uso de la forma de romper la grilla, en lugar de la forma común de Grid Bot que toca la grilla, puede capturar mejor las rupturas de tendencia.

  6. Al cierre de la jornada de negociación, liquidar todas las órdenes de la pirámide para evitar el riesgo durante la noche.

La estrategia se compone principalmente de las siguientes partes:

  1. Configuración de los parámetros de entrada: incluye la fuente de datos, los parámetros RSI, la opción de hacer más vacío, etc.

  2. Calculación del RSI: Calcula el RSI y determina si hay una señal de cruce.

  3. Configuración de la cuadrícula dinámica: registra el rango de precios y calcula la línea de la cuadrícula cuando se produce la señal RSI.

  4. Determinación de la señal: detección de si el precio ha roto la red y desconectado, y determinación de si se ha hecho más señal de vacío.

  5. Gestión de pedidos: Emite señales de más de la brecha y las órdenes de la pirámide de liquidación antes del cierre.

  6. Interfaz de dibujo: mostrar líneas de cuadrícula, hacer más áreas de vacío, etc.

A través de la actualización dinámica de la grilla, junto con la determinación de tendencias y las señales de ruptura del indicador RSI, la estrategia permite un seguimiento eficaz de la tendencia y un ajuste oportuno de la dirección en caso de reversión. La liquidación antes del cierre puede controlar eficazmente el riesgo durante la noche.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas principales:

  1. Las redes dinámicas pueden adaptarse a las tendencias, y son más flexibles que las redes fijas.

  2. Solo se puede ajustar la grilla cuando el RSI confirma la reversión de la tendencia y se puede filtrar parte de la señal de ruido.

  3. El uso de señales de ruptura en lugar de solo señales de tacto permite capturar con mayor precisión los puntos de cambio de tendencia.

  4. Si se cancela toda la posición antes del cierre, se evita el riesgo de una gran fluctuación durante la noche y se protege la ganancia.

  5. El indicador RSI es un buen indicador de sobrecompra y sobreventa, combinado con una red dinámica.

  6. La adopción de la modalidad de ruptura en lugar de la modalidad de retroceso, permite una mejor oportunidad de entrada en el inicio de la tendencia.

  7. El ajuste del intervalo de la grilla y la proporción de volumen de transacciones permite la flexibilidad para ajustar el riesgo-beneficio de la estrategia.

  8. La interfaz gráfica muestra de forma intuitiva la distribución de la cuadrícula y las zonas de vacío.

  9. Se puede elegir si se abre o se cierra la posición libre para satisfacer las necesidades de los diferentes operadores.

  10. Las reglas son sencillas, claras, fáciles de entender, adecuadas para el comercio algorítmico.

Estas ventajas permiten que la estrategia siga automáticamente las tendencias y, al mismo tiempo, controle el riesgo, lo que la convierte en una aplicación práctica para el comercio cuantitativo.

Análisis de riesgos

La estrategia también tiene algunos riesgos potenciales a tener en cuenta:

  1. En una tendencia de gran movimiento, puede haber riesgo de pérdidas. Se puede relajar adecuadamente el rango de pérdidas o suspender la estrategia durante el movimiento.

  2. Puede haber un gran salto nocturno, lo que lleva a una mayor apertura de posiciones. Para evitar este riesgo, se puede considerar reducir la proporción de posiciones.

  3. La configuración inadecuada de los parámetros puede causar frecuencias de transacciones o señales erróneas. Se debe probar cuidadosamente los parámetros de optimización.

  4. Cuando las comisiones son más altas, las ganancias de las transacciones en la red pueden ser consumidas repetidamente. Se debe ajustar el número de transacciones o elegir intercambios con tarifas más bajas.

  5. La señal de ruptura puede aparecer un poco más tarde que el punto de reversión de la tendencia, por lo que es necesario configurar razonablemente la amplitud de la ruptura.

  6. Esta estrategia puede tener un mal desempeño durante la fase de subida de la bolsa. Puede considerarse su uso en combinación con otros indicadores.

  7. Se requiere suficiente capital para apoyar las posiciones más grandes y las posiciones de la pirámide, de lo contrario no son efectivas. Se debe ajustar la posición según la cantidad de capital.

Respuesta:

  1. Optimización de parámetros, reducción de la frecuencia de las transacciones y prevención de las transacciones excesivas.

  2. La combinación de indicadores de tendencias evita el comercio en períodos de crisis.

  3. Ajustar posiciones, reducir el porcentaje de transacciones individuales y controlar el riesgo.

  4. Prueba de diferentes parámetros de amplitud de ruptura, equilibrando la puntualidad y la estabilidad.

  5. Se puede considerar la combinación con otros indicadores para aprovechar más información del mercado.

  6. Aumentar la cantidad de capital, ampliar el tamaño de las posiciones y aumentar el espacio de ganancias.

A través de métodos como la optimización de parámetros, la gestión de riesgos y la combinación con otras estrategias, se puede reducir el riesgo de la estrategia en cierta medida, lo que permite un funcionamiento estable.

Dirección de optimización

La estrategia puede ser mejorada en los siguientes aspectos:

  1. Optimizar los parámetros del RSI, probar diferentes longitudes de ciclo del RSI y buscar la combinación óptima de parámetros.

  2. Pruebe diferentes configuraciones de la distancia entre las grillas para encontrar la grilla con la mejor relación beneficio-riesgo.

  3. Intenta combinar las señales de filtración con otros indicadores, como MACD, KD, etc., para mejorar la precisión.

  4. Desarrollar estrategias de stop loss adaptativas y ajustar dinámicamente el stop loss según la volatilidad del mercado.

  5. Aumentar las condiciones para abrir posiciones, solo cuando la tendencia sea lo suficientemente clara, para evitar ser atrapado.

  6. Optimización de la retrospectiva, prueba de datos durante un período de tiempo más largo y evaluación de la estabilidad de los parámetros.

  7. La estrategia se adapta a los diferentes entornos del mercado mediante la optimización de parámetros dinámicos basados en el aprendizaje automático.

  8. Explorar estrategias combinadas con opciones para cubrir el riesgo de las posiciones de las opciones.

  9. Ajuste los parámetros de optimización de la estrategia de acuerdo con las características de la situación actual y mantenga la eficacia de la estrategia.

  10. Desarrollo de una plataforma de optimización de estrategias gráficas para ayudar a las pruebas de optimización rápida.

A través de la optimización de parámetros automatizados, combinación de estrategias e introducción de más información de mercado, la estrategia puede obtener una mejor estabilidad y rentabilidad para convertirse en una estrategia de comercio cuantitativa realmente confiable.

Resumir

En general, la estrategia de la rejilla rectangular RSI utiliza el indicador RSI para determinar la señal de confirmación de reversión de la tendencia, establecer una grilla dinámica del rango de precios, operar al romper la línea de la rejilla y cerrar completamente la posición durante el día, formando una estrategia de negociación de algoritmos de seguimiento de tendencias flexible. En comparación con la estrategia de la rejilla fija, puede adaptarse mejor a los cambios en el mercado.

Esta estrategia tiene ciertas ventajas, incluyendo la combinación de RSI para juzgar la tendencia, la adaptación de la red dinámica, la negociación de patrones de ruptura y la posición cerrada durante el día. Esto le permite seguir la tendencia de manera efectiva y controlar el riesgo. Sin embargo, la estrategia también tiene algunos riesgos potenciales que deben tenerse en cuenta, como el riesgo de pérdida de parada en la tendencia de la oscilación, el riesgo de volar durante la noche, etc.

La estrategia también tiene muchas direcciones de optimización, que se pueden optimizar en una estrategia de trading algorítmica más estable y con mayores ganancias mediante la introducción de más indicadores, parámetros de optimización de aprendizaje automático y plataformas de retroalimentación gráfica. En general, la estrategia proporciona un marco de algoritmos de seguimiento de tendencias fiables y fáciles de operar para el comercio cuantitativo.

Código Fuente de la Estrategia
/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 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/
// © wbburgin

//@version=5
// strategy("RSI Box Strategy (pseudo-Grid Bot)", overlay=true, initial_capital = 10000, 
//  default_qty_type = strategy.percent_of_equity, default_qty_value = 1, pyramiding = 33, commission_value=0.10)

src = input.source(close,"Source")
rsiLength = input.int(14,"RSI Length")
oblvl = input.int(70,"Overbought Level")
oslvl = input.int(30,"Oversold Level")
useShorts = input.bool(false,"Use Shorts",inline="B")
showGrid = input.bool(false,"Show Grid",inline="B")

rsi = ta.rsi(src,rsiLength)

rsi_crossdn = ta.crossunder(rsi,oblvl)
rsi_crossup = ta.crossover(rsi,oslvl)

highest = ta.vwma(ta.highest(src,rsiLength),rsiLength)
lowest = ta.vwma(ta.lowest(src,rsiLength), rsiLength)

gridTop = ta.valuewhen(rsi_crossdn,highest,0)
gridBottom = ta.valuewhen(rsi_crossup,lowest,0)
gridMiddle = math.avg(gridTop,gridBottom)
gridMidTop = math.avg(gridMiddle,gridTop)
gridMidBottom = math.avg(gridMiddle,gridBottom)

diff1 = math.abs(src - gridTop)
diff2 = math.abs(src - gridBottom)
diff3 = math.abs(src - gridMiddle)
diff4 = math.abs(src - gridMidTop)
diff5 = math.abs(src - gridMidBottom)

minDiff = math.min(diff1, diff2, diff3, diff4, diff5)

// Determine which line is the closest
float closestLine = na
if minDiff == diff1
    closestLine := gridTop
else if minDiff == diff2
    closestLine := gridBottom
else if minDiff == diff3
    closestLine := gridMiddle
else if minDiff == diff4
    closestLine := gridMidTop
else if minDiff == diff5
    closestLine := gridMidBottom

buyCrosses = ta.crossover(src,gridTop) or ta.crossover(src,gridBottom) or ta.crossover(src,gridMiddle) or ta.crossover(src,gridMidTop) or ta.crossover(src,gridMidBottom)
sellCrosses= ta.crossunder(src,gridTop) or ta.crossunder(src,gridBottom) or ta.crossunder(src,gridMiddle) or ta.crossunder(src,gridMidTop) or ta.crossunder(src,gridMidBottom)

condition_bull = buyCrosses
condition_bear = sellCrosses

var float bull_status_line = na
var float bear_status_line = na
var float bull_buy_line = na
var float bear_sell_line = na

if condition_bull
    bull_status_line := closestLine
if condition_bear
    bear_status_line := closestLine

if bull_status_line == gridBottom
    bull_buy_line := gridMidBottom
if bull_status_line == gridMidBottom
    bull_buy_line := gridMiddle
if bull_status_line == gridMiddle
    bull_buy_line := gridMidTop
if bull_status_line == gridMidTop
    bull_buy_line := gridTop

if bear_status_line == gridTop
    bear_sell_line := gridMidTop
if bear_status_line == gridMidTop
    bear_sell_line := gridMiddle
if bear_status_line == gridMiddle
    bear_sell_line := gridMidBottom
if bear_status_line == gridMidBottom
    bear_sell_line := gridBottom

l = ta.crossover(src,bull_buy_line)
s = ta.crossunder(src,bear_sell_line)

if l
    strategy.entry("Long",strategy.long)
if s
    strategy.close("Long")
    if useShorts
        strategy.entry("Short",strategy.short)

// Plotting
in_buy = ta.barssince(l) < ta.barssince(s)
u=plot(bull_buy_line,color=na,title="Buy Plot")
d=plot(bear_sell_line,color=na,title="Sell Plot")

plot(not showGrid?na:gridBottom,color=color.new(color.white,75),title="Grid Line -2")
plot(not showGrid?na:gridMidBottom,color=color.new(color.white,75),title="Grid Line -1")
plot(not showGrid?na:gridMiddle,color=color.new(color.white,75),title="Grid Line 0")
plot(not showGrid?na:gridMidTop,color=color.new(color.white,75),title="Grid Line 1")
plot(not showGrid?na:gridTop,color=color.new(color.white,75),title="Grid Line 2")


fill(u,d,color=in_buy ? color.new(color.lime,75) : color.new(color.red,75))