English Русский 中文 Español Deutsch 日本語
preview
Transformada Discreta de Hartley

Transformada Discreta de Hartley

MetaTrader 5Negociação | 27 novembro 2023, 14:58
309 0
Aleksej Poljakov
Aleksej Poljakov

Introdução

Em 1942, Ralph Hartley propôs um análogo da transformada de Fourier em seu artigo "A More Symmetrical Fourier Analysis Applied to Transmission Problems".

Assim como a transformada de Fourier (FT), a transformada de Hartley (HT) converte o sinal original em uma soma de funções trigonométricas. Porém, há uma diferença significativa entre elas. A FT converte valores reais em números complexos, enquanto a HT fornece apenas resultados reais. Devido a essa diferença, a transformada de Hartley não se popularizou - cientistas e técnicos não viram vantagens nela e continuaram a usar a transformada de Fourier usual. Em 1983, Ronald Bracewell apresentou uma versão discreta da transformada de Hartley.


Um pouco de teoria

A transformada discreta de Hartley (DHT) pode ser usada na análise e processamento de séries temporais discretas. Com ela, é possível filtrar sinais, analisar seus espectros e muito mais. As capacidades da DHT não são menores que as da transformada discreta de Fourier. No entanto, ao contrário da DFT, a DHT usa apenas números reais, o que a torna mais conveniente para implementação na prática, e os resultados de sua aplicação são mais visuais.

Vamos ter N números reais h[0] … h[N-1]. Usando a transformada discreta de Hartley, obtemos N números reais H[0]…H[N-1] a partir deles.

 .

Esta transformação nos permite transferir um sinal do domínio do tempo para o domínio da frequência. Com sua ajuda, podemos estimar quão grande é a influência de uma harmônica específica no sinal original. O número H[0] contém informações básicas sobre o sinal. Os números H[1]…H[N-1] fornecem dados adicionais. Esses números mostram quão forte uma harmônica específica está no sinal original. O índice desses números mostra quantos ciclos dessa harmônica cabem no sinal original. Em outras palavras, quanto maior o índice, maior a frequência da harmônica.

A transformada inversa de Hartley é usada para passar do domínio da frequência para o domínio do tempo. Sua equação é assim.

Em ambas as equações, a função cas (cos and sin) representa a soma das funções trigonométricas.

Embora, possa ser substituída por uma diferença. A essência da transformação não muda. Agora, vamos ver como podemos colocar a DHT em prática.


Introdução à transformada discreta de Hartley

Então, a DHT converte um sinal do domínio do tempo para o domínio da frequência. Mas é possível obter algum benefício prático disso?

Vamos pegar 15 preços Open como um sinal. É assim que o espectro desta série temporal se parece (H[0] não é exibido devido a diferenças de escala).

A figura mostra claramente que diferentes harmônicas têm diferentes intensidades. Mas o que pode ser feito com este espectro?

Vamos tomar a média móvel simples como exemplo. Sua equação é muito simples.

O que acontecerá com o indicador se zerarmos um dos preços? É improvável que consigamos algo bom. Mas no domínio da frequência isso é possível. Podemos zerar qualquer número de harmônicas.

É assim que o sinal original se parece.

Agora, vamos zerar todas as harmônicas H[1] – H[14]. Agora só temos informações básicas sobre o sinal original. Vamos aplicar a transformada inversa de Hartley a este espectro.

Agora remova as harmônicas com as frequências mais altas H[10] – H[14]. A transformada de Hartley fornecerá o seguinte resultado.

Nós suavizamos o sinal original. Aqui está a primeira maneira de aplicar a transformada de Hartley na prática. Primeiro, podemos suavizar a série temporal no domínio da frequência. Depois, os valores obtidos são transferidos para a entrada dos indicadores usuais. Vamos tomar duas médias móveis como exemplo. Uma delas é aplicada ao preço como de costume (linha vermelha). A segunda é aplicada aos valores de DHT (linha azul).

Zerar algumas harmônicas não é a única maneira de lidar com o espectro do sinal. Podemos atenuar todas as harmônicas de uma vez, por exemplo, dividindo-as por um número dado.

Alternativamente, podemos atenuar cada harmônica de acordo com sua frequência - quanto maior a frequência, maior a atenuação.

De qualquer forma, obteremos uma série temporal suavizada. É assim que um sinal se parece com as harmônicas atenuadas 2 vezes.

Outra maneira de lidar com o espectro é deixar apenas as harmônicas mais fortes. Para isso, teremos que encontrar a média de todas as harmônicas.

Vamos deixar apenas aquelas que excedem essa média pelo seu valor absoluto.

Então, teremos apenas o sinal principal mais as harmônicas mais fortes.

Outra opção de processamento de sinal é que podemos inverter os valores das harmônicas. Então o sinal reconstruído estará na fase oposta.

Neste caso, receberemos um reflexo espelhado do sinal - a tendência ascendente é substituída por uma descendente e vice-versa. Esta abordagem pode ser útil ao calcular níveis de suporte e resistência.

Todas as opções para processar o espectro do sinal original podem ser usadas individualmente ou em combinação umas com as outras. Por exemplo, você pode primeiro deixar apenas as harmônicas mais fortes e, em seguida, mudar o sinal delas para o oposto.  Neste caso, o resultado mostrará um possível impulso de contra-tendência.


Indicador com espectro ótimo

Qualquer indicador linear é um conjunto de coeficientes. Se aplicarmos a transformada de Hartley a esses coeficientes, obtemos a característica espectral do indicador.

Sabemos que a SMA é um filtro de baixa passagem. Vamos verificar esta afirmação. Todos os coeficientes deste indicador são iguais a 1/N. A transformada de Hartley fornece este espectro do indicador.

Como podemos ver, a SMA passa apenas o sinal principal H[0], mas todas as outras harmônicas são completamente suprimidas.

Espectros (características de frequência dos indicadores) podem diferir muito entre si. Por exemplo, a LWMA passa todas as harmônicas do sinal de entrada.

Por outro lado, a SMMA permite apenas a passagem de algumas harmônicas e suprime o restante.

Cada indicador tem seu próprio espectro único. Ele pode ser usado para manipular a série de preços. Para fazer isso, precisamos primeiro encontrar o espectro do sinal original H[]. Em seguida, multiplicamos termo a termo pelo espectro do indicador I[].

A transformada inversa de Hartley é aplicada ao resultado obtido. Como resultado, obtemos a filtragem de sinal no domínio da frequência. É assim que a operação de um filtro de frequência baseado no indicador LWMA se parece.

Mas podemos ir pelo outro caminho, definindo primeiro o espectro do indicador e depois obtendo seus coeficientes. Vamos tentar fazer um indicador cuja característica espectral corresponderá ao espectro do sinal.

O algoritmo será o seguinte. Primeiro, obtemos o espectro do sinal com DHT. Em seguida, precisamos normalizá-lo. Para fazer isso, precisamos dividir todos os valores harmônicos por D = H[0].

Note que após a normalização, H[0] = 1 é uma condição obrigatória ao construir um indicador.

Depois disso, precisamos aplicar a transformação inversa, que fornecerá os coeficientes de ponderação do indicador.


Esses coeficientes não são muito diferentes da SMA. Mas tal indicador terá um atraso menor em comparação com a média móvel, o que possibilitará acompanhar mais precisamente a dinâmica do mercado.


Ruído e cor

Ao processar séries temporais financeiras, o termo "ruído" geralmente se refere a distorções indesejadas do sinal. Para eliminar esse ruído, uma variedade de filtros pode ser usada, incluindo a SMA.

Um sinal aleatório ou imprevisível também pode ser considerado um ruído. O que acontece se representarmos os movimentos de preço do mercado como uma soma de ruídos? Para isso, precisamos recorrer ao conceito de ruídos coloridos. As cores de ruído são ruídos que têm energias diferentes em diferentes faixas de frequência. Elas receberam esse nome das diferentes cores da luz visível: vermelho é ruído de baixa frequência, enquanto violeta é ruído de alta frequência.

Representar os movimentos de preço como uma soma de ruídos coloridos pode dar resultados interessantes ao analisar séries temporais financeiras. Esta abordagem nos permite levar em conta vários componentes de frequência do movimento de preço.

Cada ruído colorido tem sua própria característica única, que reflete a distribuição de energia no espectro dependendo da frequência f.

Existem cinco cores primárias de ruído.

parâmetro p cor do ruído
-2 vermelho
-1 rosa
0 branco
+1 azul
+2 violeta

Cada ruído está associado a um movimento de preço específico. Por exemplo, o ruído vermelho pode indicar a presença de tendências ou ciclos de longo prazo nos movimentos de preço. O ruído branco indica que o mercado está em um estado plano. O ruído violeta pode indicar comportamento de preço aleatório e imprevisível. O uso de ruído colorido na análise de séries temporais financeiras pode ajudar a identificar padrões ocultos, bem como padrões que nem sempre são visíveis na análise convencional.

Agora, vamos ver como os diferentes ruídos se comportam no mercado. Para fazer isso, precisamos dar alguns passos simples.

Primeiro, precisamos encontrar o espectro do sinal, com o qual podemos estimar a energia de cada harmônica. Para fazer isso, precisamos elevar ao quadrado o valor de cada harmônica.

Agora, podemos estimar o valor do fator de escala para o ruído com o parâmetro p. Ao usar este coeficiente, as energias totais do sinal e do ruído serão iguais.

Conhecendo este coeficiente, podemos construir o espectro de energia EN[] do ruído.

Agora, podemos encontrar o espectro de ruído HN[]. Para fazer isso, precisamos tirar a raiz quadrada do espectro de energia.

Resta muito pouco a fazer - atribuir sinais +/- às harmônicas do espectro de ruído, assim como as harmônicas do sinal original. Neste caso, o ruído e o sinal original estarão na mesma fase.

Após isso, precisamos realizar uma transformada inversa de Hartley para obter os valores de ruído no gráfico de preços. É assim que o ruído vermelho se parece no mercado.

Mas também podemos pegar os sinais opostos das harmônicas. Neste caso, o ruído estará na fase oposta em relação ao sinal original. Além disso, podemos tomar valores de harmônicas estritamente positivos ou negativos. Podemos nos dar ao luxo disso no domínio da frequência. Então, seremos capazes de ver os limites dos movimentos de ruído no mercado.

O conceito de ruído colorido pode ser usado não apenas para descrever a dinâmica do mercado, mas também para desenvolver indicadores.

Para isso, primeiro precisamos definir a potência do indicador E > 0. Esse parâmetro determina quão sensível será o indicador. Depois disso, realizamos os procedimentos já familiares. Primeiro encontramos o fator de escala.

Depois disso, encontramos o espectro do indicador HI[]. Não esqueça que HI[0] deve ser igual a 1.

Tudo que temos a fazer é atribuir sinais +/- às harmônicas do espectro do indicador, se necessário. Em seguida, precisamos aplicar a transformada inversa de Hartley e obter os coeficientes do indicador. É assim que um indicador de ruído vermelho se parece com diferentes variantes de sinais harmônicos.

Ao desenvolver indicadores, podemos usar não apenas ruído puro, mas também suas várias combinações. Por exemplo, é assim que o espectro da soma de ruídos vermelho e violeta se parece.

É assim que a diferença entre os espectros de ruído vermelho e branco se parece.

Após receber os coeficientes do indicador coefficient[], devemos normalizá-los. Para fazer isso, primeiro precisamos encontrar a soma de todos os coeficientes.

Depois disso, precisamos dividir cada coeficiente pela quantidade resultante.

Além dos ruídos principais listados, existem outros. Por exemplo, uma definição de ruído preto é ruído com o parâmetro p < -2. Vamos tentar uma abordagem diferente. Vamos supor que o parâmetro de ruído p possa assumir valores fracionários. Vamos ver como ele muda ao longo do tempo.

Para calcular o parâmetro de ruído, primeiro precisamos encontrar o espectro de energia do sinal E[]. Depois disso, precisamos calcular quatro coeficientes.

Em todas as equações, k = 1…N-1. O parâmetro de ruído mais adequado pode ser calculado usando a equação.

É assim que esse parâmetro muda nas condições de mercado.

Como podemos ver, o uso de ruído colorido na análise de séries temporais financeiras pode ser uma ferramenta útil para explorar e entender a dinâmica do mercado. Esta abordagem pode ajudar a revelar padrões ocultos e melhorar a previsão dos movimentos de preços.


Considerações finais

A transformada discreta de Hartley possui seus próprios algoritmos de transformação rápida. Mas se alocarmos o array para valores cas antecipadamente, podemos acelerar significativamente a velocidade de manipulação dos dados. O tamanho deste array deve ser igual a (N-1)^2+1, onde N é um período do indicador. Então os valores deste array são definidos da seguinte maneira:

Eu usei exatamente essa abordagem neste artigo.

Os seguintes indicadores estão anexados ao artigo.

Nome Descrição
DHT O indicador demonstra as possibilidades de processamento das harmônicas do sinal.
  • iPeriod - período do indicador;
  • CutOff - quantas harmônicas do sinal original manter. Se CutOff=0, então todas as harmônicas são mantidas;
  • Constant - atenuação das harmônicas do sinal por uma constante;
  • Hyperbolic - supressão das harmônicas segundo uma lei hiperbólica;
  • Strong - manutenção da fase do sinal original;
  • Inverse - alteração da fase do sinal.
DHT LWMA O indicador mostra o processamento do preço pelo indicador LWMA na área espectral.
Spectrum Indicador cujos coeficientes fornecem uma característica espectral como a do sinal original.
Noise Levels O indicador mostra os níveis de ruídos coloridos.
Noise - cor do ruído.
Type - alteração da fase do sinal original.
Noise Indicator O indicador seleciona coeficientes correspondentes à cor de ruído escolhida.
E - potência do ruído.
Fractional Noise Indicador que exibe o parâmetro fracionário do ruído.




Traduzido do russo pela MetaQuotes Ltd.
Artigo original: https://www.mql5.com/ru/articles/12984

Arquivos anexados |
DHT.mq5 (7.08 KB)
DHT_LWMA.mq5 (6.35 KB)
Spectrum.mq5 (5.81 KB)
Noise_Levels.mq5 (7.17 KB)
Desenvolvendo um sistema de Replay (Parte 37): Pavimentando o Terreno (I) Desenvolvendo um sistema de Replay (Parte 37): Pavimentando o Terreno (I)
Neste artigo iremos começar a fazer algo, que eu gostaria de ter feito a muito mais tempo. No entanto, por falta de "terreno firme", não me sentia seguro para apresentar de forma publica. Mas agora já tenho as bases para poder fazer o que iremos começar a fazer, a partir de agora. É bom que foque ao máximo em compreender o conteúdo deste artigo. E não estou dizendo isto, apenas para que você o leia apenas por ler. Quero e preciso enfatizar que se você não entender este artigo especifico. Poderá abandonar completamente qualquer esperança em compreender o conteúdo dos próximos.
O modelo de movimento de preços e suas principais disposições (Parte 3): Cálculo dos parâmetros ótimos para negociação em bolsa O modelo de movimento de preços e suas principais disposições (Parte 3): Cálculo dos parâmetros ótimos para negociação em bolsa
Dentro da abordagem de engenharia desenvolvida pelo autor, baseada na teoria da probabilidade, são determinadas as condições para abrir uma posição lucrativa e calculados os valores ótimos - maximizadores do lucro - para o take profit e o stop loss.
Desenvolvendo um agente de Aprendizado por Reforço em MQL5.com Integração RestAPI(Parte 2): Funções MQL5 para Interação HTTP com API REST do Jogo da Velha Desenvolvendo um agente de Aprendizado por Reforço em MQL5.com Integração RestAPI(Parte 2): Funções MQL5 para Interação HTTP com API REST do Jogo da Velha
O artigo detalha como MQL5 pode interagir com Python e FastAPI, usando chamadas HTTP em MQL5 para se comunicar com um jogo da velha em Python. Discute a criação de uma API com FastAPI para essa integração e inclui um script de teste em MQL5, destacando a versatilidade do MQL5, a simplicidade do Python e a eficiência do FastAPI na conexão de diferentes tecnologias para soluções inovadoras.
Funções em Aplicativos MQL5 Funções em Aplicativos MQL5
As funções são componentes essenciais em qualquer linguagem de programação. Entre outras coisas, elas ajudam os desenvolvedores a aplicar o princípio DRY (don't repeat youself, não se repita). O artigo fala sobre funções e sua criação no MQL5 com a ajuda de aplicativos simples que enriquecem seu sistema de negociação, sem complicá-lo.