La idea central de esta estrategia es utilizar el indicador CCI para determinar la dirección de la tendencia del mercado y utilizar el indicador EMA para suavizar el CCI para implementar la tendencia después de la negociación.
Calcular el indicador CCI. El indicador CCI juzga si el precio de las acciones actuales está sobrecomprado o sobrevendido en función del grado de desviación del promedio móvil de 20 días. La fórmula es: (precio típico - 20D SMA) / (0.015 * 20D TP desviación estándar).
El indicador CCI se alinea con una EMA para obtener una curva CCI-EMA, lo que reduce la fluctuación del CCI y hace que la señal sea más clara.
Establecer los puntos de compra y venta para CCI. Ir largo cuando CCI-EMA cruza por encima del punto de compra, y ir corto cuando CCI-EMA cruza por debajo del punto de venta.
Mantener la posición hasta que CCI-EMA vuelva a tocar el punto de compra o venta para cerrar la posición.
El uso del CCI para determinar la dirección de la tendencia del mercado combinado con el EMA para filtrar las señales falsas puede seguir eficazmente las tendencias del mercado.
El CCI es sensible a las anomalías de precios y puede capturar rápidamente las inversiones de tendencia.
Las estrategias de seguimiento de tendencias minimizan las transacciones, reducen los costos comerciales y el deslizamiento.
Los resultados de las pruebas de retroceso son decentes, dando a la estrategia cierta viabilidad práctica.
El CCI puede ser demasiado sensible a las curvas y la EMA no puede filtrar completamente todas las señales falsas, quedan algunas señales falsas.
Las estrategias de tendencia pura son propensas a pérdidas cuando las tendencias se consolidan o se invierten.
Los sistemas de negociación mecánicos no pueden ajustar de forma flexible los parámetros basados en los mercados.
Los datos limitados de las pruebas de retroceso no pueden reflejar plenamente el rendimiento en vivo.
Optimizar los parámetros de la CCI mediante pruebas de diferentes períodos de longitud.
Optimizar los parámetros de la EMA para encontrar el período óptimo de la EMA.
Prueba diferentes combinaciones de puntos de compra/venta para encontrar los parámetros óptimos.
Incorporar otros indicadores para determinar la inversión de tendencia y establecer pérdidas de parada.
Agregue la optimización automática de parámetros para encontrar los parámetros óptimos para diferentes productos.
En general, esta es una estrategia de seguimiento de tendencias relativamente simple. Utiliza CCI para determinar la dirección de la tendencia y es sensible a los cambios de precios, combinado con el filtrado EMA para generar señales. La estrategia tiene algunas ventajas, pero también riesgos a tener en cuenta. A través de la optimización de parámetros y el uso de otros indicadores, la estabilidad y el rendimiento en vivo se pueden mejorar aún más.
/*backtest start: 2023-10-02 00:00:00 end: 2023-11-01 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("CCI with EMA Strategy", overlay=false, pyramiding=1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.07) length = input(20, minval=1) src = input(close, title="Source") cciSellPoint = input(0, title = 'CCI Sell Point', type = input.integer) cciBuyPoint = input(0, title = 'CCI Buy Buy Point', type = input.integer) lengthcci = input(12,"length cci ema", minval=1) ma = sma(src, length) cci = (src - ma) / (0.015 * dev(src, length)) cciema=ema(cci,lengthcci) plot(cci, "CCI", color=#996A15) plot(cciSellPoint, title = 'CCI Sell Point', color = color.red, linewidth = 1, style = plot.style_cross, transp = 35) plot(cciBuyPoint, title = 'CCI Buy Point', color = color.green, linewidth = 1, style = plot.style_cross, transp = 35) plot(cciema, title = 'CCI EMA', color = color.green, linewidth = 1, transp = 35) band1 = hline(100, "Upper Band", color=#C0C0C0, linestyle=hline.style_dashed) band0 = hline(-100, "Lower Band", color=#C0C0C0, linestyle=hline.style_dashed) fill(band1, band0, color=#9C6E1B, title="Background") startLongTrade= cciema >cciBuyPoint startShortTrade= cciema <cciSellPoint //exitLong = cciema <cciSellPoint //exitShort = cciema >cciBuyPoint strategy.entry("long",strategy.long, when = startLongTrade ) //strategy.close( "long", when=exitLong) strategy.entry("short",strategy.short,when=startShortTrade ) //strategy.close("short", when=exitShort)