Estrategia de negociación cuantitativa de victoria impecable basada en indicadores de doble BB y RSI

El autor:¿ Qué pasa?, Fecha: 2024-01-29 10:33:43
Las etiquetas:

img

Resumen general

Esta estrategia es una estrategia de negociación cuantitativa basada en el indicador Bollinger Bands y el indicador Relative Strength Index (RSI). Esta estrategia utiliza métodos de aprendizaje automático para probar y optimizar parámetros durante casi 1 año de datos históricos utilizando el lenguaje Python, encontrando la combinación óptima de parámetros.

Principios de estrategia

Las señales comerciales de esta estrategia provienen del juicio combinado de dos bandas de Bollinger e indicadores RSI. Entre ellos, el indicador de bandas de Bollinger es el canal de volatilidad calculado en función de la desviación estándar del precio. Genera señales comerciales cuando el precio se acerca o toca el canal. El indicador RSI juzga la situación de sobrecompra y sobreventa del precio.

Específicamente, una señal de compra se genera cuando el precio de cierre está por debajo del rieles inferior de 1.0 desviaciones estándar y el RSI es mayor que 42 al mismo tiempo. Una señal de venta se genera cuando el precio de cierre está por encima del rieles superior de 1.0 desviaciones estándar y el RSI es mayor que 70 al mismo tiempo. Además, esta estrategia también establece dos conjuntos de parámetros BB y RSI, que se utilizan para las posiciones de cierre de entrada y stop loss respectivamente. Estos parámetros son valores óptimos obtenidos a través de extensa backtesting y aprendizaje automático.

Análisis de ventajas

La mayor ventaja de esta estrategia es la precisión de los parámetros. A través de los métodos de aprendizaje automático, cada parámetro se obtiene a través de pruebas de retroceso integrales para lograr la mejor relación Sharpe. Esto garantiza tanto la tasa de retorno de la estrategia como los riesgos de control. Además, la combinación de indicadores dobles también mejora la precisión y la tasa de ganancia de las señales.

Análisis de riesgos

El principal riesgo de esta estrategia proviene del establecimiento de puntos de stop loss. Si el punto de stop loss se establece demasiado grande, no controlará eficazmente las pérdidas. Además, si el punto de stop loss no calcula adecuadamente otros costos de negociación como comisiones y deslizamiento, también aumentará los riesgos. Para reducir los riesgos, se recomienda ajustar el parámetro de magnitud de stop loss para reducir la frecuencia de negociación, mientras se calcula una posición de stop loss razonable.

Direcciones de optimización

Por ejemplo, puede intentar cambiar los parámetros de longitud de las bandas de Bollinger, o ajustar los umbrales de sobrecompra y sobreventa del RSI. También puede intentar introducir otros indicadores para construir una combinación de múltiples indicadores. Esto puede aumentar el espacio de ganancia y la estabilidad de la estrategia.

Resumen de las actividades

Esta estrategia combina indicadores dobles de BB e indicadores de RSI, y obtiene parámetros óptimos a través de métodos de aprendizaje automático para lograr altos rendimientos y niveles de riesgo controlables. Tiene las ventajas de un juicio combinado de indicadores y optimización de parámetros. Con una mejora continua, esta estrategia tiene el potencial de convertirse en una excelente estrategia comercial cuantitativa.


/*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)


Más.