Uyarlanabilir dijital filtreler

 
Şimdi pek çok insan JMA'yı ve onun modifikasyonlarını kullanıyor, ancak neredeyse hiçbir yerde hangi teorik öncüllerde çalıştıkları söylenmiyor. Bilen varsa lütfen paylaşsın.
 

bu konuda oldukça fazla bilgi var, örneğin burada: http://prodav.narod.ru/dsp/index.html ("dijital verilerin uyarlanabilir filtrelenmesi" bölümü)


Prival'e de sor, aramızdaki tek DSP uzmanı gibi görünüyor, teorik olarak yardımcı olacağını düşünüyorum.

Not: JMA nedir?

 

Yardım etmekten mutluluk duyarım. Ama ne yazık ki MQL kodunu, formüllerin yazıldığı MathCad kadar özgürce kitaplarda görmeye alıştığımız gibi okuyamıyorum. Bana görünen tek şey (emin olmasam da) daha net hale getirmek için kullanılan regresyon türlerinden biri.

y(x)=ax+b gibi doğrusal bir regresyon vardır. a ve b katsayılarını farklı şekillerde hesaplayabilirsiniz, LSM'yi kullanabilirsiniz (orada kullanılmıyor gibi görünüyor) veya özyinelemeyi kullanabilirsiniz, ancak bunu anlamak için döngüleri net bir şekilde anlamanız gerekir (orada ben zaten nerede, ne, neyin hesaplandığı konusunda kafanız karıştı). Büyük olasılıkla doğrusal olmayan bir regresyon vardır, çünkü bazı if () var hesaplarken + regresyon denkleminin kendisinin şekli net değil, bu katsayılardan kaç tane var.

Prensip olarak, hemen hemen tüm göstergeler dijital filtreler olarak kabul edilebilir, aynı sıradan MA dijital bir filtredir. Ve adaptasyon kelimesi genellikle bazı parametrelerin (filtrenin içindeki katsayılar) girdinin özelliklerine bağlı olarak değişmesi gerektiği anlamına gelir. sinyal. Bu nedenle, her şeyden önce, AMA, FRAMA ve benzerlerini uyarlanabilir dijital filtrelere (ADF) (ortalama parametresi (n) giriş işleminin varyansının tahminine bağlı olarak değişir), dalgacık kullanan hemen hemen tüm FFT filtrelerine atfederim. eşikleme (dijital filtrenin parametrelerini giriş yararlı sinyalinin spektrumuyla eşleştirme girişimi).

Ancak SATL, FATL uyumlu değildir, çünkü Tasarım sırasında 1 kez, filtrenin geçici yanıtının giriş sinyalinin spektrumu (frekans yanıtı ve faz yanıtı) ile eşleşmesini mümkün kılan dijital filtrenin katsayıları hesaplandı ve bu katsayılar çalışma sırasında değişmez . Bunlar sözde eşleşen filtrelerdir. Ancak DSP'de optimal filtre denilen bir ideal var, onu inşa etmek zor ama mümkün. Bunu yapmak için, faydalı sinyal ve gürültünün spektrumlarını bilmek gerekir.

Yardımcı olup olmadığımı bilmiyorum :-), ama her durumda, iyi şanslar.

 
2 grasn - bağlantı için çok teşekkür ederim, malzeme çok iyi seçilmiş)

2 Prival - Bu tür dijital filtrelerle biraz deneyimim var, ancak "teoriden pratiğe" (Kaufman filtresi) ilkesine göre, sonuçlar görsel olarak çok iyiydi, ancak istatistikler herhangi bir özel avantaj ortaya koymadı. JMA ile istatistikler biraz daha iyi, çünkü bana göründüğü gibi, algoritmaya bazı orijinal çözümler dahil edildi, anlamak istediğim tam olarak onların özü. Şimdi, teori temelinde, kodu sökmeniz ve farklılıkları aramanız gerekir))
 
NightPaul :

2 grasn - bağlantı için çok teşekkür ederim, malzeme çok iyi seçilmiş)

2 Prival - Bu tür dijital filtrelerle biraz deneyimim var, ancak "teoriden pratiğe" (Kaufman filtresi) ilkesine göre, sonuçlar görsel olarak çok iyiydi, ancak istatistikler herhangi bir özel avantaj ortaya koymadı. JMA ile istatistikler biraz daha iyi, çünkü bana göründüğü gibi, algoritmaya bazı orijinal çözümler dahil edildi, anlamak istediğim tam olarak onların özü. Şimdi, teori temelinde, kodu sökmeniz ve farklılıkları aramanız gerekir))

Ve aşağıdakileri yapmaya çalışın, AMA'yı (Kaufman) temel alın, ancak basit ortalamayı değil, bir regresyon modelini kullanın. Belki bu şekilde daha kolay olacak + her şey netleşecek + kodu kendin yapıyorsun. IMHO böyle bir yöntem kombinasyonu oldukça iyi olabilir.
 
Bu arada, bu iyi bir seçim. Sonuçların nasıl olacağını tekrar yazarım
 
Prival, kodu formüllere yeniden yazmama izin ver, sen açıkla.
 
Integer :
Prival, kodu formüllere yeniden yazmama izin ver, sen açıkla.

neyin kodu, JMA. Yoksa AMA'nın nasıl yeniden oluşturulacağını formülleri mi yazmalıyım? Programlama deneyimimin bana söylediği kadarıyla, kendi kodunuzu yazmak, başka birinin koduyla uğraşmaktan ve aynı şeyi (peki ya da çok benzer bir şey) yazmaktan daha iyi (ve daha hızlı).
 

Meslektaşlarım, beni fazla müdahaleci olarak görmeyin, ama yine de - JMA nedir? Bir keresinde Widrow-Hopf en küçük kareler algoritmasına dayalı kendi uyarlanabilir filtremi yapmaya çalıştım, en basiti bu gibi görünüyor. Deneylerden sonra, Forex zaman serileri için uyarlamalı bir filtre yapmanın prensipte mümkün olmadığına %300 emin oldum, çünkü dünyada mucizeler yok, gerçekten sihirbazlar var. Ana sebep, durağan olmama etkisinin büyük etkisidir: filtre performans yüzeyi her zaman değişir, bu nedenle, bu yüzeyin minimumu değişir ve ayrıca ağırlık katsayılarının yakınsaması ile ilgili bir sorun vardır. Ama genel olarak - ben bir uzman değilim, sadece DSP'de kendi kendimi yetiştirdim.

Not: Gerçekten uyarlanabilir bir filtre yaparsanız, lütfen tek gözle görmeme izin verin :o)

 
2 tamsayı
Sakıncası yoksa, 'Verimli minimum gecikme ortalama algoritmaları ve göstergelerde kullanımları' başlıklı bu makaledeki JJMASeries kodunu analiz etmek güzel olurdu.

2 yemek
İşte yazarın JMA hakkında yazdıkları) - http://www.jurikres.com/catalog/ms_ama.htm#top
Bütün bunlar satılık olduğu için, kendim anladığım gibi sadece demonte kodlar alıyoruz, ancak vurgunun ne olduğunu gerçekten anlamak istiyorum)

 

Bu arada Kalman filtresi ile kolay bir alıştırma var ( Prival , bu özellikle sizin için):

JMA, aşağıdakiler de dahil olmak üzere DİĞER KARŞILAŞTIRILMIŞ YÖNTEMLERDEN DAHA İYİ performans gösterir...

Kalman'ın g, gh, ghk filtreleri, hafızada azalma olan veya olmayan
Hafıza kaybı olan veya olmayan Savitzky-Golay filtreleri
Kaufman'ın uyarlanabilir hareketli ortalaması (KAMA)
Chande'nin Değişken Endeks Dinamik Ortalaması (VIDYA)
Çift Üstel Hareketli Ortalama (DEMA)
Üçlü Üstel Hareketli Ortalama (T3)
Brown'ın Değiştirilmiş Hareketli Ortalaması (MMA)
Ehler'in Modifiye Optik Eliptik Filtresi (MEF)
Ehler'in Simetrik ağırlıklı FIR filtresi
Gövde Hareketli Ortalama (HMA)

PS Bu arada, bu sayfanın alt kısmında Kalman filtresine bir bağlantı var.

Neden: