你好,斯蒂芬、
这是一篇很好的文章,不过我需要更详细地研究一下,因为我已经有 60 年没有使用过傅立叶变换了。 我很惊讶没有其他评论。 你能否发布专家 mq5 源,以便将三个选项编入专家并进行测试。
谢谢、
科达角
你好、
好文章。有趣的想法。最好能提供 mq5 示例代码来测试/尝试这些选项。谢谢。
你好,斯蒂芬
我离开我最喜欢的数学部分(傅立叶)已经有 30 年了。因此,我无法发表评论,但我读了你的精彩"'练习"。
很抱歉我帮不上忙,但还是要感谢你的分享。
斯蒂芬
谢谢你提供的参考资料,我会着手使用它,并将结果告诉你、
科达角
嗨,斯蒂芬、
非常有趣的文章!
有一个提示:必须删除 "类描述 "中的参数 "Points"(点)和 "Epicycles"(圆周),因为它们在代码中没有使用,编译器在编译生成的 EA 后会抱怨。
我的问题EA 运行顺利,但我无法以任何方式重现您的结果,也许我做错了什么。你能公布*.set 文件甚至你生成的 EA 源代码吗?
你做了前向测试吗?
总之,这是使用 FFT 的一堂好课。谢谢!
我知道作者甚至没有研究过快速傅立叶变换。)没错,何必呢,快速傅立叶变换和快速傅立叶变换都是空的,在交易中没有任何意义。15 年前,我曾在 Matlab 中做过这些变换,后来我又做了时间形式的逆变换--完全是胡说八道。FFT 在其他领域很有用,例如雷达。
但小波更有趣。如果把所有高频带都切掉,然后进行时域逆变换,就能得到一个出色的无延迟低通滤波器。不过,它也可以更简单地实现--通过 2-pass filters.....
你好、
它给了我 12 个错误
double CTrailingFT::ProcessFT(int Index) { double _ft = 0.0; static double _a[6]; // 固定大小的数组 al_complex _f[5]; // 5 epicycles // 用价格差异填充 _a for(int p=0; p<6; p++) { _a[p] = m_close.GetData(Index+p) - m_close.GetData(Index+p+1); } // 用自定义 6 点 FFT 代替 Alglib FFT CustomFFT6(_a, _f); // 假设优化函数 // 使用主导频率(如最大振幅)计算 _ft double maxMagnitude = 0.0; for(int s=0; s<5; s++) { double mag = MathSqrt(_f[s].re*_f[s].re + _f[s].im*_f[s].im); if(mag > maxMagnitude) { maxMagnitude = mag; _ft = _f[s].re; // 或使用加权组合 } } return _ft * 100.0; // 根据需要调整缩放比例 }
用自定义 FFT 代替 Alglib:
-
Alglib 的 FFT 对于小数据集来说可能较慢。根据您的窗口大小(6 点)实施轻量级 FFT。
预先计算 MathExp(-2.0*M_PI*...)项,以避免在每次刻度时重新计算。
错误处理:
在_f[s].im / _f[s].re.中添加检查以防止除以零。在 ProcessFT() 中避免矩阵操作。使用主导频率直接计算 _ft 的所需值。
错误处理:
-
在 _f[s].im / _f[s].re 中增加防止除以零的检查。
现在已经有了使用基本结构(M 型)的更为有效的方法。只要改变其参数,就能全面了解价格动态的变化(这就是脉冲均衡理论)。
至于傅立叶变换,在我看来,对于金融市场来说,这是一种 "拖沓 "的方法,因为金融工具的价格变动是一个非平稳的过程,而借助傅立叶方法来分析这种过程是低效的。
至于小波分析,由于使用了各种波状结构,确实更有趣。然而,这只是一种主观的标准选择,而不是使用单一的基本结构,脉冲均衡理论揭示了这一点。
新文章 您应该知道的 MQL5 向导技术(第 06 部分):傅里叶(Fourier)变换已发布:
约瑟夫·傅里叶(Joseph Fourier)引入的傅里叶变换是将复杂的数据波分解构为简单分量波的一种方法。 此功能对交易者来说可能更机敏,本文将对此进行关注。
在使用内置的 RSI 信号类,和内置的固定保证金资金管理进行编译时,我们确实得到了以下结果: EURJPY 覆盖此区间:2022.01.01 至 2023.01.01 时间帧:4 小时。 在运行这个测试时,我们既不设置盈利目标,也不使用默认止损设置,因此这两个输入均为零。 我们希望离场完全依据信号反转或触发尾随停止设置的止损来判定。
作者:Stephen Njuki