Estrategia de trading cuantitativo con indicador RSI de doble BB


Fecha de creación: 2024-01-29 10:33:43 Última modificación: 2024-01-29 10:33:43
Copiar: 0 Número de Visitas: 785
1
Seguir
1617
Seguidores

Estrategia de trading cuantitativo con indicador RSI de doble BB

Descripción general

Esta estrategia es una estrategia de comercio cuantitativa basada en el indicador de Bollinger Bands y el indicador de fuerza relativa (RSI). La estrategia utiliza métodos de aprendizaje automático para optimizar el análisis de datos históricos de casi un año a través del lenguaje Python para encontrar la combinación óptima de parámetros.

Principio de estrategia

Las señales de negociación de esta estrategia se derivan de un juicio combinado de las dos bandas de Bollinger y el indicador RSI. Donde, el indicador Bollinger Bands es un canal de fluctuación calculado en función del ancho de banda estándar del precio. Se produce una señal de negociación cuando el precio se acerca o toca el canal de fluctuación.

Concretamente, la estrategia genera una señal de compra cuando el precio de cierre está por debajo de la brecha estándar de 1.0 y el RSI es mayor que 42. Además, la estrategia establece dos grupos de parámetros de BB y RSI para las posiciones de entrada y parada de pérdidas, respectivamente. Estos parámetros son los mejores obtenidos a través de una gran cantidad de retroalimentación y aprendizaje automático.

Análisis de las ventajas

La mayor ventaja de esta estrategia es la precisión de los parámetros. A través de métodos de aprendizaje automático, cada parámetro se obtiene la mejor proporción de Sharpe a través de una revisión exhaustiva. Esto asegura tanto la rentabilidad de la estrategia como el control del riesgo. Además, la combinación de dos indicadores mejora la precisión y la tasa de éxito de la señal.

Análisis de riesgos

El riesgo de esta estrategia proviene principalmente de la configuración del punto de parada. Si el punto de parada se configura demasiado grande, no se puede controlar eficazmente la pérdida. Además, el riesgo aumenta si el punto de parada se calcula incorrectamente con otros costos de transacción, como comisiones y puntos de deslizamiento de la transacción. Para reducir el riesgo, se recomienda ajustar los parámetros de la amplitud de parada, reducir la frecuencia de las operaciones y calcular al mismo tiempo una posición de parada razonable.

Dirección de optimización

La estrategia tiene espacio para ser optimizada aún más. Por ejemplo, se puede intentar cambiar los parámetros de longitud de las Bandas de Bollinger o ajustar el umbral de sobrecompra sobreventa del RSI. Además, se puede intentar introducir otros indicadores y construir una combinación de varios indicadores.

Resumir

La estrategia combina el indicador doble BB y el indicador RSI, obtiene los mejores parámetros mediante métodos de aprendizaje automático, logra una alta rentabilidad y un nivel de riesgo controlable. Tiene ventajas tanto en el juicio de la combinación de indicadores como en la optimización de los parámetros. Con la mejora continua, esta estrategia tiene el potencial de ser una excelente estrategia de comercio cuantitativa.

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

// @version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Bunghole 2020
strategy(overlay=true, shorttitle="Flawless Victory Strategy" )

// Stoploss and Profits Inputs
v1 = input(true, title="Version 1 - Doesn't Use SL/TP")
v2 = input(false, title="Version 2 - Uses SL/TP")
stoploss_input = input(6.604, title='Stop Loss %', type=input.float, minval=0.01)/100
takeprofit_input = input(2.328, title='Take Profit %', type=input.float, minval=0.01)/100
stoploss_level = strategy.position_avg_price * (1 - stoploss_input)
takeprofit_level = strategy.position_avg_price * (1 + takeprofit_input)

//SL & TP Chart Plots
plot(v2 and stoploss_input and stoploss_level ? stoploss_level: na, color=color.red, style=plot.style_linebr, linewidth=2, title="Stoploss")
plot(v2 and takeprofit_input ? takeprofit_level: na, color=color.green, style=plot.style_linebr, linewidth=2, title="Profit")

// Bollinger Bands 1
length = 20
src1 = close
mult = 1.0
basis = sma(src1, length)
dev = mult * stdev(src1, length)
upper = basis + dev
lower = basis - dev

// Bollinger Bands 2
length2 = 17
src2 = close
mult2 = 1.0
basis2 = sma(src1, length2)
dev2 = mult2 * stdev(src2, length2)
upper2 = basis2 + dev2
lower2 = basis2 - dev2

// RSI
len = 14
src = close
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - 100 / (1 + up / down)

// Strategy Parameters
RSILL= 42
RSIUL= 70
RSILL2= 42
RSIUL2= 76

rsiBuySignal = rsi > RSILL
rsiSellSignal = rsi > RSIUL
rsiBuySignal2 = rsi > RSILL2
rsiSellSignal2 = rsi > RSIUL2

BBBuySignal = src < lower
BBSellSignal = src > upper
BBBuySignal2 = src2 < lower2
BBSellSignal2 = src2 > upper2

// Strategy Long Signals
Buy = rsiBuySignal and BBBuySignal
Sell = rsiSellSignal and BBSellSignal
Buy2 = rsiBuySignal2 and BBBuySignal2
Sell2 = rsiSellSignal2 and BBSellSignal2

if v1 == true
    strategy.entry("Long", strategy.long, when = Buy, alert_message = "v1 - Buy Signal!")
    strategy.close("Long", when = Sell, alert_message = "v1 - Sell Signal!")

if v2 == true
    strategy.entry("Long", strategy.long, when = Buy2, alert_message = "v2 - Buy Signal!")
    strategy.close("Long", when = Sell2, alert_message = "v2 - Sell Signal!")
    strategy.exit("Stoploss/TP", "Long", stop = stoploss_level, limit = takeprofit_level)