Estrategia de negociación de oscilación RSI dinámica

El autor:¿ Qué pasa?, Fecha: 2023-11-02 16:04:07
Las etiquetas:

img

Resumen general

Esta estrategia combina los niveles dinámicos de soporte/resistencia y el indicador de índice de fuerza relativa (RSI). Establece umbrales de sobrecompra/sobreventa para el RSI y genera señales de compra/venta cuando el precio rompe los niveles dinámicos de soporte/resistencia mientras el RSI no está en el área de sobrecompra/sobreventa.

Principios

1. Apoyo/resistencia dinámico

Utilice la función de seguridad para obtener el precio de cierre como niveles dinámicos de soporte/resistencia.

2. Indicador del RSI

Calcular la ganancia promedio y la pérdida promedio durante un determinado período para generar valores del RSI y determinar si el RSI alcanza el área de sobrecompra/sobreventa.

3. Señales comerciales

Cuando el precio rompe los niveles dinámicos, si el RSI no está en el área de sobrecompra/sobreventa, se generan señales de compra/venta.

4. Señales de salida

Cierre posiciones cuando el precio vuelva a caer al nivel dinámico, o cuando el RSI regrese al rango normal.

Análisis de ventajas

  1. Utilice soporte/resistencia dinámico para determinar la dirección de la tendencia para una mayor tasa de ganancia.

  2. El RSI filtra las fugas falsas y evita las entradas falsas.

  3. La combinación de tendencia e indicador hace que la estrategia sea adaptable a las diferentes condiciones del mercado.

  4. Las reglas simples y claras hacen que sea fácil de aplicar.

Riesgos y soluciones

  1. Las pruebas múltiples de niveles dinámicos pueden generar señales falsas.

  2. Solo RSI puede causar un error de juicio. Añadir otros indicadores para el filtrado de combinación.

  3. Las operaciones frecuentes en el mercado de rango limitado conducen a costes más altos.

  4. La configuración incorrecta de parámetros conduce a señales faltantes o falsas.

Direcciones de optimización

  1. Utilice el aprendizaje automático para optimizar automáticamente los parámetros de RSI.

  2. Agregue una estrategia de stop loss / taking profit para asegurar las ganancias y reducir las pérdidas.

  3. Incorporar más indicadores para el filtrado combinado para mejorar la estabilidad.

  4. Se añadirá el indicador de volatilidad al tamaño de posición más bajo cuando la volatilidad sea baja.

  5. Optimizar el algoritmo de posicionamiento para ajustar dinámicamente las posiciones para diferentes entornos de mercado.

Resumen de las actividades

Esta estrategia combina el juicio de tendencia y el filtrado de indicadores para identificar efectivamente la inversión de tendencia alrededor de los niveles clave mientras se controlan los riesgos.


/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Levels+RSI Strategy v1.0", shorttitle = "Levels+RSI str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
tf = input('W', title = "timeframe 1")
src = input(ohlc4, "Source")
ap = input(true, defval = true, title = "antipila")
cf = input(true, defval = true, title = "color filter")
rsiperiod = input(7, defval = 7, minval = 2, maxval = 100, title = "RSI Period")
rsilimit = input(30, defval = 30, minval = 1, maxval = 50, title = "RSI Limit")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Level
level = request.security(syminfo.tickerid, tf, src[1])
plot(level, linewidth = 3, color = silver)

//RSI
uprsi = rma(max(change(close), 0), rsiperiod)
dnrsi = rma(-min(change(close), 0), rsiperiod)
rsi = dnrsi == 0 ? 100 : uprsi == 0 ? 0 : 100 - (100 / (1 + uprsi / dnrsi))

//Level Signals
ls = close > level and ap == false ? true : low > level ? true : false
up1 = strategy.position_size == 0 and ls and (close < open or cf == false)
exit1 = close < level and ap == false ? true : high < level ? true : false 

//RSI Signal

up2 = rsi < rsilimit and (close < open or cf == false)
exit2 = rsi > rsilimit and ls == false

//Trading
lot = strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]

if up1 or up2 
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
    
if  (exit1 and rsi > rsilimit) or exit2
    strategy.close_all()

Más.