Estrategia de tendencia basada en el índice de rentabilidad de las acciones

El autor:¿ Qué pasa?, Fecha: 2024-02-02 11:23:29
Las etiquetas:

img

Resumen general

Esta estrategia está diseñada sobre la base del indicador Stoch RSI para seguir tendencias. Combina las ventajas de los indicadores RSI y Stoch mediante la generación de señales comerciales a través de cruces de Stoch RSI y la adopción de un mecanismo de seguimiento de tendencias para ajustar dinámicamente las líneas de stop loss y take profit para una gestión optimizada del dinero.

Estrategia lógica

La estrategia calcula las líneas de Stoch K y D de RSI. Genera señales de compra cuando la línea K de Stoch RSI rompe por encima de 20 desde los mínimos. Luego se establece un stop loss basado en los mínimos más bajos de varias líneas K anteriores, y la línea de stop loss se mantiene ajustada al alza dinámicamente junto con el aumento del precio. Al mismo tiempo, se establece una línea de take profit basada en el precio más alto, y la posición se cerrará cuando el precio alcance la línea de take profit.

Análisis de ventajas

Esta estrategia combina el indicador de Stoch RSI para determinar la tendencia del mercado y los cruces para generar señales, evitando las limitaciones del uso del indicador de RSI solo. Mientras tanto, el mecanismo de seguimiento de tendencia permite que la línea de stop loss se ajuste constantemente hacia arriba de acuerdo con el movimiento del precio, evitando el riesgo de salida prematura de stop loss y permitiendo la captura de ganancias sostenidas durante los movimientos de tendencia. Además, el indicador de RSI en sí tiene una tasa de ganancia relativamente buena.

Análisis de riesgos

Esta estrategia se basa principalmente en el indicador Stoch RSI para la generación de señales de tendencia y cruce. Las señales incorrectas del indicador en sí mismo plantean algunos riesgos. Además, en los mercados de rango, las líneas de stop loss y take profit que se activan con frecuencia pueden afectar la rentabilidad de la estrategia. Los riesgos podrían reducirse a través de la optimización de parámetros.

Direcciones de optimización

  • Optimizar los parámetros de Stoch RSI, ajustar el ritmo de suavizado de las líneas K y D para reducir la probabilidad de señal incorrecta
  • Optimizar los ajustes de stop loss y take profit para mejorar la robustez de los parámetros
  • Añadir condiciones de filtración para evitar problemas en los mercados variados
  • Incorporar mecanismos de dimensionamiento de posiciones basados en las condiciones del mercado

Conclusión

Esta estrategia integra las ventajas del indicador Stoch RSI y adopta un mecanismo de seguimiento de tendencias para identificar eficazmente los movimientos de tendencia y ajustar dinámicamente las paradas y objetivos para mejorar la probabilidad de captura de ganancias.


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

//@version=2

strategy("sdf",calc_on_every_tick=true,precision=8,
     default_qty_type=strategy.fixed,currency="USD")
//entradas y variables de indicadores
smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
src = input(close, title="RSI Source")
rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
overbought=input(80)
oversold=input(20)
//entradas de stop , trail, profit
stop=input(1500)
stop_dentro_de_los_ultimos_lows=input(20)
trail_points=input(500)
trail_offset=input(100)
profit=input(1000)
riesgo_en_dolares=input(15)
marsi=sma(rsi(close,14),14)
//condicion de compra: k>80
buycondition=crossover(k,20) and security(syminfo.ticker,"240",rsi(close,14)>marsi)
bgcolor( security(syminfo.ticker,"240",rsi(close,14)>marsi) ? yellow : na , transp=0)

if year>2014
    strategy.entry("l",strategy.long,qty=1,when=buycondition)
    velasiguente=barssince(buycondition)+1  //cierre en cada vela nueva independientemente si subeObaja.FUNCIONANDO
    strategy.close("l",when=velasiguente>2)       //cierre en cada vela nueva independientemente si subeObaja.FUNCIONANDO
    //paradaMasBajo=lowest(low,stop_dentro_de_los_ultimos_lows)//stop_dentro_de_los_ultimos_lows, NO PROBADA 
    //strategy.exit("l",loss=paradaMasBajo,profit=profit)
plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Más.