Esta estrategia utiliza los patrones de cruce entre los promedios móviles (MA) de diferentes marcos de tiempo y el indicador RSI para determinar el momento de las entradas y salidas en el mercado, con el objetivo de mantener a largo plazo.
El mecanismo central de esta estrategia es identificar los puntos de entrada y salida a través de la cruz dorada y la cruz de muerte de las líneas EMA. También incorpora el indicador RSI para determinar las condiciones de sobrecompra y sobreventa.
Específicamente, la lógica de la señal de compra comprueba lo siguiente: los cruces de precios por debajo de la EMA20 y por encima de la EMA50, formando una cruz dorada, lo que ayuda a identificar la inversión de tendencia con mayor precisión en comparación con el sistema de EMA único.
Los criterios de compra anteriores se configuran con varios parámetros para formar 4 reglas de compra, correspondientes a diferentes períodos y cantidades de EMA.
Para las salidas, la estrategia comprueba la cruz de muerte por encima de EMA10, con señal de RSI sobrecomprada; o cruz de muerte por debajo de EMA10, con señal de RSI sobrevendida.
La mayor fortaleza de esta estrategia radica en su eficacia para identificar puntos de inversión de tendencia con cruces de EMA, lo que permite seguir la tendencia. En comparación con el sistema de EMA único, los cruces dobles de EMA ayudan a eliminar señales falsas. Además, el uso de RSI agrega confirmación antes de entrar en zonas de sobrecompra / sobreventa, reduciendo aún más los riesgos comerciales.
Otra ventaja es la implementación de la pirámide y la reducción del costo promedio. Tal compra por tramos distribuye cantidades a diferentes niveles de precio, asegurando el máximo beneficio cuando la tendencia se reanuda. También diversifica los riesgos lejos de una sola posición de entrada grande.
Los principales riesgos asociados a esta estrategia incluyen:
La naturaleza retrasada del sistema EMA hace que sea lento para reaccionar a cambios repentinos de precios, incapaz de salir de posiciones de manera oportuna.
La falta de restricciones en los plazos de entrada de compras puede llevar a entradas prematuras, atrapándose en las consolidaciones de mercado.
La pirámide de órdenes de compra puede dar lugar a posiciones de gran tamaño, creando vulnerabilidad a los riesgos de ruptura de una dirección.
La estrategia puede optimizarse aún más en los siguientes ámbitos:
Incorporar reglas de stop loss para reducir las pérdidas cuando se violan los niveles de soporte clave en la bajada, controlando los riesgos a la baja.
Añadir un módulo de validación de operaciones para comprobar la dirección de la tendencia primaria, entrando en operaciones solo cuando la tendencia general apunta hacia arriba, evitando los riesgos de contratrend.
Establecer restricciones más estrictas de la zona de compra para evitar entradas prematuras de pirámide antes de las confirmaciones.
Emplear algoritmos de aprendizaje automático con análisis multifactorial para mejorar la precisión de la entrada y las tasas de ganancia.
En resumen, este artículo ilustra en detalle una estrategia cuantitativa a largo plazo que utiliza el doble cruce EMA y el indicador RSI para señales de entrada y salida, apoyado por la construcción de posiciones de tramo para maximizar la eficiencia. La lógica y los parámetros se pueden ajustar para índices y acciones en todos los mercados, lo que la convierte en una estrategia versátil para seguir la tendencia a largo plazo. El análisis de riesgos y las oportunidades de mejora también proporcionan referencias para una mayor optimización. A medida que la estrategia se vuelve más sofisticada, creo que servirá como un sistema sólido para la tenencia a largo plazo en entornos de negociación en vivo.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA_zorba1", shorttitle="3 NIFTY RSI EMA", overlay=true) // Input parameters qt1 = input.int(1, title="Quantity 1", minval=1) qt2 = input.int(2, title="Quantity 2", minval=1) qt3 = input.int(3, title="Quantity 3", minval=1) qt4 = input.int(4, title="Quantity 4", minval=1) ema10 = ta.ema(close, 10) ema20 = ta.ema(close, 20) ema50 = ta.ema(close, 50) ema100 = ta.ema(close, 100) ema200 = ta.ema(close, 200) // RSI(14) condition rsi_threshold = 65 rsi_crossed_above_70 = ta.rsi(close, 14) > rsi_threshold rsi_crossed_above_70_two_days_ago = ta.rsi(close[5], 14) > rsi_threshold or ta.rsi(close[4], 14) > rsi_threshold or ta.rsi(close[3], 14) > rsi_threshold rsi_crossed_above_70_yesterday = ta.rsi(close[1], 14) > rsi_threshold // Date range filter start_date = timestamp(year=2021, month=1, day=1) end_date = timestamp(year=2024, month=1, day=1) in_date_range = true // Profit condition profit_percentage = input(1, title="Profit Percentage") // Adjust this value as needed // Pyramiding setting pyramiding = input.int(1, title="Pyramiding", minval=1, maxval=10) // Buy conditions buy_condition_1 = in_date_range and close < ema20 and close > ema50 and close < open and close < low[1] buy_condition_2 = in_date_range and close < ema50 and close > ema100 and close < open and close < low[1] buy_condition_3 = in_date_range and close < ema100 and close > ema200 and close < open and close < low[1] buy_condition_4 = in_date_range and close < ema200 and close < open and close < low[1] // Exit conditions profit_condition = strategy.position_avg_price * (1 + profit_percentage / 100) <= close exit_condition_1 = in_date_range and ((close > ema10 and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and rsi_crossed_above_70_two_days_ago) and profit_condition and close < low[1] and close < low[2] exit_condition_2 = in_date_range and ((close < ema10 and close[1] > ema10 and close < close[1] and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and rsi_crossed_above_70_yesterday) and profit_condition and close < low[1] and close < low[2] // Strategy logic strategy.entry("Buy1", strategy.long, qty=qt1 * pyramiding, when=buy_condition_1) strategy.entry("Buy2", strategy.long, qty=qt2 * pyramiding, when=buy_condition_2) strategy.entry("Buy3", strategy.long, qty=qt3 * pyramiding, when=buy_condition_3) strategy.entry("Buy4", strategy.long, qty=qt4 * pyramiding, when=buy_condition_4) strategy.close("Buy1", when=exit_condition_1 or exit_condition_2) strategy.close("Buy2", when=exit_condition_1 or exit_condition_2) strategy.close("Buy3", when=exit_condition_1 or exit_condition_2) strategy.close("Buy4", when=exit_condition_1 or exit_condition_2)