Filtros digitais adaptativos

 
Muitas pessoas agora usam o JMA e suas modificações, mas quase não há menção das suposições teóricas específicas sobre as quais ele funciona. Se alguém souber, por favor, compartilhe.
 

Há muitas informações sobre este assunto, por exemplo, aqui: http://prodav.narod.ru/dsp/index.html (seção "adaptive digital filtering")


Pergunte a Prival também, ele parece ser o único especialista em DSP entre nós, eu acho que ele pode ajudar com a teoria.

PS: o que é JMA?

 

Eu adoraria ajudar. Mas infelizmente não consigo ler o código MQL tão livremente como o MathCad onde as fórmulas são escritas da forma como estamos acostumados a vê-las em livros. A única coisa que me parece (embora eu não tenha certeza) é usar um dos tipos de regressão, para torná-lo mais claro

Há uma regressão linear como y(x)=ax+b. Você pode calcular os coeficientes a e b de maneiras diferentes, pode usar ANC (parece não ser usado lá), e pode usar a recorrência, mas para entendê-la você precisa entender claramente os loops (eu fico confuso lá, onde, o quê, por que é calculado). Muito provavelmente há uma regressão não linear, porque há alguns se() enquanto o cálculo + tipo de equação de regressão em si não é claro, quantos coeficientes existem.

Em geral, quase todos os indicadores podem ser considerados como filtros digitais, o MA é um filtro digital. A palavra adaptação geralmente significa que alguns parâmetros (coeficientes no intestino do filtro) têm que mudar de acordo com as características do sinal de entrada. Portanto, antes de tudo, eu referiria os filtros digitais AMA, FRAMA e similares adaptativos (média de mudanças de parâmetros (n) dependendo da estimativa de variação do processo de entrada), quase todos FFT, filtros wavelet que utilizam processamento de limiar (tentando combinar parâmetros TF com um espectro de sinal de entrada desejado).

Mas SATL, FATL não são adaptáveis, porque uma vez na fase de projeto foram calculados os coeficientes TF, que permitiram combinar a resposta transitória do filtro com um espectro do sinal de entrada (AFR e IFR) e durante a operação esses coeficientes não mudam. Estes são os chamados filtros combinados. Mas existe um ideal, o que é chamado no DSP de filtro ideal, para construí-lo é difícil, mas possível. Para isso, você precisa conhecer espectros de sinais e ruídos úteis.

Não sei se o ajudei ou o confundi :-), mas em todo caso, boa sorte.

 
2 grasn - muito obrigado pelo link, o material é muito bom)

2 Prival - tenho alguma experiência com este tipo de filtros digitais, mas sobre o princípio da "teoria à prática" (filtro Kaufman), visualmente os resultados foram muito bons, mas as estatísticas não mostraram nenhuma vantagem em particular. As estatísticas são melhores no JMA porque adicionei algumas soluções originais ao algoritmo, e é isso que eu quero entender. Agora terei que desmontar o código com base na teoria e procurar as diferenças))
 
NightPaul:

2 grasn - muito obrigado pelo link, o material é muito bom)

2 Prival - tenho alguma experiência com este tipo de filtros digitais, mas sobre o princípio da "teoria à prática" (filtro Kaufman), visualmente os resultados foram muito bons, mas as estatísticas não mostraram nenhuma vantagem em particular. As estatísticas são melhores no JMA porque adicionei algumas soluções originais ao algoritmo, e é isso que eu quero entender. Agora terei que desmontar o código com base na teoria e procurar as diferenças ))

Tente fazer o seguinte: tome AMA (Kaufman) como base, mas use o modelo de regressão ao invés de uma simples média. Talvez seja mais fácil desta maneira e tudo ficará mais claro + você fará seu próprio código. IHMO, esta combinação de métodos pode ser boa.
 
A propósito, não é uma má opção. Informá-lo-ei quando os resultados estiverem disponíveis.
 
Prival, deixe-me reescrever o código em fórmulas e você explica.
 
Integer:
Prival, deixe-me reescrever o código em fórmulas e você explica.

O código do que, JMA. Ou devo escrever fórmulas de como reescrever o JMA? Como me diz minha experiência em programação, é melhor (e mais rápido) escrever seu próprio código do que lidar com o de outra pessoa e escrever o mesmo (ou algo muito semelhante).
 

Colegas, não me considerem muito irritante, mas o que é a JMA? Eu tentei fazer meu próprio filtro adaptativo com base no algoritmo de mínimos quadrados do Widrow-Hopf, que parece ser o mais simples. Depois de algumas experiências, eu tinha 300% de certeza de que é impossível fazer um filtro adaptativo para séries temporais de Forex, porque os milagres não acontecem, existem apenas feiticeiros. A principal razão é uma enorme influência do efeito de não-estacionariedade: a superfície do desempenho do filtro muda o tempo todo, portanto, mínimos desta mudança de superfície, e também problema com a convergência dos coeficientes de ponderação. Mas em geral - não sou um especialista, apenas autodidata em DSP.

PS: Se você fizer um filtro realmente adaptável, por favor, deixe-me dar uma olhada :o)

 
2 Integer
Se não for muito incômodo, seria uma boa idéia desmontar o código JJMASeries deste artigo "Algoritmos eficientes de média com um mínimo de atraso e seu uso em indicadores".

2 grash
Aqui está o que o próprio autor escreve sobre a JMA ) - http://www.jurikres.com/catalog/ms_ama.htm#top
Como tudo isso está à venda, só recebemos os códigos desmontados, como eu mesmo os entendo, mas eu realmente quero entender qual é a parte complicada.

 

A propósito, há uma leve batida no filtro Kalman(Prival, isso é só para você):

A JMA realiza MELHORES QUE OUTROS MÉTODOS SOPHISTICADOS, incluindo ...

Filtros Kalman's g, g-h, g-h-k, com ou sem memória desbotada
Filtros Savitzky-Golay, com ou sem memória desbotada
Média móvel adaptativa de Kaufman (KAMA)
Índice variável de Chande Média dinâmica (VIDYA)
Média móvel exponencial dupla (DEMA)
Média Móvel Exponencial Tríplice (T3)
Média Móvel Modificada (MMA) da Brown
Filtro Elíptico Óptico Modificado (MEF) de Ehler
Filtro FIR de peso simétrico da Ehler
Média móvel do casco (HMA)

P.S. A propósito, há um link para o filtro do Kalman no final desta página.

Razão: