Esta é uma estratégia de negociação de reversão baseada no indicador CCI. Abrirá negociações reversas quando o indicador CCI mostrar níveis de sobrecompra ou sobrevenda.
Em primeiro lugar, esta estratégia baseia-se no indicador CCI, cuja fórmula é:
CCI = (Preço típico - média móvel simples) / (0,015 * Desvio-padrão)
Onde?
Preço típico = (máximo + mínimo + fechamento) / 3
Média móvel simples = Média móvel do preço típico nos últimos N dias
Desvio padrão = raiz quadrada da variância do preço típico nos últimos N dias
Esta estratégia utiliza um indicador CCI de 11 períodos e -150 é definido como o nível de sobrevenda, enquanto 150 como o nível de sobrecompra.
Em cada fechamento de barra, o indicador CCI de 11 períodos será verificado. Se o CCI cruzar abaixo de -150, um sinal longo é gerado. Se o CCI cruzar acima de 150, um sinal curto é gerado.
Após receber o sinal, a ordem de mercado será usada para abrir a posição.
A estratégia de reversão CCI de 4 horas é uma estratégia simples que utiliza o indicador CCI para negociação de reversão. Tem a vantagem de lógica clara e implementação fácil. Mas também tem fraquezas como sinais CCI não confiáveis e meta de lucro / stop loss inflexível. Melhorias adicionais podem ser feitas otimizando parâmetros CCI, adicionando indicadores de filtro, desenvolvendo saídas dinâmicas, etc. No geral, esta estratégia fornece uma ideia baseada no CCI para negociação quantitativa, mas requer mais otimização antes da aplicação ao 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)