El valor de las operaciones de mercado de los instrumentos financieros de inversión se calculará en función de las operaciones de inversión de los instrumentos financieros de inversión.

El autor:¿ Qué pasa?, Fecha: 2023-09-18 14:07:51
Las etiquetas:

Resumen general

Esta estrategia combina las bandas de Bollinger y el indicador del índice de fuerza relativa (RSI) para predecir la volatilidad de los precios y determinar los puntos de entrada óptimos. La lógica es sencilla: observamos los precios de cierre que tocan la banda inferior de Bollinger, después de lo cual hay dos escenarios posibles: o bien el precio rebota de nuevo desde la banda inferior de Bollinger, o continúa cayendo. Para confirmar el movimiento del precio, usamos un segundo indicador, el RSI, para investigar más la tendencia. Por ejemplo, si el precio alcanza la banda inferior de Bollinger pero el valor del RSI no está en territorio de sobreventa, podemos concluir que el precio continuará bajando. Si el valor del RSI está sobreventa, podemos usar esta área como nuestro punto de entrada.

Un stop loss es necesario para evitar la pérdida de demasiado capital si el RSI permanece demasiado tiempo en territorio de sobreventa.

El mejor área de toma de ganancias es cuando el precio se rebota por encima de la banda media/banda superior de Bollinger o cuando el RSI alcanza niveles de sobrecompra, lo que ocurra primero.

Entrada larga:

RSI < 30 y precio de cierre < banda inferior de Bollinger

Salida larga:

Indicador de rentabilidad

Estrategia lógica

La estrategia primero calcula el indicador RSI y establece los límites superior/inferior para determinar los niveles de sobrecompra/sobreventa. Luego calcula las bandas media, superior e inferior de Bollinger. Cuando el precio de cierre toca la banda inferior y el RSI está por debajo de 30, vaya largo. Cuando el RSI está por encima de 70, cierre la posición.

Cuando se ingresa a largo plazo, se establecen puntos de stop loss y take profit.

Esto nos permite comprar en la banda inferior de Bollinger cuando el RSI es bajo y vender cuando el RSI es alto, ganando de la reversión.

Análisis de ventajas

  • Las bandas de Bollinger determinan los puntos de reversión con precisión
  • El RSI filtra las faltas falsas, asegurando una entrada confiable
  • Gestionar eficazmente el riesgo comercial
  • Las pruebas de retroceso y la optimización de los parámetros garantizan una rentabilidad estable

Análisis de riesgos

  • Las bandas de Bollinger no predicen perfectamente las reversiones, algunas fallas ocurren
  • El RSI también puede dar señales falsas
  • La posición de stop loss demasiado cercana no puede mantenerse, demasiado suelta aumenta el riesgo

Los riesgos pueden mitigarse ajustando los parámetros de Bollinger, utilizando otros indicadores y ampliando el stop loss de manera adecuada.

Direcciones de optimización

  • Considere combinar con otros indicadores como KD, MACD para filtrar entradas
  • Ajuste dinámico de los porcentajes de stop loss/take profit
  • Optimización de los parámetros de Bollinger
  • Prueba de robustez en diferentes productos

Conclusión

El perfil general de riesgo/recompensación de esta estrategia es equilibrado y los resultados de backtest son buenos. Se pueden realizar mejoras adicionales a través de la optimización de parámetros y mejoras de indicadores.

[/trans] ¿Qué quieres decir?


/*backtest
start: 2023-09-10 00:00:00
end: 2023-09-17 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//strategy(title="Bollinger Band with RSI", shorttitle="BB&RSI", format=format.price, precision=2, pyramiding=50, initial_capital=10000, calc_on_order_fills=false, calc_on_every_tick=true, default_qty_type=strategy.cash, default_qty_value=1000, currency="USD")
len = input(14, minval=1, title="Length")
src = input(close, "Source", type = input.source)
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))
plot(rsi, "RSI", color=#8E1599)
band1 = hline(70, "Upper Band", color=#C0C0C0)
band0 = hline(30, "Lower Band", color=#C0C0C0)
fill(band1, band0, color=#9915FF, transp=90, title="Background")

length_bb = input(20,title="BB Length", minval=1)
mult = input(2.0, minval=0.001, maxval=50, title="BB StdDev")
basis = sma(src, length_bb)
dev = mult * stdev(src, length_bb)
upper = basis + dev
lower = basis - dev
offset = input(0, "BB Offset", type = input.integer, minval = -500, maxval = 500)


Plot_PnL = input(title="Plot Cummulative PnL", type=input.bool, defval=false)
Plot_Pos = input(title="Plot Current Position Size", type=input.bool, defval=false)

long_tp_inp = input(10, title='Long Take Profit %', step=0.1)/100
long_sl_inp = input(25, title='Long Stop Loss %', step=0.1)/100
// Take profit/stop loss
long_take_level = strategy.position_avg_price * (1 + long_tp_inp)
long_stop_level = strategy.position_avg_price * (1 - long_sl_inp)

entry_long = rsi < 30 and src < lower
exit_long = rsi > 70

plotshape(entry_long, style=shape.labelup, color=color.green,  location=location.bottom, text="L", textcolor=color.white, title="LONG_ORDER")
plotshape(exit_long, style=shape.labeldown, color=color.red,  location=location.top, text="S", textcolor=color.white, title="SHORT_ORDER")

strategy.entry("Long",true,when=entry_long)    
strategy.exit("TP/SL","Long", limit=long_take_level, stop=long_stop_level)
strategy.close("Long", when=exit_long, comment="Exit")
plot(Plot_PnL ? strategy.equity-strategy.initial_capital : na, title="PnL", color=color.red)
plot(Plot_Pos ? strategy.position_size : na, title="open_position", color=color.fuchsia)


Más.