
O Sistema de Negociação Multidimensional de Métodos de Adaptação de Tendências de Método de Método de Método Multidimensional é uma estratégia de negociação quantitativa baseada na teoria de Método de Método de Método de Método de Método de Método de Método de Método de Método de Shannon. O sistema combina o princípio de pesagem recente da média móvel do índice (EMA), o desvio de variação do índice (RSI) relativamente forte, a escalação de variação da média real (ATR) e a intensidade da tendência (ADX) no índice de direção média (ADX) em uma única pontuação.
O princípio central da estratégia é a aplicação do algoritmo de Shannon para a análise de padrões de mapeamento de mercados financeiros. O algoritmo de Shannon é derivado da teoria da informação e é usado para quantificar a incerteza ou “confusão” de variáveis aleatórias. Na estratégia, o algoritmo é calculado e aplicado da seguinte forma:
A pontuação final do CETP é o produto composto desses fatores, com valores positivos tendendo a ser otimistas e valores negativos tendendo a ser pessimistas. A lógica de negociação é simples e direta: faça mais quando o CETP está acima do limiar positivo definido e faça zero quando está abaixo do limiar negativo. Para evitar pequenas negociações, a estratégia inclui um filtro de movimento de preço mínimo, garantindo que o gráfico de filtragem atual tenha uma amplitude suficiente para desencadear a negociação.
Sinais de integraçãoOs indicadores CETP-Plus combinam as vantagens de vários indicadores tradicionais (EMA, RSI, ATR, ADX) para fornecer um sinal de negociação único e claro, evitando o risco de conflito de indicadores e de superalimento.
Forte adaptaçãoA estratégia é capaz de ajustar-se automaticamente às condições do mercado, adaptando-se a diferentes ambientes de volatilidade e intensidade de tendências, e pode funcionar bem em vários estados de mercado sem a necessidade de intervenção manual.
Processamento de polinômios simétricosA estratégia dá igual importância às oportunidades de ativos e passivos, permitindo que elas funcionem de forma eficiente em mercados de ativos e passivos e não sejam afetadas por preconceitos direcionais.
Identificação de tendências precocesO conceito de “cookies” capta as mudanças na estrutura do mercado, permitindo identificar a formação precoce de tendências antes dos indicadores tradicionais, oferecendo melhores oportunidades de entrada.
Reduzir o impacto do ruídoA estratégia é capaz de distinguir os sinais reais do ruído do mercado, reduzindo a ocorrência de sinais falsos, através da análise de casca e da tecnologia de descascamento de gráficos rectângulos.
PersonalizaçãoA grande quantidade de parâmetros pode ser otimizada para diferentes tipos de negociação e prazos de tempo, o que torna a estratégia altamente flexível e adaptável.
Gerenciamento de riscos completoO sistema de controle de risco em vários níveis é integrado, incluindo paradas percentuais, paradas dinâmicas e paradas de rastreamento baseadas em ATR, além de filtros de negociação mínima para controlar efetivamente as retrações.
Sensibilidade do parâmetroA estratégia contém vários parâmetros ajustáveis, e a otimização excessiva pode levar a um mau desempenho nas negociações em disco. Diferentes ambientes de mercado podem exigir diferentes configurações de parâmetros, o que complica a manutenção do sistema.
Riscos de negociação de alta frequênciaA estratégia pode gerar uma grande quantidade de sinais de negociação, especialmente em mercados com alta volatilidade, resultando em sobre-negociação, aumento de custos de comissão e aumento de deslizamentos.
Complexidade do cálculoO cálculo de divisão de caixas e caixas de gráficos tridimensionais pode exigir recursos computacionais mais elevados quando executado em tempo real, podendo causar atrasos na execução, especialmente em períodos de tempo mais curtos.
Algoritmos de riscoA estratégia baseia-se na hipótese de que a pirâmide pode capturar eficazmente os padrões de mercado, mas a estrutura do mercado pode mudar com o tempo, o que torna essa hipótese inválida.
Dependência volátilA estratégia usa filtros de volatilidade e filtros de movimentação de preços mínimos, podendo perder oportunidades de negociação em ambientes de baixa volatilidade e podendo ser excessivamente sensível em ambientes de alta volatilidade.
Risco de coincidência históricaApesar da estratégia combinar vantagens em vários indicadores, existe o risco de excesso de ajuste de dados históricos, e a mudança de condições de mercado no futuro pode levar a uma queda no desempenho.
As soluções incluem: re-otimizar os parâmetros periodicamente, verificar a estabilidade dos parâmetros usando testes em etapas, implementar condições de filtragem mais rigorosas para reduzir a frequência de negociação, aumentar os requisitos de confirmação para melhorar a qualidade do sinal e ajustar os parâmetros de risco para o desempenho do sistema de monitoramento em tempo real.
Mecanismo de parâmetros de adaptaçãoA realização de ajustes dinâmicos dos parâmetros, otimizando automaticamente as janelas, os limites e os pesos do CETP de acordo com a volatilidade do mercado, o volume de transações e a intensidade da tendência. Esta otimização pode permitir que o sistema se adapte melhor às mudanças nas condições do mercado, reduzindo a necessidade de intervenção manual.
Integração de análise de multi-quadros temporais: Integração de sinais CETP de diferentes prazos de tempo para criar um sistema de confirmação de hierarquia. Por exemplo, execute uma transação apenas quando o sinal de um período de tempo mais alto coincide com o sinal de um período de tempo de negociação, aumentando a taxa de vitória.
Aprendizagem de máquinaIntrodução de algoritmos de aprendizagem de máquina para otimizar a seleção de parâmetros e filtragem de sinais. Identificação de combinações de parâmetros de melhor desempenho através de aprendizado supervisionado, ou uso de algoritmos de agregação para identificar diferentes estados de mercado e ajustar a estratégia de acordo.
Filtros de liquidez e volume de transaçõesA adição de filtros baseados no volume de transações e na profundidade do mercado, assegurando a negociação somente em condições de liquidez suficiente, reduzindo os pontos de deslizamento e o risco de execução.
Análise de correlação entre vários ativosIntegração de informações de mercados relevantes (como índices, ações ou mercadorias relevantes) para aumentar a confiança de negociação quando vários mercados relevantes apresentam sinais de concordância.
Modelo de previsão de volatilidadeDesenvolver componentes de previsão de volatilidade, ajustando antecipadamente os parâmetros de risco e os limites para se preparar para o ambiente de volatilidade que se aproxima.
Automatização de feedback e estrutura de otimizaçãoO objetivo é: criar sistemas automatizados para reevaluar regularmente as estratégias com novos dados e ajustar os parâmetros de acordo com as últimas ações do mercado, garantindo que as estratégias permaneçam adaptáveis.
O objetivo das melhorias acima é aumentar a robustez, adaptabilidade e rentabilidade das estratégias, reduzindo a necessidade de intervenção humana e o risco de superalimento. Com a implementação progressiva dessas melhorias, é possível construir um sistema de negociação mais inteligente e autônomo.
O sistema de negociação autodiagnosticado multidimensional de fluxo de caixa representa uma inovadora metodologia de negociação quantitativa, que capta a ordem e a previsibilidade nos modelos de preços através da aplicação do conceito de fluxo de caixa da teoria da informação aos mercados financeiros. A principal vantagem da estratégia reside na integração dos princípios matemáticos de vários indicadores técnicos tradicionais, criando um sinal de negociação único e claro, evitando conflitos de indicadores e sinais de confusão. O indicador CETP-Plus oferece uma oportunidade de negociação multi-espaço para identificar e equilibrar tendências precoces, combinando desvios de fluxo de caixa, intensidade de tendência e ajuste de volatilidade, através de um gráfico vertical tridimensional.
Apesar de ter uma forte capacidade de adaptação e gestão de risco, a estratégia enfrenta desafios como sensibilidade de parâmetros, complexidade de computação e mudanças na estrutura do mercado. A robustez e o desempenho a longo prazo da estratégia podem ser melhorados com a implementação de orientações de otimização recomendadas, como mecanismos de parâmetros de adaptação, análise de quadros temporais múltiplos e aprimoramento de aprendizagem de máquina.
No geral, trata-se de um sistema de negociação quantitativa com uma base sólida em teoria, projetado de forma sofisticada, adequado para o uso de comerciantes com formação em programação e estatística em mercados altamente voláteis. Com a otimização cuidadosa dos parâmetros e o monitoramento sistemático contínuo, a estratégia tem o potencial de gerar retornos de ajuste de risco estáveis em vários ambientes de mercado.
/*backtest
start: 2024-08-11 00:00:00
end: 2025-08-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
// @version=6
strategy("Canuck Trading Traders Strategy [Candle Entropy Edition]", overlay=true, default_qty_value = 10)
// Note: Set Properties "Order size" to "100% of equity" for equity-based sizing or fixed contracts (e.g., 100).
// === CETP-Plus Settings ===
cetp_window = input.int(5, "CETP Window", minval=1, maxval=20, group="CETP-Plus Settings")
cetp_bins = input.int(3, "CETP Bins per Dimension", minval=1, maxval=10, group="CETP-Plus Settings")
long_threshold = input.float(0.1, "Long Threshold", minval=0.01, maxval=5.0, step=0.01, group="CETP-Plus Settings")
short_threshold = input.float(-0.1, "Short Threshold", minval=-0.8, maxval=-0.01, step=0.01, group="CETP-Plus Settings")
cetp_k = input.float(0.8, "CETP Momentum Weight", minval=0.1, maxval=5.0, step=0.1, group="CETP-Plus Settings")
mom_scale = input.float(6.0, "Momentum Scale", minval=1.0, maxval=20.0, step=1.0, group="CETP-Plus Settings")
body_weight = input.float(1.0, "Body Ratio Weight", minval=0.0, maxval=2.0, step=0.1, group="CETP-Plus Settings")
upper_weight = input.float(0.8, "Upper Wick Ratio Weight", minval=0.0, maxval=2.0, step=0.1, group="CETP-Plus Settings")
lower_weight = input.float(1.0, "Lower Wick Ratio Weight", minval=0.0, maxval=2.0, step=0.1, group="CETP-Plus Settings")
decay_factor = 0.8 // Hardcoded decay for exponential weighting (recent candles weighted more)
// === Trade Settings ===
min_score_strength = input.float(0.03, "Min CETP Score Strength", minval=0.0, maxval=5, step=0.01, group="Trade Settings")
stop_loss_pct = input.float(0.5, "Stop Loss (%)", minval=0.1, maxval=5.0, step=0.1, group="Trade Settings")
atr_mult = input.float(3.0, "ATR Multiplier", minval=0.5, maxval=10.0, step=0.1, group="Trade Settings")
trail_mult = input.float(5.0, "Trailing ATR Mult", minval=0.5, maxval=10.0, step=0.1, group="Trade Settings")
trail_offset_pct = input.float(1.0, "Trail Start Offset (%)", minval=0.5, maxval=10.0, step=0.1, group="Trade Settings")
min_price_move_mult = input.float(2.0, "Min Price Move ATR Mult (to avoid tiny trades)", minval=0.5, maxval=10.0, step=0.1, group="Trade Settings") // Filter tiny moves
// Indicators (ATR for stops/trails only)
atr = nz(ta.atr(14), 0.0)
// Volatility Filter (CV < 15% to avoid chop)
vol_threshold = ta.stdev(close, 20) / ta.sma(close, 20) * 100
trade_allowed = vol_threshold < 15.0
// Minimum Price Move Filter (candle range > ATR multiple, floored by min tick)
min_price_move = math.max(atr * min_price_move_mult, syminfo.mintick * 10) // Avoid sub-penny moves; 10x tick for robustness
price_move_condition = (high - low) > min_price_move // Fixed: Use high - low instead of ta.range()
// CETP-Plus Calculation (Blended EMA, RSI, ATR, ADX theses)
epsilon = 1e-5
body_ratio = (close - open) / (high - low + epsilon) * body_weight
upper_wick_ratio = (high - math.max(open, close)) / (high - low + epsilon) * upper_weight
lower_wick_ratio = (math.min(open, close) - low) / (high - low + epsilon) * lower_weight
// EMA-like weighting: Exponentially weight recent candles with fixed-size rolling arrays
var float[] body_arr = array.new_float(cetp_window, 0.0)
var float[] upper_arr = array.new_float(cetp_window, 0.0)
var float[] lower_arr = array.new_float(cetp_window, 0.0)
// Shift and decay older values, add new at the end
for i = 0 to cetp_window - 2
array.set(body_arr, i, array.get(body_arr, i + 1) * decay_factor)
array.set(upper_arr, i, array.get(upper_arr, i + 1) * decay_factor)
array.set(lower_arr, i, array.get(lower_arr, i + 1) * decay_factor)
array.set(body_arr, cetp_window - 1, body_ratio)
array.set(upper_arr, cetp_window - 1, upper_wick_ratio)
array.set(lower_arr, cetp_window - 1, lower_wick_ratio)
// Volatility scaling (ATR thesis)
bin_size = 2.0 / cetp_bins * (1 + atr / ta.sma(atr, 14))
hist_size = cetp_bins * cetp_bins * cetp_bins
var int[] hist = array.new_int(hist_size, 0)
array.fill(hist, 0)
for i = 0 to cetp_window - 1
body_val = array.get(body_arr, i)
upper_val = array.get(upper_arr, i)
lower_val = array.get(lower_arr, i)
body_bin = math.max(0, math.min(cetp_bins - 1, math.floor((body_val + 1) / bin_size)))
upper_bin = math.max(0, math.min(cetp_bins - 1, math.floor((upper_val + 1) / bin_size)))
lower_bin = math.max(0, math.min(cetp_bins - 1, math.floor((lower_val + 1) / bin_size)))
bin_idx = body_bin * (cetp_bins * cetp_bins) + upper_bin * cetp_bins + lower_bin
array.set(hist, bin_idx, array.get(hist, bin_idx) + 1)
entropy = 0.0
for i = 0 to hist_size - 1
count = array.get(hist, i)
p = count / cetp_window
if p > 0
entropy := entropy - p * math.log(p)
max_entropy = math.log(hist_size)
norm_entropy = max_entropy > 0 ? entropy / max_entropy : 0.0
// RSI-like momentum bias
avg_gain = ta.rma(math.max(close - close[1], 0), cetp_window)
avg_loss = ta.rma(math.max(close[1] - close, 0), cetp_window)
rsi_bias = avg_loss > 0 ? avg_gain / avg_loss : 1.0
momentum = ta.mom(close, cetp_window) / (close[cetp_window] != 0 ? close[cetp_window] : 1e-5)
momentum_adj = momentum * (1 + rsi_bias)
// ADX-like trend strength (automated and symmetric for bull/bear)
di_plus = ta.rma(math.max(high - high[1], 0), cetp_window) / atr
di_minus = ta.rma(math.max(low[1] - low, 0), cetp_window) / atr
trend_strength = di_plus > di_minus ? 1.2 : (di_minus > di_plus ? 1.2 : 1.0)
// CETP-Plus Score (optimized: no abs on momentum_adj to preserve sign for better short detection)
avg_body = nz(array.avg(body_arr), 0.0)
raw_score = avg_body * (1 - norm_entropy) * (cetp_k + momentum_adj * mom_scale)
cetp_score = nz(raw_score * trend_strength, 0.0)
// Position State
var float entry_price = na
var int bars_held = 0
if barstate.isconfirmed
bars_held := strategy.position_size != 0 ? bars_held + 1 : 0
// Trade Logic: Rely solely on current CETP score for entries/exits/reversals, with min price move filter
if bar_index >= cetp_window and math.abs(cetp_score) > min_score_strength and trade_allowed and price_move_condition
if cetp_score > long_threshold
if strategy.position_size < 0
strategy.close("Short", comment="Reverse to Long")
if strategy.position_size <= 0
strategy.entry("Long", strategy.long)
entry_price := close
sl = entry_price * (1 - stop_loss_pct / 100) - atr * atr_mult
strategy.exit("Long Exit", "Long", stop=sl, trail_points=atr * trail_mult * syminfo.pointvalue, trail_offset=entry_price * (trail_offset_pct / 100))
bars_held := 1
else if cetp_score < short_threshold
if strategy.position_size > 0
strategy.close("Long", comment="Reverse to Short")
if strategy.position_size >= 0
strategy.entry("Short", strategy.short)
entry_price := close
sl = entry_price * (1 + stop_loss_pct / 100) + atr * atr_mult
strategy.exit("Short Exit", "Short", stop=sl, trail_points=atr * trail_mult * syminfo.pointvalue, trail_offset=entry_price * (trail_offset_pct / 100))
bars_held := 1