フーリエに関するヘルプ - ページ 2 123456789...19 新しいコメント [Deleted] 2006.10.05 11:59 #11 振幅と位相は1つの複素数で、1バーは虚数部=0となる1つの数でもあります。したがって、8小節は8つの周波数となります。このことについて、klot さんにどう思うか聞いてみましょうか。 Dmitrii 2006.10.05 12:03 #12 何かがファイルを送信していない もう一度やってみます。 ファイル: g_i_specktranalis_2.mq4 4 kb Dmitrii 2006.10.05 12:06 #13 とにかく、それがいいんです :) //+------------------------------------------------------------------+ //| #_i_SpecktrAnalis.mq4 | //| Copyright © 2006, klot. | //| klot@mail.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, klot." #property link "klot@mail.ru" //--- #include <stdlib.mqh> #define pi 3.14159265358979323846 //--- #import "#_lib_FFT.ex4" void realfastfouriertransform(double& a[], int tnn, bool inversefft); #import //--- #property indicator_separate_window #property indicator_buffers 1 #property indicator_color1 Red //---- buffers double SpecktrBuffer[]; //--- extern double n=8;// Задает размер массива - степень двойки extern double f=1.0;// Частота периодической функции extern double ff=0;// Фаза периодической функции //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexBuffer(0,SpecktrBuffer); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int tnn1=MathPow(2,n);// По ограничению функции- размер массива длжен быть степенью двойки double aa[]; int N=ArrayResize(aa,tnn1); SetIndexDrawBegin(0,Bars-N); SetIndexDrawBegin(1,Bars-N); //ArrayResize(aa,tnn1+1); //Для косинус-преобразования //--- // Исследование спектра разных функций double sig; for(int i=0; i<=N-1; i++) { sig=MathCos(f*i/(2.0*pi)+ff*pi); // Обыкновенная периодическая функция - к рынку не имееет отношения //sig=Close[i]; //sig=iRSI(NULL,0,14,PRICE_CLOSE,i+1); aa[i]=sig; } //InSigNormalize(aa); //Нормализация значений // Прямое преобразование Фурье - после выпонения функции в массиве aa[] - спектрограмма realfastfouriertransform(aa, tnn1, false); InSigNormalize(aa); //Нормализация значений //--- Вывод спектрограммы на экран for( i=0; i<=N-1; i++) { // Модуль комплексного числа SpecktrBuffer[i]=MathSqrt(aa[i*2]*aa[i*2]+aa[i*2+1]*aa[i*2+1]); } //--- /* //realfastfouriertransform(aa, tnn1, true); for( i=0; i<=N; i++) { SpecktrBuffer[i]=aa[i]; }*/ //---- return(0); } //+------------------------------------------------------------------+ //--------------------------------------------------------------------+ void InSigNormalize(double& aa[]) { double sum_sqrt; int element_count=ArraySize(aa); sum_sqrt=0; for( int i=0; i<=element_count-1; i++) { sum_sqrt+=MathPow(aa[i],2); } sum_sqrt=MathSqrt(sum_sqrt); if (sum_sqrt!=0) { for( i=0; i<=element_count-1; i++) { aa[i]=aa[i]/sum_sqrt; } } return; } //---------------------------------------------------------------------+ Dmitrii 2006.10.05 12:07 #14 lsv писал (а): 振幅と位相は1つの複素数で、1バーは虚数部=0となる1つの数でもあります。したがって、8小節は8つの周波数となります。klot さんに感想を聞いてみましょう。 複素数でやってみた。 //--- スペクトログラムを画面に出力する for( i=0; i<=N-1; i++) { // 複素数のモジュール SpecktrBuffer[i]=MathSqrt(aa[i*2]*aa[i*2]+aa[i*2+1]*aa[i*2+1]); } //--- Юрий Макаров 2006.10.05 12:52 #15 lsv: 振幅と位相は1つの複素数で、1バーは虚数部=0となる1つの数でもあります。したがって、8小節は8つの周波数となります。klotに 感想を聞いてみようか。 と聞いた方が良いですよ :) このテーマには数年前から取り組んでいます :) 私のホームページにも、TFに関するページがたくさんあります。 http://www.may.nnov.ru/mak/DSP/Contents.shtml もしくはググってみてください。 例えば、最初のリンクはこちら。 http://alglib.sources.ru/fft/realfft.php ページの終わりです。 FFTの複素関数と 比較すると,周波数f-1~f-N/2+1が どこかに消えてしまい,周波数f0と fN/ 2の実部だけが残り,以前の複素周波数f0と入れ替わって いることがわかる。その理由は、フーリエ変換の対称性にある。実関数h(t)に対して、H(-f)=H *( f)が成り立つのだ。 したがって、周波数f-1~f-N/2+ 1は、その対称的な双子の複素共役によって得られるため、もはや新しい情報はなく、周波数f0と fN/ 2は虚数 部が0に等しくなります。 =========================================================== 複素数は2つの独立した成分を含んでいます。 虚数部が0に等しい複素数は、1つの独立成分を含む。 入力が複素数列の場合、K個の周波数が得られる。 入力が実数の場合、半分の周波数が残ります。 Dmitry Fedoseev 2006.10.05 21:59 #16 私の推論はもっと単純で、ある定理があるのですが、それを証明した人の姓を思い出せません。アナログ信号をデジタルに変換する場合、ある周波数を記憶するためには、記憶した周波数の2倍のサンプルが必要なのだそうです。この場合、サンプル数は8個なので、4周期分以上の周波数情報を格納することはできない。 Rashid Umarov 2006.10.05 22:27 #17 コテルニコフの定理 Ronen Kagan 2006.10.05 23:18 #18 議論から判断すると、このフーリエは何か面白そうだが、残念ながら私にはよく分からない。 どなたか、どんなもので、どうやってEAを作るのか、わかりやすく説明していただけませんか? Dmitry Fedoseev 2006.10.06 00:34 #19 Ronen:議論から判断すると、このフーリエは何か面白いのですが、残念ながらここで話していることが理解できません。 どなたか、それが何であり、それを使ってどのようにEAを作るかを端的に説明していただけませんか? 不正確なものも作れますが...。ポイントは、どんな周期 関数も異なる周波数の正弦波成分の和として表現できること、つまりフーリエ級数に展開できることです。フーリエ級数は、周波数が2倍のサインとコサイン成分(高調波)の和である。フーリエ変換による数学的操作により、データ系列は一様に 変化する周波数の正弦波の和として表示され、各成分について振幅を得ることができます。そして、それぞれの周波数成分を操作することで、信号をフィルタリングすることができる、などなど。それはいいのですが、ひとつだけ、関数が周期的でなければなりません。たとえ周期的でなくても、このペロブランチは周期的であることを暗示しているのです。でも、誰にもわからない...。もしかしたら、何かメリットがあるのかもしれませんね。 Андрей 2006.10.06 08:31 #20 Integer писал (а): ポイントは、どんな周期 関数も ... として表現できることです。 まあ、難しすぎなければ......ダミーのレベルに合わせてもう少し。 間違っているかもしれませんが、この条件には小型のTFが割と合うように思います。現在、グローバル変数でM1からprevBars!=Barsで値を渡し、M15とH1で1分間隔で読み込んで観察していますが、なるほど、メジャーTFのバー内のエントリーポイントに強く影響する可能性があります。遊び心というか、「1時間ごとのバーの中には、10pの利益が収まっているんだよ。)もし、サイン/コサインが本当に嘘をつくなら、日中取引では、それは本当のアドオンとなるでしょう。そう思える。 123456789...19 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
もう一度やってみます。
振幅と位相は1つの複素数で、1バーは虚数部=0となる1つの数でもあります。したがって、8小節は8つの周波数となります。klot さんに感想を聞いてみましょう。
複素数でやってみた。
//--- スペクトログラムを画面に出力する
for( i=0; i<=N-1; i++)
{
// 複素数のモジュール
SpecktrBuffer[i]=MathSqrt(aa[i*2]*aa[i*2]+aa[i*2+1]*aa[i*2+1]);
}
//---
振幅と位相は1つの複素数で、1バーは虚数部=0となる1つの数でもあります。したがって、8小節は8つの周波数となります。klotに 感想を聞いてみようか。
このテーマには数年前から取り組んでいます :)
私のホームページにも、TFに関するページがたくさんあります。
http://www.may.nnov.ru/mak/DSP/Contents.shtml
もしくはググってみてください。
例えば、最初のリンクはこちら。
http://alglib.sources.ru/fft/realfft.php
ページの終わりです。
FFTの複素関数と 比較すると,周波数f-1~f-N/2+1が どこかに消えてしまい,周波数f0と fN/ 2の実部だけが残り,以前の複素周波数f0と入れ替わって いることがわかる。その理由は、フーリエ変換の対称性にある。実関数h(t)に対して、H(-f)=H *( f)が成り立つのだ。
したがって、周波数f-1~f-N/2+ 1は、その対称的な双子の複素共役によって得られるため、もはや新しい情報はなく、周波数f0と fN/ 2は虚数 部が0に等しくなります。
===========================================================複素数は2つの独立した成分を含んでいます。
虚数部が0に等しい複素数は、1つの独立成分を含む。
入力が複素数列の場合、K個の周波数が得られる。
入力が実数の場合、半分の周波数が残ります。
議論から判断すると、このフーリエは何か面白そうだが、残念ながら私にはよく分からない。
どなたか、どんなもので、どうやってEAを作るのか、わかりやすく説明していただけませんか?
議論から判断すると、このフーリエは何か面白いのですが、残念ながらここで話していることが理解できません。
どなたか、それが何であり、それを使ってどのようにEAを作るかを端的に説明していただけませんか?
不正確なものも作れますが...。ポイントは、どんな周期 関数も異なる周波数の正弦波成分の和として表現できること、つまりフーリエ級数に展開できることです。フーリエ級数は、周波数が2倍のサインとコサイン成分(高調波)の和である。フーリエ変換による数学的操作により、データ系列は一様に 変化する周波数の正弦波の和として表示され、各成分について振幅を得ることができます。そして、それぞれの周波数成分を操作することで、信号をフィルタリングすることができる、などなど。それはいいのですが、ひとつだけ、関数が周期的でなければなりません。たとえ周期的でなくても、このペロブランチは周期的であることを暗示しているのです。でも、誰にもわからない...。もしかしたら、何かメリットがあるのかもしれませんね。
ポイントは、どんな周期 関数も ... として表現できることです。
まあ、難しすぎなければ......ダミーのレベルに合わせてもう少し。
間違っているかもしれませんが、この条件には小型のTFが割と合うように思います。現在、グローバル変数でM1からprevBars!=Barsで値を渡し、M15とH1で1分間隔で読み込んで観察していますが、なるほど、メジャーTFのバー内のエントリーポイントに強く影響する可能性があります。遊び心というか、「1時間ごとのバーの中には、10pの利益が収まっているんだよ。)もし、サイン/コサインが本当に嘘をつくなら、日中取引では、それは本当のアドオンとなるでしょう。そう思える。