フーリエに関するヘルプ

 
Library of FFT Fast Fourier Transform Functions」('Library of FFT Fast Fourier Transform Functions')を使ってみましたが、なぜかどれも同じ記述で、使い方がよくわかりません。助けてください!例えば、最後の8本のバーのClose値を持っていて、そのスペクトルを取得し、最初の4つの周波数を残して(ローパスフィルタのように)信号を取得する方法は?
 
8本のバーから4つの周波数を取り出すことも可能なのかどうか、それだけを維持できるわけではありません。
 
8つの離散的な信号値を変換(FFT)すると、4つの低い周波数を残して8つの周波数が得られ、現在のコースの変動のLFフィルタが得られます。
 
フーリエ近似式を送ってくれたので、興味のある方は便利かもしれませんね。

#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); }
//****************************************************

また、ライブラリの代わりに、最初のコードをインジケータに直接挿入すると、アフリカの天気を表示するのはなぜか、教えてください。




 
lsv писал (а):
8つの離散的な信号値を変換(FFT)すると、4つの低い周波数を残して8つの周波数が得られるので、現在のコース発振のLFフィルタが得られる。

1周期を決めるには最低2本の小節が必要であり、これにより周波数4、2、1が決定される。
 
ラジオ局からは私一人しかいないような気がします。1バールは1周波数、一定値、f(x)=k0です。2 本の棒は 2 つの頻度、f(x)=k0+k1*Sin(a1*x+b1) などです。
 
本屋さん、アフリカの天気はft3という変数があるから形成されるのであって、定義されているわけではないので、違う値が出るんですね。
 
lsv писал (а):
本屋さん、アフリカの天気はft3という変数があるから形成されるのであって、定義されているわけではないので、違う値が出るんですね。

ありがとうございます...を考えてみようか。
 

フーリエを勉強した上での例(指標)です...。
そこにあるコードを見てください。難しいことではありません。
デフォルトでは、周期的な関数のスペクトルが出力されます...
好きなインジケーターを送ることができます。その後、スペクトルをどうするかはご想像にお任せします。
あとは、得られたスペクトログラムからパターンを収集し、ニューラルネットワークに すべて突っ込んで認識させたいと考えています。

ファイルをアップロードした

ファイル:
 
lsv:
ラジオ局からは私一人しかいないような気がします。1バールは1周波数、一定値、f(x)=k0です。2 本の棒は 2 つの頻度、f(x)=k0+k1*Sin(a1*x+b1) 等です。
私の記憶では、FFTの8本のバーで8つの周波数が生成されます。
が、半分がもう半分と対称になっている(πでシフトしているようだ)。
となると、残るは4つ。

それ以外にはありえない。
1つの周波数(正弦波)には3つのパラメータが含まれる - G(t) = A*Sin(w*t+p)
周波数(w)は固定なので、振幅(A)と位相(p)の2つのパラメータが残ります。

K個の独立変数(棒グラフの値)からの任意の変換において
は、最大でK個の独立したパラメータを得ることができる。
例:8本の小節から最大4つの周波数を得ることができる(小節あたり2つのパラメータ)
 
klot、あなたのファイルは、何らかの理由で利用できません。最初はフーリエでトレンドを抽出しようと思ったのですが、フーリエは分析区間が繰り返されることを前提にしていることを思い出しました。 例えば、価格が10,11,13,12のバーがあれば、その後に10,11,13,12,10,11,13,12と続くとフーリエは仮定しているのです。そして、これではせっかくのアイデアが台無しです。