Estrategia del índice de fuerza relativa de la media móvil

El autor:¿ Qué pasa?, Fecha: 2023-11-28 14:07:46
Las etiquetas:

img

Resumen general

La Estrategia de índice de fuerza relativa de promedio móvil es una estrategia de negociación cuantitativa que utiliza tanto las líneas de promedio móvil como el índice de fuerza relativa (RSI) como señales comerciales para capturar oportunidades en las tendencias del mercado.

Estrategia lógica

Esta estrategia se basa principalmente en dos indicadores:

  1. Promedio móvil simple (SMA): refleja la tendencia media de los precios.
  2. Indice de fortaleza relativa (RSI): refleja la fortaleza o debilidad del desempeño de los precios.

La lógica central de la estrategia es la siguiente:

Cuando la línea del indicador RSI es inferior a la línea de la media móvil, está en la región de sobreventa e indica que la acción está subestimada, generando una señal de compra.

En otras palabras, la línea de la media móvil refleja el valor razonable de la acción hasta cierto punto, mientras que el indicador RSI representa la fortaleza o debilidad actual del precio.

Específicamente, esta estrategia genera señales comerciales a través de los siguientes pasos:

  1. Calcule el valor del RSI y la media móvil simple del precio de las acciones.
  2. Compare la relación entre el valor del RSI y la línea de la media móvil.
  3. Una señal de venta se genera cuando la línea RSI cruza por encima de la línea de la media móvil.
  4. Una señal de compra se activa cuando la línea RSI cruza por debajo de la línea de la media móvil.
  5. Establecer el stop loss y el trailing stop para controlar los riesgos.

Ventajas de la estrategia

Al combinar el juicio de tendencia de las medias móviles y la indicación de sobrecompra/sobreventa del RSI, esta estrategia puede determinar eficazmente los puntos de inflexión en el mercado aprovechando las fortalezas de diferentes indicadores.

Las principales ventajas son:

  1. Las medias móviles pueden indicar de manera efectiva las tendencias de los precios.
  2. El RSI puede reflejar condiciones de sobrecompra/sobreventa.
  3. La combinación de indicadores duales mejora la precisión de la identificación de los puntos de inflexión del mercado.
  4. El stop loss se puede utilizar para controlar los riesgos.

Riesgos de la estrategia

También hay algunos riesgos con esta estrategia:

  1. Existe la probabilidad de que los indicadores den señales falsas, lo que puede causar pérdidas innecesarias.
  2. El stop loss puede activarse durante los violentos cambios del mercado, lo que conduce a grandes pérdidas.
  3. La configuración incorrecta de los parámetros también puede afectar el rendimiento de la estrategia.

Para gestionar los riesgos, las optimizaciones pueden realizarse de las siguientes maneras:

  1. Ajustar los parámetros de la media móvil y el RSI para hacer más fiables las señales del indicador.
  2. Establecer el stop loss adecuadamente más ancho para evitar una activación demasiado frecuente.
  3. Adopte un stop loss dinámico para hacer que el stop loss sea más flexible.

Direcciones para la optimización de la estrategia

Otras direcciones de optimización incluyen:

  1. Prueba diferentes combinaciones de parámetros en diferentes plazos para encontrar parámetros óptimos.
  2. Añadir otros indicadores como el volumen del filtro para mejorar la fiabilidad de la señal.
  3. Optimizar las estrategias de stop loss para que sean más dinámicas y razonables.
  4. Incorporar modelos de aprendizaje profundo para la optimización de parámetros adaptativos.
  5. Añadir un módulo de dimensionamiento de posiciones para ajustar dinámicamente las posiciones en función de las condiciones del mercado.

A través de la optimización de parámetros, la optimización de indicadores, la optimización de la gestión de riesgos, etc., la estabilidad y la rentabilidad de esta estrategia pueden mejorarse continuamente.

Conclusión

La estrategia de RSI de promedio móvil utiliza tanto la tendencia de precios como el análisis de sobrecompra / sobreventa para identificar eficazmente los puntos de inflexión del mercado y capturar oportunidades de reversión.


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

//@version=2

strategy(title = "RSI versus SMA", shorttitle = "RSI vs SMA", overlay = false, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, currency = currency.GBP)

// Revision:        1
// Author:          @JayRogers
//
// *** USE AT YOUR OWN RISK ***
// - Nothing is perfect, and all decisions by you are on your own head. And stuff.
//
// Description:
//  - It's RSI versus a Simple Moving Average.. Not sure it really needs much more description.
//  - Should not repaint - Automatically offsets by 1 bar if anything other than "open" selected as RSI source.

// === INPUTS ===
// rsi
rsiSource   = input(defval = open, title = "RSI Source")
rsiLength   = input(defval = 8, title = "RSI Length", minval = 1)
// sma
maLength    = input(defval = 34, title = "MA Period", minval = 1)
// invert trade direction
tradeInvert = input(defval = false, title = "Invert Trade Direction?")
// risk management
useStop     = input(defval = false, title = "Use Initial Stop Loss?")
slPoints    = input(defval = 25, title = "Initial Stop Loss Points", minval = 1)
useTS       = input(defval = true, title = "Use Trailing Stop?")
tslPoints   = input(defval = 120, title = "Trail Points", minval = 1)
useTSO      = input(defval = false, title = "Use Offset For Trailing Stop?")
tslOffset   = input(defval = 20, title = "Trail Offset Points", minval = 1)
// === /INPUTS ===

// === BASE FUNCTIONS ===
// delay for direction change actions
switchDelay(exp, len) =>
    average = len >= 2 ? sum(exp, len) / len : exp[1]
    up      = exp > average
    down    = exp < average
    state   = up ? true : down ? false : up[1]
// === /BASE FUNCTIONS ===

// === SERIES and VAR ===
// rsi
shunt = rsiSource == open ? 0 : 1
rsiUp = rma(max(change(rsiSource[shunt]), 0), rsiLength)
rsiDown = rma(-min(change(rsiSource[shunt]), 0), rsiLength)
rsi = (rsiDown == 0 ? 100 : rsiUp == 0 ? 0 : 100 - (100 / (1 + rsiUp / rsiDown))) - 50 // shifted 50 points to make 0 median
// sma of rsi
rsiMa   = sma(rsi, maLength)
// self explanatory..
tradeDirection = tradeInvert ? 0 <= rsiMa ? true : false : 0 >= rsiMa ? true : false
// === /SERIES ===

// === PLOTTING ===
barcolor(color = tradeDirection ? green : red, title = "Bar Colours")
// hlines
medianLine  = hline(0, title = 'Median', color = #996600,  linewidth = 1)
limitUp     = hline(25, title = 'Limit Up', color = silver,  linewidth = 1)
limitDown   = hline(-25, title = 'Limit Down', color = silver,  linewidth = 1)
// rsi and ma
rsiLine     = plot(rsi, title = 'RSI', color = purple, linewidth = 2, style = line, transp = 50)
areaLine    = plot(rsiMa, title = 'Area MA', color = silver, linewidth = 1, style = area, transp = 70)
// === /PLOTTING ===

goLong() => not tradeDirection[1] and tradeDirection
killLong() => tradeDirection[1] and not tradeDirection
strategy.entry(id = "Buy", long = true, when = goLong())
strategy.close(id = "Buy", when = killLong())

goShort() => tradeDirection[1] and not tradeDirection
killShort() => not tradeDirection[1] and tradeDirection
strategy.entry(id = "Sell", long = false, when = goShort())
strategy.close(id = "Sell", when = killShort())

if (useStop)
    strategy.exit("XSL", from_entry = "Buy", loss = slPoints)
    strategy.exit("XSS", from_entry = "Sell", loss = slPoints)
// if we're using the trailing stop
if (useTS and useTSO) // with offset
    strategy.exit("XSL", from_entry = "Buy", trail_points = tslPoints, trail_offset = tslOffset)
    strategy.exit("XSS", from_entry = "Sell", trail_points = tslPoints, trail_offset = tslOffset)
if (useTS and not useTSO) // without offset
    strategy.exit("XSL", from_entry = "Buy", trail_points = tslPoints)
    strategy.exit("XSS", from_entry = "Sell", trail_points = tslPoints)

Más.