A ideia central desta estratégia é utilizar o indicador CCI para determinar a direção da tendência do mercado e utilizar o indicador EMA para suavizar o CCI para implementar a tendência após a negociação.
Calcule o indicador CCI. O indicador CCI julga se o preço da ação atual está sobrecomprado ou sobrevendido com base no grau de desvio da média móvel de 20 dias. A fórmula é: (preço típico - SMA 20D) / (0,015 * desvio padrão TP 20D).
O indicador CCI deve ser suavizado com uma EMA para obter uma curva CCI-EMA, o que reduz a flutuação do CCI e torna o sinal mais claro.
Defina os pontos de compra e venda para o CCI. Vá longo quando o CCI-EMA cruza acima do ponto de compra e vá curto quando o CCI-EMA cruza abaixo do ponto de venda.
Mantenha a posição até que o CCI-EMA toque novamente o ponto de compra ou venda para fechar a posição.
A Comissão considera que a medida de auxílio é uma medida de auxílio estatal.
O CCI é sensível a anomalias de preços e pode captar rapidamente inversões de tendência.
As estratégias de seguimento de tendências minimizam as transacções, reduzem os custos de negociação e o deslizamento.
Os resultados dos backtests são decentes, dando à estratégia alguma viabilidade prática.
O CCI pode ser excessivamente sensível às curvas e a EMA não pode filtrar completamente todos os falsos sinais, alguns falsos sinais permanecem.
As estratégias de tendência pura são propensas a perdas quando as tendências se consolidam ou revertem.
Os sistemas de negociação mecânicos não podem ajustar de forma flexível os parâmetros com base nos mercados.
Os dados limitados de backtest não podem refletir plenamente o desempenho em tempo real.
Otimizar os parâmetros da CCI através do ensaio de diferentes períodos de duração.
Otimizar os parâmetros da EMA para encontrar o período de EMA ideal.
Teste diferentes combinações de pontos de compra/venda para encontrar os parâmetros ideais.
Incorporar outros indicadores para determinar a inversão da tendência e definir perdas de parada.
Adicione otimização automática de parâmetros para encontrar os parâmetros ideais para diferentes produtos.
Em geral, esta é uma estratégia de negociação de tendência relativamente simples. Ele usa o CCI para determinar a direção da tendência e é sensível às mudanças de preço, combinado com a filtragem da EMA para gerar sinais. A estratégia tem algumas vantagens, mas também riscos a serem notados. Através da otimização de parâmetros e usando outros indicadores, a estabilidade e o desempenho ao vivo podem ser melhorados.
/*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)