Esta es una estrategia de negociación de reversión basada en el indicador CCI. Se abrirán operaciones de reversión cuando el indicador CCI muestre niveles de sobrecompra o sobreventa.
En primer lugar, esta estrategia se basa en el indicador CCI, cuya fórmula es:
El CCI = (Precio típico - promedio móvil simple) / (0,015 * Desviación estándar)
¿Dónde?
Precio típico = (más alto + más bajo + cerrar) / 3
La media móvil simple = media móvil del precio típico durante los últimos N días
Desviación estándar = raíz cuadrada de la variación del precio típico durante los últimos N días
Esta estrategia utiliza un indicador CCI de 11 períodos y -150 se establece como el nivel de sobreventa, mientras que 150 como el nivel de sobrecompra.
Cuando se cierra cada barra, se comprueba el indicador CCI de 11 períodos. Si el CCI se cruza por debajo de -150, se genera una señal larga. Si el CCI cruza por encima de 150, se genera una señal corta.
Después de recibir la señal, la orden de mercado se utilizará para abrir la posición.
La estrategia de inversión CCI de 4 horas es una estrategia simple que utiliza el indicador CCI para la negociación de inversión. Tiene la ventaja de una lógica clara y una implementación fácil. Pero también tiene debilidades como señales CCI poco confiables y un objetivo de ganancia / stop loss inflexible. Se pueden hacer mejoras adicionales optimizando los parámetros CCI, agregando indicadores de filtro, desarrollando salidas dinámicas, etc. En general, esta estrategia proporciona una idea basada en CCI para la negociación cuantitativa, pero requiere una mayor optimización antes de la aplicación en vivo.
/*backtest start: 2023-09-12 00:00:00 end: 2023-10-12 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("4H CCI Strategy", overlay=true) length = input( 11 ) overSold = input( -150 ) overBought = input( +150 ) price1 = high price2 = low ucci = cci(price1, length) dcci = cci(price2, length) vcci = cci(ohlc4, 11) resCustom = input(title="Timeframe", defval="15") Length = input(16, minval=1) xPrice = request.security(syminfo.tickerid, resCustom, hlc3) xvnoise = abs(xPrice - xPrice[1]) nfastend = 0.666 nslowend = 0.0645 nsignal = abs(xPrice - xPrice[Length]) nnoise = sum(xvnoise, Length) nefratio = iff(nnoise != 0, nsignal / nnoise, 0) nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) nAMA = nz(nAMA[1]) + nsmooth * (xPrice - nz(nAMA[1])) basis1 = nAMA slope = change(basis1,1) if (not na(vcci)) if (crossover(dcci, overSold)) strategy.entry("CCILE", strategy.long, comment="CCILE") strategy.exit("exit", "CCILE", profit = 0.01, loss = 0.005) if (crossunder(ucci, overBought)) strategy.entry("CCISE", strategy.short, comment="CCISE") strategy.exit("exit", "CCISE", profit = 0.01, loss = 0.005) //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)