A estratégia de reversão da CCI de 4 horas

Autora:ChaoZhang, Data: 2023-10-13 15:29:05
Tags:

Resumo

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.

Estratégia lógica

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.

Análise das vantagens

  1. A utilização do indicador CCI pode captar eficazmente oportunidades de reversão de preços
  2. Os parâmetros CCI são ajustáveis para otimização
  3. O objectivo de lucro fixo e o rácio de stop loss controlam eficazmente o risco
  4. Lógica estratégica simples e clara, fácil de compreender e implementar

Análise de riscos

  1. Indicador CCI pode gerar muitos sinais falsos, os sinais de entrada podem não ser fiáveis
  • Solução: Optimizar parâmetros CCI, adicionar filtro com outros indicadores
  1. O objetivo de lucro fixo e o rácio de stop loss podem não ser adequados para diferentes produtos
  • Solução: adicionar meta de lucro dinâmica e stop loss
  1. A estratégia baseia-se exclusivamente no CCI, o risco de ineficácia é elevado
  • Solução: combinar vários indicadores para melhorar a robustez
  1. Não há contrapartida no custo de negociação, o desempenho ao vivo pode sofrer
  • Solução: Adicionar controlo de deslizamento, reduzir a frequência de negociação

Orientações de otimização

  1. Otimizar parâmetros CCI para encontrar melhores combinações de parâmetros
  2. Adicionar outros indicadores como MACD, KDJ para filtragem de sinal
  3. Desenvolver um objetivo de lucro dinâmico e um stop loss em vez de um rácio fixo
  4. Otimizar a estratégia para reduzir a frequência de negociação, reduzindo o impacto dos custos de negociação
  5. Realizar otimização de backtesting para encontrar a melhor combinação de parâmetros para negociação ao vivo

Resumo

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)

Mais.