Tendencia tras la estrategia EMA y RSI

El autor:¿ Qué pasa?, Fecha: 2023-09-26 15:39:48
Las etiquetas:

Resumen general

Esta estrategia aprovecha al máximo las medias móviles y el índice de fuerza relativa para identificar y seguir las tendencias. Solo necesita dos indicadores para determinar la tendencia y encontrar el momento adecuado de entrada / salida. La estrategia tiene como objetivo capturar las tendencias de precios a medio y largo plazo evitando el ruido del mercado a corto plazo.

Estrategia lógica

La estrategia utiliza tres EMA con períodos diferentes, con EMA-A teniendo el período más corto, EMA-B medio y EMA-C el más largo. Cuando la EMA-A más corta cruza por encima de la EMA-B más larga, señala una tendencia al alza, por lo que va largo. Por el contrario, cuando EMA-A cruza por debajo de EMA-B, señala una tendencia a la baja, por lo que va corto. Para filtrar las señales falsas, también utiliza la EMA-C más larga, solo considerando la entrada después de que el precio rompa EMA-C.

La estrategia también utiliza el RSI para localizar puntos de salida. Cuando es largo, cierra la posición si el RSI cruza por encima de 70. Cuando es corto, sale si el RSI cae por debajo de 30.

Análisis de ventajas

  • Utiliza la fortaleza de la EMA en la identificación de tendencias
  • RSI ayuda en el momento de entrada y salida
  • Estrategia sencilla con sólo 2 indicadores
  • Parámetros personalizables para ajustar el estilo de la estrategia
  • Los beneficios de las etapas iniciales, medias y finales de la tendencia

Análisis de riesgos

  • Los retrocesos en las principales tendencias pueden generar señales falsas
  • Vulnerable a las herramientas en mercados diversos
  • Los parámetros de RSI incorrectos pueden causar salidas prematuras
  • Los períodos de EMA requieren una selección cuidadosa, demasiado cortos pueden ser sensibles al ruido, demasiado largos pueden no tener tendencias

Estos riesgos pueden reducirse optimizando los parámetros del RSI, agregando filtros y combinándolos con el análisis de tendencias.

Direcciones de optimización

  • Optimizar los parámetros del RSI para una mejor obtención de beneficios y control de riesgos
  • Prueba de diferentes combinaciones de períodos de EMA
  • Añadir volumen u otros indicadores de confirmación
  • Utilizar ATR para dimensionar la pérdida de parada
  • Considere reducir el tamaño de la posición a mitad de tendencia
  • Optimice el tiempo de entrada con breakouts, volumen, etc.
  • Explorar los mecanismos de reingreso

Resumen de las actividades

Esta estrategia combina indicadores de seguimiento de tendencias y osciladores para la identificación y captura de tendencias. Con parámetros simples y optimización lógica, se puede mejorar enormemente manteniendo la simplicidad. Es una plantilla de seguimiento de tendencias muy práctica adecuada para inversores a medio y largo plazo.


/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-25 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
//@author Alorse

//@version=5
// strategy(title='Tendency EMA + RSI [Alorse]', shorttitle='Tendece EMA + RSI [Alorse]', overlay=true, pyramiding=0, currency=currency.USD, default_qty_type=strategy.percent_of_equity, initial_capital=1000, default_qty_value=20, commission_type=strategy.commission.percent, commission_value=0.01)

// Bollinger Bands
len = input.int(14, minval=1, title='Length', group='RSI')
src = input.source(close, 'Source', group='RSI')
rsi = ta.rsi(src, len)

// Moving Averages
len_a = input.int(10, minval=1, title='EMA A Length', group='Moving Averages')
out_a = ta.ema(close, len_a)
plot(out_a, title='EMA A', color=color.purple)

len_b = input.int(20, minval=1, title='EMA B Length', group='Moving Averages')
out_b = ta.ema(close, len_b)
plot(out_b, title='EMA B', color=color.orange)

len_c = input.int(100, minval=1, title='EMA C Length', group='Moving Averages')
out_c = ta.ema(close, len_c)
plot(out_c, title='EMA B', color=color.green)

// Strategy Conditions
stratGroup = 'Strategy'
showLong = input.bool(true, title='Long entries', group=stratGroup)
showShort = input.bool(false, title='Short entries', group=stratGroup)
closeAfterXBars = input.bool(true, title='Close after X # bars', tooltip='If trade is in profit', group=stratGroup)
xBars = input.int(24, title='# bars')

entryLong = ta.crossover(out_a, out_b) and out_a > out_c and close > open
exitLong = rsi > 70

entryShort = ta.crossunder(out_a, out_b) and out_a < out_c and close < open
exitShort = rsi < 30


bought = strategy.opentrades[0] == 1 and strategy.position_size[0] > strategy.position_size[1]
entry_price = ta.valuewhen(bought, open, 0)
var int nPastBars = 0
if strategy.position_size > 0
    nPastBars := nPastBars + 1
    nPastBars
if strategy.position_size == 0
    nPastBars := 0
    nPastBars
if closeAfterXBars
    exitLong := nPastBars >= xBars and close > entry_price ? true : exitLong
    exitLong
    exitShort := nPastBars >= xBars and close < entry_price ? true : exitShort
    exitShort

// Long Entry
strategy.entry('Long', strategy.long, when=entryLong and showLong)
strategy.close('Long', when=exitLong)

// Short Entry
strategy.entry('Short', strategy.short, when=entryShort and showShort)
strategy.close('Short', when=exitShort)



Más.