
La estrategia es un sistema de negociación basado en múltiples indicadores técnicos, que combina el cruce de las medias móviles de índices (EMA), el precio de referencia del punto central (CPR), el filtro de volumen de operaciones y la configuración automática de stop loss / stop. La lógica central de la estrategia es determinar la dirección de la tendencia del mercado a través de la cruce de la línea rápida y lenta de la EMA, mientras que se utiliza la CPR como un punto de referencia de precio adicional para confirmar la señal y comprobar la actividad del mercado a través del filtro de volumen de operaciones.
La lógica de transacción central de la estrategia se basa en los siguientes componentes clave:
Sistema cruzado de la EMALa estrategia utiliza el promedio móvil indexado de 20 y 50 períodos como el indicador principal de la tendencia. Cuando el EMA rápido atraviesa el EMA lento de 20 y 50 períodos, se produce una señal de más; cuando el EMA rápido atraviesa el EMA lento de menos, se produce una señal de menos. Esta es la estrategia clásica de cruce de medias para capturar los puntos de inflexión de la tendencia.
CPR (precio de referencia de punto central) confirmado: La estrategia introduce el indicador CPR como herramienta de confirmación del nivel de precios. La CPR se compone de tres niveles de precios clave: pivot ((Pivot), subcentro ((BC) y subcentro ((TC). Estos niveles se calculan en función de los máximos, mínimos y precios de cierre del día anterior.
Filtros de volumen de las transaccionesPara evitar que las transacciones se realicen con un volumen de transacciones insuficiente, la estrategia establece la condición de que el volumen de transacciones debe ser mayor que el promedio de transacciones de 20 días. Un volumen de transacciones alto generalmente indica una alta participación en el mercado, lo que aumenta la fiabilidad de la movilidad de los precios. El usuario puede elegir si habilitar este filtro.
Detención automática de pérdidas: La estrategia establece un porcentaje fijo de stop loss y stop loss basado en el precio de entrada. En la configuración predeterminada, el stop loss está ubicado un 1.5% por debajo del precio de entrada y el stop loss está ubicado un 3% por encima del precio de entrada. Esto hace que la proporción de riesgo-retorno sea de 1:2, de acuerdo con los principios de gestión de riesgos saludables.
Visualización de señalesLa estrategia muestra las señales de compra y venta de forma intuitiva en forma de etiquetas y formas en el gráfico, lo que permite al comerciante ver claramente los puntos de entrada.
La lógica de ejecución de la operación es sencilla: cuando se cumplen las condiciones de multiplicación (corrida por encima de la EMA, precio por encima del eje, volumen de transacción) la estrategia entra en una posición de multiplicación y al mismo tiempo establece un stop loss y un stop order. Cuando se cumplen las condiciones de blanqueo (corrida por debajo de la EMA, precio por debajo del eje, volumen de transacción), la estrategia entra en una posición de blanqueo y también establece el correspondiente stop loss y stop order.
Mecanismo de confirmación múltipleLa estrategia combina el indicador de tendencia (EMA), el indicador de nivel de precios (CPR) y el indicador de volumen de transacciones para formar un sistema de confirmación múltiple. Esto reduce la posibilidad de falsas señales y aumenta la fiabilidad de las transacciones. Un solo indicador puede generar señales erróneas, pero la confirmación de varios tipos diferentes de indicadores aumenta la probabilidad de éxito de las transacciones.
La adaptabilidadLa estrategia puede adaptarse a diferentes entornos de mercado y preferencias de riesgo de los operadores a través de parámetros ajustables (como la longitud de EMA, el porcentaje de stop loss, el porcentaje de stop loss y si se utiliza un filtro de volumen de transacción). Esto hace que la estrategia sea adecuada tanto para mercados con mucha volatilidad como para mercados relativamente estables.
Integración de la gestión de riesgosLa estrategia tiene incorporado un mecanismo de stop loss automático, algo que muchas estrategias básicas carecen. Esto asegura que cada transacción tenga un objetivo de riesgo y de retorno predefinido, evitando que las decisiones emocionales influyan en los resultados de las operaciones.
Señales de negociación visualesLas estrategias muestran las señales de negociación de forma intuitiva en los gráficos, lo que permite a los operadores identificar fácilmente los puntos de entrada y salida, lo que ayuda a la retroalimentación y al ajuste de estrategias.
Código simple y eficienteLa estructura del código de la estrategia es clara, lógicamente modular, fácil de entender y modificar. Esto permite que incluso los comerciantes con poca experiencia en programación puedan entender cómo funciona la estrategia y adaptarla a sus necesidades.
Ampliación de aplicaciones: La estrategia se aplica a una variedad de tipos de transacciones, incluidos futuros y acciones, sin necesidad de realizar ajustes especiales para un mercado en particular. Esta universalidad permite que la estrategia mantenga un rendimiento relativamente estable en diferentes entornos de mercado.
Falso cruce de señalesLa estrategia de cruce de EMA puede generar múltiples falsas señales de cruce en mercados horizontales o oscilantes, lo que lleva a operaciones consecutivas en pérdidas. A pesar de que la CPR y los filtros de volumen de transacción ayudan a reducir estas falsas señales, sigue siendo un riesgo notable en mercados en los que no hay una clara tendencia. La solución es suspender el comercio en mercados horizontales o agregar indicadores adicionales de confirmación de tendencia.
Limitaciones de la parada fijaUna posible solución es el uso de stop loss dinámico basado en el ATR (rango real promedio) para adaptarse mejor a la volatilidad del mercado.
Punto de deslizamiento y riesgo de ejecuciónLa estrategia asume que todos los pedidos se ejecutan al precio especificado, pero puede haber deslizamientos y retrasos en la ejecución en el comercio real, especialmente en mercados con poca liquidez. Esto puede causar diferencias entre los resultados reales y los resultados de la retracción. Para mitigar este riesgo, se puede usar una configuración conservadora en el comercio real, como aumentar el margen de parada o reducir el tamaño de la posición.
Optimización excesiva de los parámetrosEl rendimiento de la estrategia depende en gran medida de los parámetros elegidos (duración de la EMA, porcentaje de stop loss/stop loss, etc.). Los parámetros de optimización excesiva pueden conducir a un buen rendimiento en la retrospectiva pero a un mal rendimiento en el comercio real. La solución es utilizar un ciclo de retrospectiva más largo y probar la solidez de la estrategia en varias condiciones de mercado.
Las limitaciones de la CPR en línea de solUna posible solución es ajustar el ciclo de cálculo del CPR según el marco de tiempo utilizado.
Falsa señal de volumen de operaciones: El simple hecho de depender del volumen de operaciones por encima del promedio de 20 días puede no ser suficiente para determinar con precisión la actividad del mercado. Algunos días de negociación anormales pueden presentar un aumento en el volumen de operaciones, pero no representan una confirmación de tendencia real. Se puede considerar agregar un análisis de volumen de operaciones más complejo, como la tendencia del volumen de operaciones o la tasa de cambio relativo en el volumen de operaciones.
Mejora en el mecanismo de identificación de tendencias: La estrategia actual depende principalmente de la identificación cruzada de tendencias de EMA, se puede considerar la adición de indicadores de tendencia adicionales, como el ADX (indice de dirección promedio), para asegurar que se negocie solo en mercados de fuerte tendencia. Esto ayudará a filtrar las falsas señales en los mercados de discontinuidad, mejorando la calidad de las transacciones en lugar de la cantidad. En la implementación del código, se puede agregar la condición de ADX>25 como filtro de transacción adicional.
Detener y detener el movimiento: sustitución de los paros y paradas de porcentajes fijos con indicadores de volatilidad como el ATR para adaptarse mejor a la volatilidad de diferentes entornos de mercado. Por ejemplo, se puede configurar el parón de pérdidas en 2 veces el ATR y el parón en 4 veces el ATR para mantener el mismo riesgo de retorno, pero adaptarse mejor a las condiciones del mercado.
Mejor análisis de volumenSe puede mejorar el filtro de volumen de transacciones para que no solo considere el tamaño del volumen de transacciones, sino también la tendencia del volumen de transacciones y la relación precio-volumen de transacciones. Por ejemplo, se pueden agregar condiciones para que el aumento del volumen de transacciones coincida con la dirección de la evolución de los precios, o usar indicadores de volumen de transacciones más complejos como OBV (energía de flujo).
Optimizar el tiempo de ingresoLa estrategia actual es entrar inmediatamente en una brecha cuando se produce un cruce, se puede considerar la posibilidad de agregar condiciones de confirmación, como esperar que el precio se reoriente a un soporte/resistencia clave o esperar una confirmación de 1-2 ciclos para reducir el riesgo de una falsa ruptura. Esto se puede hacer mediante el retraso de la señal de entrada o la adición de una confirmación de patrón de precio.
Añadir un filtro de entorno de mercadoSe puede añadir la lógica de juicio del entorno del mercado, por ejemplo, a través de indicadores de volatilidad (como VIX o ATR) para juzgar el estado actual del mercado, y usar diferentes configuraciones de parámetros o incluso suspender la negociación en diferentes entornos del mercado. Por ejemplo, en mercados altamente volátiles, puede ser necesario un mayor stop loss y un tamaño de posición más conservador.
Falta de volumen de transacciones simuladas: Para aumentar la aplicabilidad de la estrategia en mercados donde no hay datos de volumen de transacciones o donde los datos de volumen de transacciones no son confiables, se puede desarrollar una versión alternativa sin necesidad de volumen de transacciones, por ejemplo, utilizando un rango de fluctuación de precios u otros indicadores técnicos en lugar de la confirmación de volumen de transacciones.
Aumentar el filtro de tiempoConsidere la posibilidad de añadir filtros de tiempo para evitar el comercio en los momentos de alta volatilidad antes y después de la apertura y el cierre de los mercados, o para evitar la publicación de datos económicos importantes. Esto se puede hacer revisando el horario de negociación actual y estableciendo ventanas de tiempo que permiten el comercio.
Esta estrategia de negociación basada en EMA cruzado, CPR y filtración de volumen de transacción ofrece un marco de sistema de negociación integral que combina el seguimiento de tendencias, la confirmación de niveles de precios y la verificación de volumen de transacción, junto con funciones de gestión de riesgos incorporadas. La ventaja central de la estrategia reside en su mecanismo de confirmación múltiple y su configuración automática de stop loss / stop, que ayuda a mejorar la confiabilidad y la disciplina de las operaciones.
Sin embargo, como todas las estrategias de negociación, también enfrenta algunos desafíos, como el riesgo de señales falsas y las limitaciones de los parámetros fijos. A través de las direcciones de optimización mencionadas anteriormente, en particular, la mejora de la identificación de tendencias, el ajuste dinámico de stop loss / stop loss y el aumento de la filtración del entorno de mercado, se puede mejorar aún más la solidez y la adaptabilidad de la estrategia.
Para los operadores, la estrategia ofrece un buen punto de partida, que se puede ajustar a la medida según el estilo de negociación personal y las preferencias del mercado. Lo más importante es que, independientemente de cómo se modifique la estrategia, siempre se debe mantener un sólido principio de gestión de riesgos, evitar parámetros de optimización excesiva y realizar una adecuada verificación de transacciones de retroalimentación y simulación antes de la negociación en vivo.
/*backtest
start: 2024-05-20 00:00:00
end: 2025-05-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDC"}]
*/
//@version=6
strategy("Backtest: EMA + CPR + Volume + SL/Target", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=1)
// === INPUTS === //
emaFastLen = input.int(20, title="Fast EMA (20)")
emaSlowLen = input.int(50, title="Slow EMA (50)")
showCPR = input.bool(true, title="Show CPR?")
slPct = input.float(1.5, title="Stop Loss %") / 100
tpPct = input.float(3.0, title="Target %") / 100
useVolume = input.bool(true, title="Use Volume Filter?")
// === EMAs === //
emaFast = ta.ema(close, emaFastLen)
emaSlow = ta.ema(close, emaSlowLen)
bullishCross = ta.crossover(emaFast, emaSlow)
bearishCross = ta.crossunder(emaFast, emaSlow)
plot(emaFast, color=color.orange, title="EMA 20")
plot(emaSlow, color=color.blue, title="EMA 50")
// === CPR === //
prevHigh = request.security(syminfo.tickerid, "D", high[1])
prevLow = request.security(syminfo.tickerid, "D", low[1])
prevClose = request.security(syminfo.tickerid, "D", close[1])
pivot = (prevHigh + prevLow + prevClose) / 3
bc = (prevHigh + prevLow) / 2
tc = (pivot * 2) - bc
plot(showCPR ? pivot : na, color=color.gray, title="Pivot")
plot(showCPR ? bc : na, color=color.gray, title="CPR BC")
plot(showCPR ? tc : na, color=color.gray, title="CPR TC")
// === Volume Filter === //
volOK = not useVolume or (volume > ta.sma(volume, 20))
// === BUY / SELL CONDITIONS === //
longCondition = bullishCross and close > pivot and volOK
shortCondition = bearishCross and close < pivot and volOK
// === TRADE EXECUTION === //
if (longCondition)
strategy.entry("BUY", strategy.long)
strategy.exit("TP/SL", from_entry="BUY", stop=close * (1 - slPct), limit=close * (1 + tpPct))
if (shortCondition)
strategy.entry("SELL", strategy.short)
strategy.exit("TP/SL", from_entry="SELL", stop=close * (1 + slPct), limit=close * (1 - tpPct))
// === VISUAL SIGNALS === //
plotshape(longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")