"FFT FFT Fast Fourier Transform Function Library" ('FFT Fast Fourier Transform Function Library' ) kullanmaya çalıştım, nedense bu fonksiyonları nasıl kullanacağımı hemen çözemedim, nedense hepsinde aynı Açıklamalar. Bana yardım et lütfen! Örneğin, son 8 çubuğun Kapat değerlerine sahip olmak, spektrumlarını nasıl alır, ardından ilk 4 frekansı (alçak geçiren filtre gibi) bırakıp sinyali nasıl geri alır?
- Ham Fikirler
- Rastgele Akış Teorisi ve FOREX
- Hisse Senedi EA Herkes?
8 çubuktan genel olarak 4 frekans alabileceğinizden ve sadece bırakmadığınızdan şüpheliyim.
8 ayrık sinyal değerinin dönüşümü (FFT) 8 frekans verecek, 4 düşük frekans bırakacak, mevcut rota dalgalanmaları için düşük geçişli bir filtre elde ediyoruz.
Bana bir Fourier yaklaşımı gönderdiler, eğer ilgileniyorsanız, kullanışlı olabilir mi?
#property library //-------------------------------------------------------------------------------- double b = 0.7 ; double c1 , c2 , c3 , c4 , b2 , b3 ; double e1 , e2 , e3 , e4 , e5 , e6 , n , w1 , w2 , t3f ; int ft3 ; b2 = b * b ; b3 = b2 * b ; c1 =- b3 ; c2 = ( 3 * ( b2 + b3 )) ; c3 =- 3 * ( 2 * b2 + b + b3 ) ; c4 = ( 1 + 3 * b + b3 + 3 * b2 ) ; //============================================== double af_T3 ( int i , int pt3 , double ct3 ) { //--------------------------- if ( ft3 == 0 ) { n = pt3 ; if ( n < 1 ) n = 1 ; n = 1 + 0.5 * ( n - 1 ) ; w1 = 2 / ( n + 1 ) ; w2 = 1 - w1 ; ft3 = 1 ; } //------------------------ e1 = w1 * ct3 + w2 * e1 ; e2 = w1 * e1 + w2 * e2 ; e3 = w1 * e2 + w2 * e3 ; e4 = w1 * e3 + w2 * e4 ; e5 = w1 * e4 + w2 * e5 ; e6 = w1 * e5 + w2 * e6 ; t3f = c1 * e6 + c2 * e5 + c3 * e4 + c4 * e3 ; return ( t3f ) ; }
#property copyright " ANG3110@latchess.com " //---------------------------------------- #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 Blue //------------------------------- #import " af_T3.ex4 " int af_T3 ( int i , int pt3 , double ct3 ) ; //------------------------------- extern int hrf = 2 ; extern int hrT3 = 6 ; extern int days = 1 ; //----------------------------------------- double ak [] , bk [] , fx [] , w , ak0 , ss , sc , sk , dfx [] ; double pi = 3.1415926535897932384626433832795 ; int T , sm , k ; double t3 [] , ct3 , dc [] ; int pt3 ; //========================================== int init () { IndicatorBuffers ( 5 ) ; SetIndexStyle ( 0 , DRAW_LINE ) ; SetIndexBuffer ( 0 , fx ) ; SetIndexBuffer ( 1 , t3 ) ; SetIndexBuffer ( 2 , ak ) ; SetIndexBuffer ( 3 , bk ) ; SetIndexBuffer ( 4 , dc ) ; //-------------------------- pt3 = hrT3 * 60 / Period () ; T = days * 1440 / Period () ; w = 2 * pi / T ; k = T / ( hrf * 60 / Period ()) ; return ( 0 ) ; } //*************************************************** int start () { //----------------- int n , i , cbi ; //------------------ cbi = Bars - IndicatorCounted () - 2 ; for ( i = cbi ; i >= 0 ; i -- ) { //--------------------- ct3 = Close [ i ] ; t3 [ i ] = af_T3 ( i , pt3 , ct3 ) ; dc [ i ] = Close [ i ] - t3 [ i ] ; } //-------------------------- ak0 = 0.0 ; for ( n = 0 ; n <= k ; n ++ ) { sc = 0.0 ; ss = 0.0 ; for ( i = 0 ; i <= T - 1 ; i ++ ) { if ( n == 0 ) ak0 += dc [ i ] ; if ( n != 0 ) { sc = sc + dc [ i ] * MathCos ( n * i * w ) ; ss = ss + dc [ i ] * MathSin ( n * i * w ) ; } } ak [ n ] = sc * 2 / T ; bk [ n ] = ss * 2 / T ; } ak0 = ak0 / T ; //-------------------------- for ( i = 0 ; i <= T - 1 ; i ++ ) { sk = 0.0 ; for ( n = 1 ; n <= k ; n ++ ) { sk = sk + ak [ n ] * MathCos ( n * i * w ) + bk [ n ] * MathSin ( n * i * w ) ; } fx [ i ] = ak0 + sk + t3 [ i ] ; } //--------------------------- return ( 0 ) ; } //****************************************************
Aynı zamanda, bana söyleyebilir misiniz - neden kitaplık yerine ilk kod doğrudan türkiye'ye giriliyorsa - Afrika'daki hava durumunu gösteriyor.
Radyo fakültesinden bir tek benmişim gibi geliyor. 1 bar bir frekans, sabit değerdir, f(x)=k0. 2 çubuk - 2 frekans, f(x)=k0+k1*Sin(a1*x+b1). Vb.
Muhasebeci, Afrika'da hava durumu ft3 değişkeninden dolayı oluşuyor, tanımlı değil yani farklı değerler elde ediliyor.
İşte Fourier'i çalıştığım bir örnek (gösterge) ...
Oradaki koda bakın - zor değil.
Varsayılan olarak, periyodik fonksiyonun spektrumu görüntülenir...
Herhangi bir gösterge gönderebilirsiniz. O zaman spektrumla ne yapacağınız hayal gücünüzdür.
Şimdi, alınan spektrogramlardan kalıplar toplamak ve tüm bunları tanıma için bir sinir ağına "itmek" istiyorum.
dosyayı yeniden yükledim
Dosyalar:
lsv :
Radyo fakültesinden bir tek benmişim gibi geliyor. 1 bar bir frekans, sabit değerdir, f(x)=k0. 2 çubuk - 2 frekans, f(x)=k0+k1*Sin(a1*x+b1). Vb.
Hatırladığım kadarıyla, FFT'deki 8 çubuktan 8 frekans elde ediliyor,Radyo fakültesinden bir tek benmişim gibi geliyor. 1 bar bir frekans, sabit değerdir, f(x)=k0. 2 çubuk - 2 frekans, f(x)=k0+k1*Sin(a1*x+b1). Vb.
ama yarısı ikinci yarıya simetrik (görünüşe göre Pi ile kaydırılmış)
Yani aslında 4.
Başka bir şekilde olamaz.
Bir frekans (sinüs dalgası) 3 parametre içerir - G(t) = A*Sin(w*t+p)
Sabit frekanslarımız (w) var, 2 parametre kaldı - genlik (A) ve faz (p).
K bağımsız değerlerden herhangi bir dönüşüm için (bar değerleri)
en fazla K bağımsız parametre elde edilebilir.
Onlar. 8 çubuktan en fazla 4 frekans elde edebilirsiniz (her biri için 2 parametre)
klot, nedense dosyanız mevcut değil. Aslında trend çıkarımı için Fourier kullanmak istedim, yani. bir PF filtresi olarak, ancak Fourier'e göre analiz edilen bölümün tekrarlandığı varsayıldığını hatırladım. Onlar. fiyatları 10.11, 13, 12 olan çubuklar varsa, o zaman Fourier'e göre bunları 10.11, 13, 12, 10.11, 13, 12 çubuklarının izleyeceği varsayılır. Bu da tüm fikri bozar.
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun