
A estratégia de negociação de acompanhamento de tendências de dinâmica de dois ciclos CCI é um sistema de negociação quantitativa combinado com o índice de canais de mercadorias de curto e longo período (CCI), projetado para identificar e capturar as tendências fortes no mercado. A estratégia usa o CCI de longo período de 50 ciclos para determinar a direção das principais tendências do mercado, enquanto utiliza o CCI de curto período de 5 ciclos para capturar mudanças de dinâmica do mercado e oportunidades de entrada.
A lógica central da estratégia baseia-se na teoria da trajetória zero e da variação de volume do indicador CCI, com os seguintes princípios de operação:
Requisitos de entrada múltipla:
Condições de liquidação múltipla:
Condições de entrada(apenas quando a função de vazio estiver ativada):
Condições de liquidação:
Estratégias através de variáveisinPositiveCciLongCycle、firstCrossoverOccurredefirstCrossunderOccurredAcompanhar o estado do ciclo de tendência, garantindo que apenas uma transação seja executada em um ciclo de tendência, evitando efetivamente a perda de comissões desnecessárias e transações frequentes em mercados turbulentos.
Ao analisar o código em profundidade, a estratégia mostra várias vantagens significativas:
Confirmação dupla de tendência e dinâmicaA combinação dos indicadores CCI de longo e curto período, formando um mecanismo de dupla confirmação da direção da tendência e do momento de entrada, reduz significativamente o risco de falsos sinais.
A hora exacta de entradaA estratégia de identificar mudanças de dinâmica através de CCI de curto período que atravessa a linha zero, é capaz de fornecer pontos de entrada mais precisos no início da tendência, melhorando a eficiência de utilização de fundos.
Evite transações frequentesO mecanismo de entrada única no ciclo evita a frequência de transações em mercados turbulentos, reduzindo os custos de transação.
Modelos de negociação flexíveisO sistema de negociação permite que os usuários façam transações em apenas uma ou duas direções, de acordo com o ambiente de mercado e as preferências pessoais.
Comentário visual claroA estratégia fornece instruções visuais intuitivas, incluindo linhas de indicadores CCI e marcas de sinais de negociação, para facilitar a análise e verificação de retorno.
Ajustabilidade dos parâmetrosO usuário pode ajustar os parâmetros do ciclo CCI curto e longo de acordo com as características de diferentes mercados e variedades, aumentando a adaptabilidade da estratégia.
Apesar do bom desenho da estratégia, existem os seguintes riscos potenciais:
Risco de reversão de tendênciaEm caso de uma reversão súbita de uma tendência forte, o CCI de longo prazo pode não ser capaz de atravessar a linha zero a tempo, causando um atraso no sinal de equilíbrio, o que pode causar o rebote de lucros já obtidos. A solução é introduzir um mecanismo de parada ou adicionar um indicador de equilíbrio mais sensível.
Mercado horizontal não funciona bem: Em um mercado de longo prazo horizontal ou sem uma tendência visível, a estratégia pode produzir vários sinais de invalidez, resultando em prejuízos. Recomenda-se a utilização da estratégia quando se confirma que o mercado está em uma tendência visível.
Sensibilidade do parâmetroA escolha dos parâmetros do ciclo CCI tem um impacto significativo no desempenho da estratégia. Diferentes mercados podem necessitar de configurações de parâmetros diferentes. É recomendável encontrar a combinação de parâmetros adequada para um mercado específico por meio da otimização de feedback.
Dependência de um único indicador: A estratégia de depender apenas do indicador CCI, a falta de confirmação auxiliar de outros indicadores técnicos ou de configuração de preços, pode aumentar o risco de falso sinal. Considere a adição de condições de filtragem adicionais.
Inadequada gestão de fundos: O uso de gerenciamento de posições de proporção fixa no código ((100% de capital) pode trazer alto risco em mercados altamente voláteis. Recomenda-se ajustar o tamanho da posição de acordo com a dinâmica de volatilidade do mercado.
Com base na análise de código, a estratégia pode ser otimizada nas seguintes direções:
Adicionar condições de filtragemA combinação de outros indicadores técnicos, como a linha de equilíbrio, o RSI ou o MACD, cria um mecanismo de confirmação múltipla e melhora a qualidade do sinal. Esta otimização ocorre porque um único indicador CCI pode gerar um sinal enganoso em certos cenários de mercado, e a combinação de vários indicadores pode complementar suas próprias deficiências.
Introdução de parâmetros de adaptaçãoO CCI foi projetado para ajustar automaticamente os parâmetros do ciclo com base na volatilidade do mercado, permitindo que a estratégia se adapte a diferentes fases do mercado. Esta otimização ajuda a manter o desempenho estável da estratégia em diferentes ambientes de volatilidade.
Melhor gestão de fundosIntrodução de gerenciamento de posições dinâmicas baseadas em ATR, que ajusta automaticamente o tamanho das posições de acordo com a volatilidade do mercado, equilibrando ganhos e riscos. Esta melhoria permite que a estratégia controle o risco em mercados de alta volatilidade e aproveite as oportunidades em tendências de baixa volatilidade.
Aumento do mecanismo de suspensãoDesenhar uma estratégia de stop-loss dinâmica baseada na volatilidade do mercado, protegendo os lucros já obtidos e limitando as perdas de uma única transação. Isso evita a retirada de lucros significativos causados pelo atraso de reação do CCI de longo período.
Optimização de intervalos horáriosAjustar os parâmetros da estratégia ou a lógica de negociação para os diferentes períodos de negociação (por exemplo, abertura, fechamento) para adaptar as características do mercado em cada período. Os mercados costumam apresentar diferentes características de flutuação e tendência em diferentes períodos de tempo. A otimização direcionada pode aumentar a estabilidade da estratégia.
Aumentar o controlo de retiradaDesenhar um mecanismo de controle de retração máxima, reduzindo automaticamente a posição ou suspendendo a negociação em caso de fraco desempenho da estratégia, para evitar perdas contínuas. Este mecanismo ajuda a estratégia a se proteger em um ambiente de mercado desfavorável.
A estratégia de negociação de acompanhamento de tendências de impulso de CCI de ciclo duplo é um sistema de acompanhamento de tendências altamente eficiente baseado em indicadores de CCI que, ao mesmo tempo em que identifica a direção da tendência do mercado, capta o melhor momento de entrada através da sinergia do CCI de ciclo curto e longo. A estratégia é projetada de forma simples e eficaz, especialmente adequada para mercados de tendência clara.
/*backtest
start: 2024-07-03 00:00:00
end: 2025-07-01 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/
// @version=6
// @description= Trend-following trading strategy based on the Commodity Channel Index (CCI) and price action confirmation.
// The strategy focuses on identifying momentum-driven trends with entry and exit conditions.
// @author: withoutbug
strategy("Momentum CCI Trend Following Strategy",
overlay=false,
initial_capital=10000,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100,
commission_type=strategy.commission.percent,
commission_value=0.075,
margin_long=0,
margin_short=0)
// Input parameters
cciLongPeriod = input.int(50, "Long CCI Period", minval=1)
cciShortPeriod = input.int(5, "Short CCI Period", minval=1)
twoWayTrading = input(false, "Enable Short Order Book")
// Calculate CCI
cciLong = ta.cci(hlc3, cciLongPeriod)
cciShort = ta.cci(hlc3, cciShortPeriod)
cciLongCrossUnderZero = ta.crossunder(cciLong, 0)
cciShortCrossOverZero = ta.crossover(cciShort, 0)
cciLongCrossOverZero = ta.crossover(cciLong, 0)
cciShortCrossUnderZero = ta.crossunder(cciShort, 0)
// Track CCI Long > 0 state and first crossover
var bool inPositiveCciLongCycle = false
var bool firstCrossoverOccurred = false
var bool firstCrossunderOccurred = false
// Update CCI Long cycle state
firstCrossoverOccurred := false
firstCrossunderOccurred := false
// Buy conditions
buySignal = strategy.position_size==0 and cciLong > 0 and cciLong[1] > 0 and cciShortCrossOverZero and firstCrossoverOccurred == false
if buySignal
firstCrossoverOccurred := true
// Exit conditions
exitLong = strategy.position_size>0 and cciLongCrossUnderZero
// Sell conditions
sellSignal = strategy.position_size==0 and cciLong < 0 and cciLong[1] < 0 and cciShortCrossUnderZero and firstCrossunderOccurred == false
if sellSignal
firstCrossunderOccurred := true
// Exit conditions
exitShort = strategy.position_size<0 and cciLongCrossOverZero
// Strategy logic
if (buySignal)
strategy.entry("Long", strategy.long)
if (exitLong)
strategy.close("Long", comment="CCI Exit Long")
if (sellSignal and twoWayTrading)
strategy.entry("Short", strategy.short)
if (exitShort and twoWayTrading)
strategy.close("Short", comment="CCI Exit Short")
// Plot CCI indicators on the panel
plot(cciLong, title="Long CCI", color = cciLong>=0 ? color.green:color.red, linewidth=2, style = plot.style_area)
plot(cciShort, title="Short CCI", color=color.yellow, linewidth=1)
hline(0, "Zero Line", color=color.gray, linestyle=hline.style_solid)
// Plot buy and sell signals on the panel
plotshape(buySignal, title="Buy Signal", location=location.bottom, color=color.green, style=shape.triangleup, size=size.tiny)
plotshape(exitLong, title="exitLong", location=location.top, color=color.red, style=shape.triangledown, size=size.tiny)
plotshape(sellSignal, display = twoWayTrading?display.pane:display.none, title="Sell Signal", location=location.top, color=color.red, style=shape.triangledown, size=size.tiny)
plotshape(exitShort, display = twoWayTrading?display.pane:display.none, title="exitShort", location=location.bottom, color=color.green, style=shape.triangleup, size=size.tiny)