傅立叶的帮助 - 页 2 123456789...19 新评论 [Deleted] 2006.10.05 09:59 #11 振幅和相位是一个复数,1条也是一个数字,其中虚部=0。因此,8个小节就是8个频率。我们来问问klot 对此有何看法? Dmitrii 2006.10.05 10:03 #12 有东西没有发送文件 我再试试。 附加的文件: g_i_specktranalis_2.mq4 4 kb Dmitrii 2006.10.05 10: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 10:07 #14 lsv писал (а): 振幅和相位是一个复数,1条也是一个数字,其中虚部=0。因此,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 10:52 #15 lsv: 振幅和相位是一个复数,1条也是一个数字,其中虚部=0。因此,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 的虚数 部分等于零。 =========================================================== 一个复数包含2个独立成分。 一个虚部等于零的复数包含1个独立分量。 如果输入的是一系列的复数,我们就会得到K个频率。 如果输入的是一些实数,那么就保留一半的频率。 使用计量经济学方法分析图表 将概率论应用于缺口交易 利用指数平滑法进行时间序列预测 Dmitry Fedoseev 2006.10.05 19:59 #16 我的推理更简单:有一个定理,但我不记得证明这个定理的人的名字了:将模拟信号转换为数字信号,需要两倍于存储频率的样本数。在我们的案例中,有8个样本,所以它们可以存储不超过4个周期的频率信息。 Rashid Umarov 2006.10.05 20:27 #17 科特尔尼科夫定理。 Ronen Kagan 2006.10.05 21:18 #18 从讨论的情况来看,这个傅立叶是很有意思的东西,但遗憾的是,我不明白它是怎么一回事。 谁能简明扼要地解释一下它是什么,以及如何用它做一个EA? Dmitry Fedoseev 2006.10.05 22:34 #19 Ronen:从讨论来看,这个傅里叶是很有趣的东西,但不幸的是,我不明白我们在这里谈论的是什么, ,谁能简要地解释一下它是什么以及如何用它做一个EA? 我可以做一些不准确的东西....重点是,任何周期性 函数都可以表示为不同频率的正弦波分量之和,即可以扩展为傅里叶级数。傅里叶级数是频率加倍的正弦和余弦分量的总和(谐波)。通过一些傅里叶变换的数学处理,数据序列可以呈现为均匀 变化的频率正弦波的总和,对于每个分量,我们可以得到振幅,简单地说就是信号的频率响应(频率为1赫兹、2、3等的正弦波的振幅)。然后通过操纵每个频率分量,就可以对信号进行过滤,等等。这没问题,但有一点,函数必须是周期性的,即使它不是周期性的,这些围布也意味着它是周期性的。虽然谁知道...也许这有一些好处。 Андрей 2006.10.06 06:31 #20 Integer писал (а): 问题是,任何周期性 函数都可以表示为......。 好吧,如果不是太难的话--对傻瓜的水平来说,再多一点。 也许我错了,但在我看来,小型TFs相当适合这种条件。我现在观察它,通过全局变量传递来自M1(prevBars!=Bars)的值,并在M15和H1上以1分钟的间隔读取它们,我看到--它是否可能强烈影响主要TF的一个条形内的进入点。也许是为了好玩,也可能是--"在每个小时的条形图里,都坐着10便士的利润:)。或15便士的损失:(。" 如果正弦/余弦真的会说谎--对于日内来说,这将是一个真正的附加值。在我看来。 123456789...19 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我再试试。
振幅和相位是一个复数,1条也是一个数字,其中虚部=0。因此,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条也是一个数字,其中虚部=0。因此,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 的虚数 部分等于零。
===========================================================一个复数包含2个独立成分。
一个虚部等于零的复数包含1个独立分量。
如果输入的是一系列的复数,我们就会得到K个频率。
如果输入的是一些实数,那么就保留一半的频率。
从讨论的情况来看,这个傅立叶是很有意思的东西,但遗憾的是,我不明白它是怎么一回事。
谁能简明扼要地解释一下它是什么,以及如何用它做一个EA?
从讨论来看,这个傅里叶是很有趣的东西,但不幸的是,我不明白我们在这里谈论的是什么,
,谁能简要地解释一下它是什么以及如何用它做一个EA?
我可以做一些不准确的东西....重点是,任何周期性 函数都可以表示为不同频率的正弦波分量之和,即可以扩展为傅里叶级数。傅里叶级数是频率加倍的正弦和余弦分量的总和(谐波)。通过一些傅里叶变换的数学处理,数据序列可以呈现为均匀 变化的频率正弦波的总和,对于每个分量,我们可以得到振幅,简单地说就是信号的频率响应(频率为1赫兹、2、3等的正弦波的振幅)。然后通过操纵每个频率分量,就可以对信号进行过滤,等等。这没问题,但有一点,函数必须是周期性的,即使它不是周期性的,这些围布也意味着它是周期性的。虽然谁知道...也许这有一些好处。
问题是,任何周期性 函数都可以表示为......。
好吧,如果不是太难的话--对傻瓜的水平来说,再多一点。
也许我错了,但在我看来,小型TFs相当适合这种条件。我现在观察它,通过全局变量传递来自M1(prevBars!=Bars)的值,并在M15和H1上以1分钟的间隔读取它们,我看到--它是否可能强烈影响主要TF的一个条形内的进入点。也许是为了好玩,也可能是--"在每个小时的条形图里,都坐着10便士的利润:)。或15便士的损失:(。" 如果正弦/余弦真的会说谎--对于日内来说,这将是一个真正的附加值。在我看来。