Descrição: A estratégia determina a direção da tendência através da direção do preço de fechamento de uma linha K de raiz N contínua, gerando um sinal de negociação quando o preço de fechamento de uma linha K de raiz N contínua é condicional. O tamanho de N é definido pelo parâmetro de entrada confirmBars. A estratégia usa principalmente a direção do preço de fechamento de uma linha K de raiz N contínua para determinar a intensidade da tendência.
Princípio: A estratégia julga a força de um aumento ou queda de preço através do acompanhamento do tamanho do preço de fechamento da última linha K em relação à linha K anterior. Concretamente, define as duas variáveis bcount e scount, que registram, respectivamente, o número de raízes de aumento e queda de preços de fechamento consecutivos.
Quando o bcount atinge o valor da configuração do confirmBars, o preço de fechamento da linha K da raiz de Bars contínuo aumenta, gerando um sinal de compra. Quando o scount atinge o valor da configuração do confirmBars, o preço de fechamento da linha K da raiz de Bars contínuo diminui, gerando um sinal de venda.
Assim, ao determinar a direção do preço de fechamento de várias linhas K consecutivas, pode-se filtrar efetivamente o ruído das flutuações de curto prazo do mercado, gerando sinais de negociação apenas com uma tendência de maior intensidade.
Análise de vantagens:
Filtração eficaz de ruído para identificar tendências A estratégia requer que o sinal de negociação seja gerado apenas quando o preço de fechamento da linha K de raiz N se encaixa, filtrando o impacto das flutuações normais do mercado sobre a negociação e garantindo que as posições sejam abertas somente quando há uma tendência mais forte.
Parâmetros ajustáveis para a intensidade de filtragem Ao ajustar o tamanho dos parâmetros das barras de confirmação, pode-se controlar a intensidade de filtragem das flutuações de preço. Quanto maior o parâmetro, melhor o efeito de filtragem do ruído, mas também é fácil perder as oportunidades iniciais de tendências.
Análise de Riscos:
Pode ter perdido uma oportunidade no início da tendência A estratégia requer que vários fechamentos de linha K consecutivos estejam de acordo para gerar um sinal, portanto, muitas vezes a oportunidade inicial de uma tendência é perdida e a tendência não pode ser seguida a tempo.
É fácil de quebrar o limite de perda Quando a raiz de confirmação confirmBars é muito grande, é fácil de ser enganado pela linha curta inversa na fase inicial da tendência, resultando em uma saída de parada.
Otimização:
Combinado com outros indicadores de filtragem de brechas falsas Pode ser combinado com outros indicadores técnicos, como a banda de Brin, RSI e outros para filtragem secundária de sinais de compra e venda, reduzindo a possibilidade de ser falsificado.
Parâmetros de ajuste dinâmico Pode-se também tentar ajustar os parâmetros das barras de confirmação de acordo com a dinâmica do mercado, aumentando o valor do parâmetro quando o mercado está em turbulência, filtrando o ruído; e diminuindo o valor do parâmetro quando a tendência é evidente, seguindo a tendência.
Resumo: A estratégia atinge o efeito de filtragem de choques e confirmação de tendências, julgando a direção do preço de encerramento de várias linhas K consecutivas. Ela pode reduzir efetivamente os erros de negociação causados pela volatilidade do mercado em curto prazo, gerando sinais de negociação apenas quando a tendência é evidente. Ao ajustar o tamanho dos parâmetros das ConfirmBars, o usuário pode equilibrar automaticamente a relação entre o efeito de filtragem e a oportunidade de capturar a tendência.
/*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")