Visão geral: Esta estratégia julga a direção da tendência com base na direção do preço de fechamento de N velas consecutivas. Os sinais de negociação são gerados quando os preços de fechamento de N velas consecutivas atendem à condição. O tamanho de N é definido pelo parâmetro de entrada confirmBars. Esta estratégia utiliza principalmente a direção dos preços de fechamento de N velas consecutivas para determinar a força da tendência.
Princípio:
A estratégia rastreia a relação entre os preços de fechamento do último candelabro e o anterior para julgar a força dos aumentos e quedas de preços. Especificamente, define duas variáveis bcount e scount para registrar o número de preços de fechamento de candelabro consecutivos que aumentam e caem.
Quando o bcount atinge o valor definido pela confirmBars, significa que os preços de fechamento das velas consecutivas confirmBars subiram, gerando um sinal de compra. Quando o scount atinge o valor definido pela confirmBars, significa que os preços de fechamento das velas consecutivas confirmBars caíram, gerando um sinal de venda.
Ao julgar a direção dos preços de fechamento de vários candelabros consecutivos, as flutuações de curto prazo do mercado podem ser efetivamente filtradas, e os sinais de negociação só são gerados sob tendências de força relativamente grande.
Análise das vantagens:
Filtrar eficazmente o ruído e confirmar tendências
Esta estratégia exige que N candelabros consecutivos fechem os preços para satisfazer as condições antes de gerar sinais de negociação.
Parâmetros de força de filtragem ajustáveis Ao ajustar o tamanho do parâmetro confirmBars, a força de filtragem das flutuações de preços pode ser controlada. Parâmetros maiores têm melhores efeitos de filtragem sobre o ruído, mas também podem perder oportunidades de tendência inicial.
Análise de riscos:
Pode perder oportunidades de tendências iniciais A estratégia requer que vários candelabros consecutivos fechem os preços para atender às condições antes de gerar sinais, de modo que muitas vezes perde oportunidades de tendência precoce e não pode rastrear tendências em tempo hábil.
Previsão de ruptura da perda Quando o número de confirmações confirmBars é definido demasiado grande, é fácil ser enganado por linhas de curto prazo invertidas no estágio inicial da tendência, resultando em breakouts de stop loss.
Orientações de otimização:
Filtrar fugas falsas com outros indicadores
Outros indicadores técnicos, tais como as bandas de Bollinger e o RSI, podem ser utilizados para realizar filtragem secundária dos sinais de compra e venda, a fim de reduzir a possibilidade de falhas.
Ajuste dinâmico dos parâmetros Tente ajustar dinamicamente o parâmetro confirmBars com base nas condições do mercado. Aumentar o valor do parâmetro em mercados voláteis para filtrar o ruído; diminuir o valor do parâmetro quando a tendência é óbvia para seguir a tendência.
Resumo:
Esta estratégia consegue o efeito de filtrar choques e confirmar tendências julgando a direção dos preços de fechamento de vários velas consecutivas. Pode efetivamente reduzir as negociações erradas causadas por flutuações de curto prazo do mercado e gerar sinais de negociação apenas quando as tendências são óbvias. Ajustando o tamanho do parâmetro confirmBars, os usuários podem equilibrar a relação entre os efeitos de filtragem e capturar oportunidades de tendência. No entanto, esta estratégia é propensa a ser interrompida no início da tendência e não consegue rastrear continuamente as tendências. Recomenda-se otimizar com outros indicadores ou tentar o ajuste de parâmetros dinâmicos para buscar melhores retornos.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Confirm Bars Strategy [TS Trader]", overlay=true) confirmBars = input(1) // === INPUT BACKTEST RANGE === fromYear = input.int(2019, title="Backtest Start Year") fromMonth = input.int(1, title="Backtest Start Month", minval=1, maxval=12) fromDay = input.int(1, title="Backtest Start Day", minval=1, maxval=31) toYear = input.int(2023, title="Backtest End Year") toMonth = input.int(12, title="Backtest End Month", minval=1, maxval=12) toDay = input.int(31, title="Backtest End Day", minval=1, maxval=31) startTimestamp = timestamp(fromYear, fromMonth, fromDay, 00, 00) endTimestamp = timestamp(toYear, toMonth, toDay, 23, 59) inBacktestRange = true // === STRATEGY LOGIC === bcount = 0 bcount := close[1] < close ? nz(bcount[1]) + 1 : 0 if (bcount == confirmBars and inBacktestRange) strategy.entry("Buy", strategy.long, comment="Long") scount = 0 scount := close[1] > close ? nz(scount[1]) + 1 : 0 if (scount == confirmBars and inBacktestRange) strategy.entry("Sell", strategy.short, comment="Short")