Medição de distância de indicador técnico e estratégia de negociação quantitativa híbrida de reversão MACD

RSI MACD EMA momentum Euclidean Distance Centroid volatility REVERSAL PATTERN TREND FOLLOWING
Data de criação: 2025-04-16 15:19:46 última modificação: 2025-04-16 15:19:46
cópia: 1 Cliques: 379
2
focar em
319
Seguidores

Medição de distância de indicador técnico e estratégia de negociação quantitativa híbrida de reversão MACD Medição de distância de indicador técnico e estratégia de negociação quantitativa híbrida de reversão MACD

Visão geral da estratégia

Esta estratégia é um método de negociação de quantificação híbrida que combina a medição da distância dos indicadores técnicos e os sinais de reversão do MACD. Ela forma uma estratégia de combinação que pode capturar a dinâmica da tendência e identificar potenciais reversões, calculando a distância eqüilíbria entre o estado atual do mercado e os pontos centrais predefinidos de um mercado de alta e baixa, combinando os sinais de cruzamento do MACD.

Princípio da estratégia

A estratégia baseia-se em dois mecanismos principais:

  1. Mecanismo de medição de distânciaA estratégia primeiro constrói um vector de características composto por 6 indicadores técnicos, incluindo a EMA de preço, a taxa de flutuação, a dinâmica, o RSI, a linha MACD e o gráfico em coluna do MACD. Ao mesmo tempo, os dois vectores de ponto central do mercado de touros e do mercado de bezerros são predefinidos, representando o estado ideal do mercado quando o mercado está em uma tendência ascendente e descendente, respectivamente.

  2. Mecanismo de sinalização cruzada do MACDComo confirmação de segundo nível, a estratégia usa o sinal de cruzamento do indicador MACD para julgar a mudança de dinâmica do mercado. O sinal de cruzamento do MACD na linha é considerado um sinal de compra, enquanto o sinal de cruzamento do MACD na linha é considerado um sinal de venda.

A combinação desses dois mecanismos forma um sistema de dupla confirmação: a tendência geral do mercado é julgada por meio da medição da distância, e a mudança de dinâmica de curto prazo é julgada por meio do cruzamento do MACD. A estratégia pode usar a confirmação conjunta dos dois mecanismos (a medição da distância e o MACD dão o mesmo sinal ao mesmo tempo) ou pode ser negociada com base em sinais produzidos independentemente de qualquer mecanismo, aumentando a diversidade de sinais e a frequência de oportunidades de captura.

Vantagens estratégicas

  1. Avaliação do estado do mercado multidimensionalAo combinar vários indicadores técnicos em vectores de características, a estratégia pode avaliar o estado do mercado em várias dimensões, em vez de depender apenas de um único indicador, reduzindo assim o risco de falsos sinais.

  2. Mecanismos flexíveis de geração de sinaisA estratégia usa simultaneamente a medição de distância e o MACD para cruzar os dois mecanismos de geração de sinais, tanto para capturar a dinâmica contínua em situações de tendência quanto para detectar em tempo hábil potenciais pontos de reversão, sendo mais adaptável.

  3. Objetividade dos modelos matemáticosO cálculo da distância euclidiana fornece uma maneira objetiva e matemática de avaliar o estado do mercado, reduzindo a influência de fatores de julgamento subjetivos.

  4. Mecanismo de liquidação automáticaA estratégia elimina automaticamente as posições na direção oposta quando novos sinais são gerados, ajudando a parar os prejuízos em tempo hábil e a mudar a direção das posições para se adaptar a mercados em rápida mudança.

  5. Funções de monitoramento de desempenhoA estratégia possui um monitoramento e visualização de ganhos e perdas em tempo real, para avaliar o desempenho da estratégia e fazer os ajustes necessários.

Risco estratégico

  1. Risco de sensibilidade de parâmetrosIndicadores como EMA, RSI e MACD usados na estratégia dependem de configurações específicas de parâmetros. Se esses parâmetros não se adequarem às condições atuais do mercado, pode ocasionar a geração de sinais errados. A solução é encontrar a combinação de parâmetros ótima através do feedback e reavaliar periodicamente a eficácia dos parâmetros.

  2. Risco de excesso de negociaçãoUma vez que a estratégia pode produzir sinais independentemente com base em dois mecanismos diferentes, em mercados com maior volatilidade, pode-se produzir sinais de negociação em excesso, aumentando os custos de negociação. Pode-se reduzir as transações desnecessárias adicionando mecanismos de filtragem de sinais ou ajustando a lógica de geração de sinais.

  3. Conflitos entre tendências e reversão de julgamento: Em certas condições de mercado, a medição de distância e os sinais MACD podem dar instruções contraditórias, causando inconsistência de comportamento estratégico. Recomenda-se a criação de regras claras de prioridade de sinal ou a introdução de mecanismos de confirmação adicionais.

  4. Estática do centro de configuração: Os parâmetros da parte do ponto central do mercado de touros e ursos na estratégia atual são de configuração estática (como o valor do RSI) e podem não ser adaptados a todas as circunstâncias do mercado. Pode ser considerado a introdução de um mecanismo de adaptação que ajuste dinamicamente a posição do ponto central de acordo com os dados históricos.

  5. Limites de um único período de tempoA estratégia só funciona em um único período de tempo, podendo perder sinais importantes em períodos maiores ou menores. Considerar a possibilidade de expandir a estratégia para vários períodos de tempo pode aumentar a confiabilidade do sinal.

Direção de otimização da estratégia

  1. Desenho de pontos centrais adaptativosOs parâmetros parciais dos pontos centrais dos atuais mercados de ações são fixos e podem ser melhorados para pontos centrais dinâmicos, calculados automaticamente com base em dados históricos. Por exemplo, os dados dos últimos N ciclos podem ser usados para determinar o estado ideal dos mercados de ações e de ações, permitindo que os pontos centrais se ajustem automaticamente às condições do mercado.

  2. Prioridade de sinal e mecanismo de filtragemIntrodução de um sistema de prioridade de sinal baseado no ambiente de mercado, como priorizar o sinal de reversão em ambientes de alta taxa de flutuação, priorizar o sinal de medição de distância em ambientes com tendência de baixa taxa de flutuação. Ao mesmo tempo, pode-se aumentar o filtro de sinal baseado na taxa de flutuação ou volume de transação, reduzindo o sinal de ruído.

  3. Mecanismos de objetivos de stop loss e profitA estratégia atual carece de uma definição clara de metas de stop loss e profit, podendo ser adicionada a um mecanismo de stop loss baseado em ATR ou porcentagem fixa, e a uma meta de profit baseada em suporte/resistência ou taxa de retorno do risco.

  4. Integração de análise de multi-quadros temporaisIntegração de informações de tendências de períodos de tempo maiores em estratégias atuais, como, por exemplo, executar sinais de negociação em nível horário somente se a tendência do solstício estiver alinhada, para aumentar a confiabilidade do sinal.

  5. Ajuste dinâmico de peso de característicaA distribuição de pesos dinâmicos para os diferentes indicadores no vector de características, ajustando automaticamente o seu impacto de acordo com a capacidade de previsão de cada indicador em diferentes condições de mercado, aumentando a precisão do cálculo de distância.

  6. Aprendizagem de máquinaPode-se considerar a introdução de algoritmos de aprendizado de máquina simples para otimizar a localização do ponto central ou o peso das características, ou até mesmo usar algoritmos de agregação para descobrir automaticamente os pontos centrais de vários estados do mercado, em vez de apenas os dois estados de um simples touro e um urso.

Resumir

A estratégia de negociação quantitativa de indicadores técnicos de medição de distância e inversão de MACD é uma estratégia de negociação quantitativa inovadora que integra vários indicadores técnicos comuns em um sistema unificado de avaliação do estado do mercado com a tecnologia de cálculo de distância de eucariotas e, em combinação com o sinal de cruzamento de MACD, forma um mecanismo de dupla confirmação. Esta abordagem capta a dinâmica de tendências contínuas e identifica potenciais reviravoltas no mercado, com uma forte adaptabilidade e flexibilidade.

A principal vantagem da estratégia reside na sua capacidade de avaliação de mercados multidimensionais e na objetividade dos modelos matemáticos, mas também enfrenta riscos como sensibilidade de parâmetros, overtrading e conflito de sinais. Há muito espaço para otimização e melhoria da estratégia, introduzindo um design de ponto central adaptativo, otimizando o sistema de prioridade de sinais, aumentando o mecanismo de parada, integrando a análise de múltiplos quadros temporais e aplicando técnicas de aprendizagem de máquina.

Esta estratégia, que combina métodos tradicionais de análise técnica com modelos matemáticos, oferece uma nova direção a explorar para os comerciantes quantitativos, especialmente para aqueles que desejam manter a interpretabilidade da estratégia e, ao mesmo tempo, aumentar a objetividade das decisões de negociação.

Código-fonte da estratégia
/*backtest
start: 2024-04-15 00:00:00
end: 2024-12-31 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Bysq-Distance Reversal Entry - BTCUSDT (v6)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, margin_long=0, margin_short=0)

// ========== FEATURE ENGINEERING ==========
price = close
priceNorm = ta.ema(price, 5)
volatility = ta.stdev(price, 20)
momentum = ta.ema(close - close[5], 5)
rsi = ta.rsi(close, 14)
macdLine = ta.ema(close, 12) - ta.ema(close, 26)
signalLine = ta.ema(macdLine, 9)
macdHist = macdLine - signalLine

// Fitur sebagai vector
featureVector = array.new_float(6)
array.set(featureVector, 0, priceNorm)
array.set(featureVector, 1, volatility)
array.set(featureVector, 2, momentum)
array.set(featureVector, 3, rsi)
array.set(featureVector, 4, macdLine)
array.set(featureVector, 5, macdHist)

// Centroid bullish
bullishCentroid = array.new_float(6)
array.set(bullishCentroid, 0, price)
array.set(bullishCentroid, 1, volatility)
array.set(bullishCentroid, 2, momentum)
array.set(bullishCentroid, 3, 60.0)
array.set(bullishCentroid, 4, macdLine)
array.set(bullishCentroid, 5, macdHist)

// Centroid bearish
bearishCentroid = array.new_float(6)
array.set(bearishCentroid, 0, price)
array.set(bearishCentroid, 1, volatility)
array.set(bearishCentroid, 2, momentum)
array.set(bearishCentroid, 3, 40.0)
array.set(bearishCentroid, 4, macdLine)
array.set(bearishCentroid, 5, macdHist)

// Fungsi Euclidean Distance
euclideanDistance(arr1, arr2) =>
    dist = 0.0
    for i = 0 to array.size(arr1) - 1
        a = array.get(arr1, i)
        b = array.get(arr2, i)
        dist += math.pow((a - b), 2)
    math.sqrt(dist)

// Hitung jarak ke centroid
distToBullish = euclideanDistance(featureVector, bullishCentroid)
distToBearish = euclideanDistance(featureVector, bearishCentroid)

// ========== SINYAL ==========
// Original distance strategy signals
isDistanceBuySignal = distToBullish < distToBearish and ta.crossover(macdLine, signalLine)
isDistanceSellSignal = distToBearish < distToBullish and ta.crossunder(macdLine, signalLine)

// Reversal strategy signals
isReversalBuySignal = ta.crossover(macdLine, signalLine)
isReversalSellSignal = ta.crossunder(macdLine, signalLine)

// Combined signals - using both strategies
isBuySignal = isDistanceBuySignal or isReversalBuySignal
isSellSignal = isDistanceSellSignal or isReversalSellSignal

// ========== EKSEKUSI ==========
if isBuySignal
    strategy.close("Sell")         // Close any sell position first (from reversal strategy)
    strategy.entry("Buy", strategy.long)
    
if isSellSignal
    strategy.close("Buy")          // Close any buy position first (from reversal strategy)
    strategy.entry("Sell", strategy.short)

// ========== METRIK KINERJA ==========
float lastOpenTradeProfit = na
if strategy.opentrades > 0
    lastOpenTradeProfit := strategy.opentrades.profit(strategy.opentrades - 1)

float lastClosedTradeProfit = na
if strategy.closedtrades > 0
    lastClosedTradeProfit := strategy.closedtrades.profit(strategy.closedtrades - 1)

// Plot info
plot(lastOpenTradeProfit, title="Last Open Trade Profit", color=color.blue)
plot(lastClosedTradeProfit, title="Last Closed Trade Profit", color=color.orange)