
La estrategia de cuantificación cruzada entre el SMA y el EMA de múltiples horarios es una estrategia de análisis técnico que combina una señal cruzada de una media móvil simple (SMA) y una media móvil de un índice (EMA) y ayuda a juzgar a través de filtros de múltiples horarios y el indicador RSI. La idea central de la estrategia es capturar el punto de cruce entre el EMA15 y el SMA60 como punto de entrada, mientras que la señal se introduce en el EMA200 como referencia de tendencia a largo plazo y se combina con el EMA200 de horarios más altos para filtrar la dirección de la operación y, finalmente, evitar la operación en zonas de sobreventa y venta a través del indicador RSI.
El principio central de la estrategia se basa en los siguientes componentes de análisis técnico:
Sistema de cruzamiento de medias móviles:
Filtro de tiempo múltiple:
Mecanismo de filtrado de RSI:
Sistema de gestión de riesgos:
La lógica de negociación de la estrategia sigue la lógica de “seguimiento de tendencias + confirmación múltiple”, asegurando que solo se negocie en la dirección de alta probabilidad a través de un mecanismo de filtración multicapa, mientras que se protege la seguridad de los fondos a través de estrictas medidas de control de riesgo.
A través de un análisis profundo del código, la estrategia tiene las siguientes ventajas:
Mecanismo de confirmación múltiple: Combinado con el cruce de medias móviles a corto plazo, el juicio de tendencias a largo plazo y el filtro RSI, se forma un mecanismo de triple confirmación que mejora significativamente la calidad de la señal y reduce las falsas rupturas y señales erróneas.
Adaptación a las diferentes condiciones del mercadoA través de un diseño parametrizado, la estrategia puede ajustarse de manera flexible para adaptarse a diferentes entornos de mercado y variedades de operaciones, como el ajuste del ciclo de las medias móviles, los valores mínimos del RSI, etc.
Un buen control de los riesgos:
Gestión de la hora de la transacción: Se especifica automáticamente la hora de cierre antes del cierre, evitando el riesgo nocturno y la incertidumbre causada por la volatilidad del cierre, especialmente adecuado para los comerciantes del día.
Filtrado de tendencias de la barra de tiempo altaLa introducción de un mayor rango de tiempo para determinar la tendencia, asegurando que la dirección de las operaciones esté en consonancia con la tendencia general, aumenta la probabilidad de ganar.
Diseño modularSeparación clara de los componentes de la estrategia (generación de señales, mecanismos de filtración y gestión de riesgos) para facilitar su comprensión y adaptación, así como su optimización y extensión posteriores.
Aunque la estrategia está diseñada para ser exhaustiva, los riesgos potenciales son:
Sensibilidad de los parámetrosLa eficacia de la estrategia depende en gran medida de la configuración de parámetros, como el ciclo de las medias móviles y los mínimos del RSI. Diferentes entornos de mercado pueden requerir diferentes combinaciones de parámetros, y una optimización inadecuada de los parámetros puede conducir a una adaptación excesiva de los datos históricos.
Problemas de retrasoLos promedios móviles son, por naturaleza, un indicador de retraso, que puede generar una señal tardía en un mercado de gran fluctuación o reversión rápida, perder el punto de entrada óptimo o provocar una mayor retirada.
El mercado horizontal no está funcionando bienEn un mercado donde no hay una clara tendencia, el cruce de las medias móviles puede generar frecuentes falsas señales, lo que lleva a pérdidas continuas.
La excesiva dependencia de los indicadores técnicosLa estrategia se basa exclusivamente en indicadores técnicos, no tiene en cuenta los factores fundamentales y la emoción del mercado, y puede no funcionar bien en un mercado impulsado por noticias o eventos importantes.
Riesgo de pérdidas fijasLos puntos fijos pueden no ser lo suficientemente flexibles en mercados con variaciones de volatilidad, los puntos fijos pueden ser demasiado flexibles cuando la volatilidad se expande y los puntos fijos pueden ser demasiado ajustados cuando la volatilidad se contrae.
La solución:
A partir del marco existente de la estrategia, las siguientes son algunas opciones de optimización que vale la pena considerar:
Mecanismo de adaptación a las fluctuaciones:
Mejorar la coherencia de las cadenas temporales:
Confirmación de la transacción:
Optimización de parámetros dinámicos:
Clasificación del estado del mercado:
La introducción de la optimización del aprendizaje automático:
Estas orientaciones de optimización permiten mejorar las deficiencias de la estrategia para mantener un rendimiento estable en un entorno de mercado más amplio.
La estrategia de cuantificación cruzada entre el SMA y el EMA de múltiples horarios es un sistema de negociación de análisis técnico bien estructurado y lógico. Combina señales de cruce de medias móviles, filtros de tendencia de múltiples horarios y juicios de sobreventa y sobreventa del RSI para formar un marco de decisión de negociación a varios niveles.
La principal ventaja de la estrategia reside en su mecanismo de confirmación múltiple y su control de riesgos, lo que le permite sobresalir en mercados de tendencia y controlar el riesgo de manera efectiva. Sin embargo, la estrategia también presenta problemas como una alta sensibilidad a los parámetros y una mala adaptabilidad a los mercados horizontales.
Hay mucho espacio para mejorar la estrategia mediante la introducción de un mecanismo de adaptación de la volatilidad, el fortalecimiento de los requisitos de consistencia de múltiples tramos de tiempo, el aumento de la confirmación de transacciones y la optimización de los parámetros dinámicos. Estas optimizaciones pueden ayudar a la estrategia a adaptarse mejor a diferentes entornos de mercado y mejorar la estabilidad y la rentabilidad en general.
En general, se trata de una estrategia de seguimiento de tendencias bien diseñada y adecuada para el uso de los comerciantes con una cierta base de análisis técnico. Con la adecuada adaptación y optimización de los parámetros, puede convertirse en una herramienta de negociación confiable, especialmente en un entorno de mercado con tendencias claras a medio y largo plazo.
/*backtest
start: 2025-01-01 00:00:00
end: 2025-06-15 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy(title="PhaiSinh_SMA & EMA [VNFlow]", overlay=true, slippage=1, backtest_fill_limits_assumption=1, initial_capital=100.000, default_qty_type=strategy.fixed, default_qty_value=4, commission_type=strategy.commission.cash_per_order, commission_value=2700,fill_orders_on_standard_ohlc=true, calc_on_order_fills=true, process_orders_on_close=true)
// === Chỉ báo chính ===
sma60 = ta.sma(close, 60)
ema15 = ta.ema(close, 15)
ema200 = ta.ema(close, 200)
plot(sma60, title="SMA 60", color=color.rgb(227, 10, 251), linewidth=1)
plot(ema15, title="EMA 15", color=color.rgb(246, 222, 11), linewidth=1)
plot(ema200, title="EMA 200", color=color.rgb(13, 141, 245), linewidth=1)
// === Cấu hình thời gian thoát trước khi hết phiên ===
session_close_hour = input.int(14, title="Giờ đóng phiên (24h)")
session_close_minute = input.int(30, title="Phút đóng phiên")
minutes_before_close = input.int(5, title="Số phút thoát lệnh trước đóng phiên")
exit_hour = session_close_hour
exit_minute = session_close_minute - minutes_before_close
exit_hour := exit_minute < 0 ? exit_hour - 1 : exit_hour
exit_minute := exit_minute < 0 ? exit_minute + 60 : exit_minute
cutoff_time = (hour > exit_hour) or (hour == exit_hour and minute >= exit_minute)
// === Bộ lọc RSI ===
use_rsi_filter = input.bool(true, title="Bộ lọc RSI?")
rsi_period = input.int(14, title="Chu kỳ RSI")
rsi_overbought = input.int(70)
rsi_oversold = input.int(30)
rsi_val = ta.rsi(close, rsi_period)
// === Bộ lọc EMA từ HTF ===
use_htf_filter = input.bool(true, title="Bộ lọc EMA HTF?")
htf_tf = input.timeframe("60", title="Khung thời gian EMA cao hơn")
htf_ema = request.security(syminfo.tickerid, htf_tf, ta.ema(close, 200))
ema_trend_up = close > htf_ema
ema_trend_down = close < htf_ema
// === Cài đặt TP/SL/Trailing ===
use_percent_tp = input.bool(false, title="TP theo % (nếu không: tính theo tick)")
tp_value = input.float(1.0, title="Take Profit (tick hoặc %)")
sl_value = input.float(20.0, title="Stop Loss (tick)")
trail_offset = input.int(10, title="Trailing Stop (tick)")
// === Logic tín hiệu vào/ra ===
long_entry = ta.crossover(ema15, sma60) and close >= ema15 and not cutoff_time
short_entry = ta.crossunder(ema15, sma60) and close <= ema15 and not cutoff_time
long_ok = long_entry and (not use_htf_filter or ema_trend_up) and (not use_rsi_filter or rsi_val > rsi_oversold)
short_ok = short_entry and (not use_htf_filter or ema_trend_down) and (not use_rsi_filter or rsi_val < rsi_overbought)
// === Vào lệnh ===
if long_ok
strategy.entry("Long", strategy.long)
if short_ok
strategy.entry("Short", strategy.short)
// === Tính TP theo giá nếu chọn % ===
long_tp_price = close * (1 + tp_value / 100)
short_tp_price = close * (1 - tp_value / 100)
// === Thoát lệnh với TP/SL/Trailing ===
if strategy.position_size > 0
if use_percent_tp
strategy.exit("Dừng Long %", from_entry="Long", loss=sl_value, limit=long_tp_price, trail_points=trail_offset, trail_offset=trail_offset)
else
strategy.exit("Dừng Long Tick", from_entry="Long", loss=sl_value, profit=tp_value, trail_points=trail_offset, trail_offset=trail_offset)
if strategy.position_size < 0
if use_percent_tp
strategy.exit("Dừng Short %", from_entry="Short", loss=sl_value, limit=short_tp_price, trail_points=trail_offset, trail_offset=trail_offset)
else
strategy.exit("Dừng short Tick", from_entry="Short", loss=sl_value, profit=tp_value, trail_points=trail_offset, trail_offset=trail_offset)
// === Đóng toàn bộ trước phiên ===
if cutoff_time
strategy.close_all()