
A estratégia de negociação de entrada contínua baseada no ADX e na Supertrend é uma estratégia de negociação quantitativa que combina indicadores direcionais com ferramentas de confirmação de tendências, que cria um sistema de negociação abrangente através da integração de indicadores de orientação média (ADX), indicadores de movimento direcional (DMI) e Supertrend, além de uma análise de blocos de ordens (Order Block) complementada por transações ponderadas. A estratégia enfatiza especialmente o mecanismo de verificação de condições contínuas, ou seja, o sinal de negociação é acionado somente após o cumprimento de várias condições técnicas.
A lógica central da estratégia baseia-se nos seguintes componentes-chave:
Análise dos indicadores ADX e DMI: O sistema usa o indicador ADX para medir a força da tendência do mercado e determina a direção da tendência através da comparação dos valores +DI e -DI. Quando o valor do ADX é maior do que o valor de queda definido (default 25), indica a existência de uma forte tendência no mercado; +DI maior do que -DI indica uma tendência de baixa, e vice-versa indica uma tendência de baixa.
Confirmação da tendência da SupertrendO indicador de Supertrend é usado como uma ferramenta de confirmação de tendência secundária, apoiando a compra quando ele mostra um sinal positivo ((trend == -1)) e apoiando a venda quando ele mostra um sinal negativo ((trend == 1). A mudança na Supertrend também é usada como um dos sinais de saída.
Bloco de pedidos ponderados por volume de entregaA estratégia introduziu um mecanismo de identificação de áreas de suporte e resistência dinâmicas baseadas na quantidade de transações. Quando a transação excede um determinado múltiplo da média (default 2x) e o preço atinge um ponto alto ou baixo local, o sistema marca essas áreas como blocos de pedidos potenciais e mantém sua validade por um período de tempo definido (default 15 ciclos).
Verificação de condições de continuidadeA parte mais exclusiva da estratégia é o seu mecanismo de verificação de condições de continuidade. O sistema rastreia as condições de negociação por meio de quatro indicadores de Bull: condições de tendência, condições de ADX, condições de DMI e condições regionais.
Condições:
Condições de venda:
Logia de saída: quando o indicador Supertrend muda de direção, a estratégia compensa a posição atual.
Mecanismo de confirmação múltiplaA estratégia reduziu significativamente os falsos sinais e aumentou a precisão das negociações através da integração de vários indicadores técnicos. A combinação de ADX e Supertrend, em particular, garante a força da tendência e fornece orientação clara sobre a direção.
Verificação de condições de continuidadeO mecanismo de verificação de continuidade da estratégia permite que o sistema volte a agir quando todas as condições estão maduras, ao invés de desencadear uma transação com base em um único sinal. Esta concepção aumenta consideravelmente a estabilidade da estratégia e reduz as transações desnecessárias em condições de mercado desfavoráveis.
Identificação de suporte e resistência dinâmicosA análise de blocos de pedidos baseada em volumes negociados fornece uma referência dinâmica de suporte e resistência para a estratégia, permitindo que as decisões de negociação estejam mais próximas da microestrutura do mercado e evitando negociações adversas em áreas de preços-chave.
Mecanismos de saída clarosA estratégia usa a reversão da Supertrend como um sinal de saída, fornecendo uma forma objetiva e oportuna de parar e parar, gerenciando efetivamente o risco de cada transação.
Altamente adaptávelA estratégia pode ser adaptada a diferentes ambientes de mercado e variedades de negociação, aumentando sua praticidade e flexibilidade, através de vários parâmetros ajustáveis.
Sensibilidade do parâmetroA eficácia da estratégia depende muito da configuração dos parâmetros. A escolha de parâmetros como a duração do ADX, o múltiplo da Supertrend e o ciclo ATR têm um impacto significativo no desempenho da estratégia. A configuração inadequada dos parâmetros pode levar a excesso de negociação ou perda de oportunidades importantes.
Risco de reversão de tendênciaApesar do uso de mecanismos de confirmação múltipla, a estratégia ainda pode estar em risco de atraso em um ambiente de forte reversão de mercado ou de alta volatilidade. A solução é considerar a introdução de filtros de taxa de flutuação ou ajustar dinamicamente o limiar ADX para se adaptar a diferentes estados de flutuação do mercado.
Risco de anormalidade do rendimentoA estratégia depende da análise de volume de transações, podendo gerar identificação de blocos de pedidos errados em casos de anomalias de volume de transações (como um volume de transações extraordinariamente grande e repentino). A solução é aumentar o processamento de suavização de transações ou introduzir mecanismos adicionais de detecção de anomalias.
Risco de otimização excessivaComo a estratégia contém vários parâmetros ajustáveis, é fácil levar a otimização excessiva, fazendo com que a estratégia se comporte bem em dados históricos, mas não seja eficaz em negociações reais. A solução é adotar testes avançados e testes fora da amostra para garantir a solidez da estratégia.
Risco de liquidezEm mercados de baixa liquidez, uma grande quantidade de transações pode causar deslizamentos ou atrasos na execução de ordens, afetando a eficácia da estratégia. A solução é adicionar condições de filtragem de liquidez adicionais em ambientes de baixa liquidez ou ajustar o tamanho da posição.
Ajuste de parâmetros dinâmicosA estratégia pode ser ainda mais otimizada para ajustar automaticamente os parâmetros do ADX e do Supertrend de acordo com a volatilidade do mercado. Por exemplo, pode-se aumentar o ADX em períodos de alta volatilidade, reduzindo os falsos sinais de ruptura; em períodos de baixa volatilidade, pode-se reduzir o ADX, aumentando a sensibilidade. Este mecanismo de adaptação pode adaptar melhor a estratégia a diferentes fases do mercado.
Integração do filtro de tempoA introdução de filtros de tempo permite evitar a negociação em momentos de abertura, fechamento ou baixa liquidez do mercado. Esta otimização aplica-se especialmente às estratégias de negociação diárias, reduzindo significativamente as transações desnecessárias causadas pelo ruído do mercado.
Análise de Multi-Framas de TempoA estratégia pode garantir que a direção da negociação esteja alinhada com a tendência maior, integrando informações de tendência de um período de tempo mais longo. Por exemplo, executar uma negociação somente quando a tendência da linha do dia e a tendência da linha da hora estão alinhadas, o que pode aumentar a taxa de vitória e reduzir o risco de negociação contracorrente.
Gestão de Riscos reforçadaA estratégia atual de saída é relativamente simples, e o gerenciamento de risco pode ser aumentado com a adição de stop loss móvel, filtragem de perda por perda ou computação de stop loss baseada na volatilidade. Estas melhorias podem proteger melhor os lucros e controlar o risco em cada transação.
Classificação do estado do mercadoIntrodução de um mecanismo de classificação de estados de mercado, permitindo que a estratégia identifique diferentes ambientes de mercado, como períodos de liquidação, períodos de tendência e períodos de alta volatilidade, e ajuste a lógica de negociação de acordo com isso. Esta otimização pode evitar a negociação em condições de mercado que não são adequadas para a estratégia, aumentando ainda mais a robustez da estratégia.
A estratégia de negociação de entrada contínua baseada no ADX e na Supertrend constrói um sistema de negociação abrangente e robusto por meio da integração de vários indicadores técnicos e um mecanismo exclusivo de verificação de condições de continuidade. A estratégia enfatiza especialmente a negociação em condições de mercado ideais, evitando muitas das armadilhas de sinais errôneos comuns.
Apesar das vantagens da estratégia, os usuários precisam estar atentos aos problemas potenciais, como sensibilidade de parâmetros, risco de reversão de tendência e otimização excessiva. Há muito espaço para otimização da estratégia através da introdução de ajustes de parâmetros dinâmicos, análise de múltiplos períodos de tempo e mecanismos de gerenciamento de risco aprimorados.
/*backtest
start: 2024-07-22 00:00:00
end: 2025-07-20 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":2000000}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © algostudio
//Code Generated using PineGPT - www.marketcalls.in
//@version=6
strategy("ADX + Supertrend Persistent Entry Logic", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, process_orders_on_close=true, calc_on_every_tick=true, max_bars_back=500)
// === INPUTS === //
adxLen = input.int(7, "ADX Length")
dilen = input.int(7, "+DI/-DI Length")
adxThresh = input.float(25, "ADX Threshold")
supertrendFactor = input.float(2.0, "Supertrend Multiplier", minval=0.1)
supertrendLen = input.int(7, "Supertrend ATR Length")
volLookback = input.int(10, "Volume Zone Lookback")
volMult = input.float(2.0, "Volume Threshold Multiplier")
zoneDuration = input.int(15, "Zone Display Duration")
// === ADX AND DI CALCULATION === //
[plusDI, minusDI, adx] = ta.dmi(dilen, adxLen)
// === SUPER TREND CALCULATION === //
[supertrend, trend] = ta.supertrend(supertrendFactor, supertrendLen)
bullishSupertrendShift = trend == -1 and trend[1] == 1
bearishSupertrendShift = trend == 1 and trend[1] == -1
// === DYNAMIC ORDER BLOCK ZONES (Volume weighted) === //
volThreshold = ta.sma(volume, volLookback) * volMult
volHighs = high == ta.highest(high, 5) and volume > volThreshold
volLows = low == ta.lowest(low, 5) and volume > volThreshold
obSupportValid = ta.valuewhen(volLows, low, 0)
bbResistanceValid = ta.valuewhen(volHighs, high, 0)
obSupportStart = ta.valuewhen(volLows, bar_index, 0)
bbResistanceStart = ta.valuewhen(volHighs, bar_index, 0)
obSupportEnd = obSupportStart + zoneDuration
bbResistanceEnd = bbResistanceStart + zoneDuration
inObZone = bar_index >= obSupportStart and bar_index <= obSupportEnd
inBbZone = bar_index >= bbResistanceStart and bar_index <= bbResistanceEnd
// === PLOT ZONES === //
plot(inObZone ? obSupportValid : na, title="OB Support Line", color=color.green, linewidth=2)
plot(inBbZone ? bbResistanceValid : na, title="BB Resistance Line", color=color.red, linewidth=2)
plot(supertrend, color=trend == 1 ? color.red : color.green, title="Supertrend")
// === PERSISTENT FLAGS === //
var bool buyTrendMet = false
var bool buyAdxMet = false
var bool buyDiMet = false
var bool buyZoneClear = false
var bool sellTrendMet = false
var bool sellAdxMet = false
var bool sellDiMet = false
var bool sellZoneClear = false
// === READY FLAGS (declare early to resolve use-before-declare issues) === //
buyReady = buyTrendMet and buyAdxMet and buyDiMet and buyZoneClear
sellReady = sellTrendMet and sellAdxMet and sellDiMet and sellZoneClear
// Track condition flags
buyTrendMet := trend == -1 ? true : buyTrendMet
buyAdxMet := adx > adxThresh ? true : (buyReady ? buyAdxMet : false)
buyDiMet := plusDI > minusDI ? true : buyDiMet
buyZoneClear := not inBbZone ? true : buyZoneClear
sellTrendMet := trend == 1 ? true : sellTrendMet
sellAdxMet := adx > adxThresh ? true : (sellReady ? sellAdxMet : false)
sellDiMet := minusDI > plusDI ? true : sellDiMet
sellZoneClear := not inObZone ? true : sellZoneClear
// Recalculate readiness after condition updates
buyReady := buyTrendMet and buyAdxMet and buyDiMet and buyZoneClear
sellReady := sellTrendMet and sellAdxMet and sellDiMet and sellZoneClear
// === STRATEGY ENTRIES === //
if buyReady
strategy.entry("Buy", strategy.long)
buyTrendMet := false
buyAdxMet := false
buyDiMet := false
buyZoneClear := false
if sellReady
strategy.entry("Sell", strategy.short)
sellTrendMet := false
sellAdxMet := false
sellDiMet := false
sellZoneClear := false
// === STRATEGY EXITS === //
if strategy.position_size > 0 and trend == 1
strategy.close("Buy")
if strategy.position_size < 0 and trend == -1
strategy.close("Sell")
// === PLOTS === //
plotshape(buyReady, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(sellReady, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// For more tutorials on Tradingview Pinescript visit , visit https://www.marketcalls.in/category/tradingview