用傅里叶变换预测未来 - 页 5 123456789101112...55 新评论 [删除] 2008.04.16 15:37 #41 以下是在刚刚超过一周的时间间隔内脱颖而出的频率(以天为单位)。 4.58. 2.58. 1.63(最强的,在中间的图表中显示)。 1.04 0.52. 0.26. 有什么建议是导致1.63天的周期(一周的第三次谐波)? [删除] 2008.04.16 21:34 #42 以下是第一个预测 仍有很多工作要做 ANG3110,你对明天的预测是什么? ANG3110 2008.04.17 04:41 #43 m_keeper: 以下是第一个预测 仍有很多工作要做 ANG3110,你对明天的预测是什么? 实际上我还没有具体做出预测。我可以直接用眼睛给你画。 那你在图上看到了什么,请详细描述一下。 vaa20003 2008.04.17 14:30 #44 也许有人有对mq4的非快速傅里叶变换?C或Pascal的实现也是可能的。 [删除] 2008.04.17 16:49 #45 vaa20003: 也许有人有对mq4的非快速傅里叶变换?C或Pascal的实现也是可能的。 在第二页看到 vaa20003 2008.04.18 07:22 #46 m_keeper: vaa20003: 也许有人有对mq4的非快速傅里叶变换?C或Pascal的实现也是可能的。见第二页。 谢谢,错过了... [删除] 2008.04.18 12:03 #47 以下是我们目前得到的情况 我们搜索主要的市场频率,确定它们的振幅和相位,定义trnd,并对整个事情进行添加和归一化。 我不喜欢在周期图上搜索局部最大值的方式,搜索是基于谐波分布的。 而没有任何迹象,当然你可以通过玩参数来隔离它们,但它仍然是不稳定的,而且往往是非常微观的。 的最大值。 第二个缺点是,所有东西都显示在一个窗口中,有必要将所有这些乐趣分散到主窗口的几个图表中。 和2-3个额外的窗口。 谁知道如何使所有的计算在一个地方进行,而所有其他人--指标、专家--都能获得结果? 选择适当的市场波动频率仍应由人工完成。如果用鼠标或像ANG3110 那样的线来选择最大值,那将是非常方便的。 ANG3110,你是如何落实与行的工作的?通过脚本? 关于如何处理我现在发布的内容,有几句话要说。 Lenght=560;//设置窗口的大小,单位为条。 Period_count=2;//我们将考虑多少个周期,相应地,长度应该比你在市场上看到的多出 period_count 倍。 Garmonic=9;//这个参数和下一个参数是由非常复杂的拟合方法决定的(我将详细介绍)。 GarmonicControl=1.7。 iMAperiod=4;//如果拟合没有帮助,试着将图形平滑一些。 Futur=100;//对多少条进行预测。 InPast=200;//对过去的条形图进行操作,用于估计预测,基于已有的数据。 实际上,你在指标上看到了什么(顺便说一下今天的预测)? 所有的图表都应该位于0到Lenght的范围内(好比+/-5%)。 如果范围不同,那只是一个小故障。 按刷新就可以正常工作(我不明白这里有什么问题)。 薄薄的粉红色图表--准备好的时间序列,应该与课程类似。 粗橙色--周期图,周期值等于蓝线的对应值 红条进入蓝线的位置和数量由Garmonic和GarmonicControl决定。 绿条支撑着周期图--检测到的周期在很大程度上取决于红线。 在分辨出最重要的周期后,你应该开始调整Garmonic*,直到你得到结果 薄薄的绿色曲线是相位图,看起来如果频率是稳定的,那么相位图是平滑的,但如果它波动,那么该频率的振荡最近受到了干扰,不能相信。(0对应的是-pi/2;长度---3*pi/2) 而实际上最重要的是那条粉红色的粗线--它是一个预测。预报不一定要和最初的图表相吻合,通过提升和重复之前的图表。最重要的是看到中枢点和它们可能的强度(预测的中枢时间肯定会不同)。 附加的文件: fft_and_future_searchlv2.mq4 16 kb Predicting the future with ANG3110 2008.04.18 22:48 #48 m_keeper: 选择适当的市场波动频率毕竟要靠人工完成。如果用鼠标选择最大值,或者用直线选择,将非常方便,正如ANG3110 所做的那样 ANG3110,你是如何落实与行的工作的?通过脚本? 对于你的情况,我认为最适合的是以下选项。 你做一个脚本来控制指标。 //============================================================== #import "user32.dll" int PostMessageA(int hWnd,int Msg,int wParam,int lParam); #import #define WM_COMMAND 0x0111 //============================================================== int i0,ip,T; int t0,tp,t0n,tpn; string Symb; int Per; //************************************************************** int init() { Symb=Symbol(); Per=Period(); t0=WindowTimeOnDropped(); T=64; i0=iBarShift(Symbol(),Period(),t0); ip=i0+T; tp=Time[ip]; t0n=t0; tpn=tp; ObjectCreate("RCh",4,0,tp,0,t0,0); ObjectSet("RCh",OBJPROP_COLOR,DodgerBlue); } //************************************************************** int start() { int hwnd=WindowHandle(Symb,Per); if (hwnd!=0) { PostMessageA(hwnd,WM_COMMAND,33324,0); GlobalVariableSet("gi0",i0); GlobalVariableSet("gip",ip); } else return(0); //---- while(IsStopped()==false) { t0=ObjectGet("RCh",OBJPROP_TIME2); if (t0>Time[0]) t0=Time[0]; tp=ObjectGet("RCh",OBJPROP_TIME1); i0=iBarShift(NULL,Per,t0); ip=iBarShift(NULL,Per,tp); T=ip-i0; if (T<2) {T=2; ip=i0+T; tp=Time[ip];} if (t0n!=t0 || tpn!=tp) { GlobalVariableSet("gi0",i0); GlobalVariableSet("gip",ip); PostMessageA(hwnd,WM_COMMAND,33324,0); t0n=t0; tpn=tp; } Sleep(200); } //============================================= return(0); } //************************************************************** void deinit() { ObjectDelete("RCh"); GlobalVariableDel("gi0"); GlobalVariableDel("gip"); } //************************************************************** 你在指标中的int start()之后插入它。 if (GlobalVariableCheck("gi0")) { i0=GlobalVariableGet("gi0"); ip=GlobalVariableGet("gip"); T=ip-i0; SetIndexShift(2,T/2); SetIndexShift(3,T/2); } else { i0=0; T=T0; SetIndexShift(2,T/2); SetIndexShift(3,T/2); } 首先你把指标放在图表上,然后扔掉脚本,用LR通道来移动图表。 我希望你能自己做,或者我可以给你一个提示。 [删除] 2008.04.19 17:22 #49 谢谢你,线路已经整理好了。 我可以再问一个问题吗? 我现在有三个图表的信息,一个在主窗口,两个在我的窗口。 参数只在其中一个中设置,并存储在全局变量中 这些变量被存储在全局变量中,键为 "PF_"+Symbol()+"_"+DoubleToStr(Period(),0)+"_key"。 我还在全局变量中存储了关于最大值的信息 问题是,我必须对每个图表进行三次计算。 一开始我尝试了iCustom,但在我看来,它并不适合我。 从以前添加的图表中获取数据,但要重新计算,至少要从头开始计算。 并看到它已经启动了(通过全局变量)。 并不做计算,而iCustom则返回一个空。 有没有办法让数组成为全局的? 在我看来,如果你把成千上万的值塞进GlobalVariable,它的工作速度就会慢很多。 它的工作速度会慢得多,因为对字符串的搜索是在 ANG3110 2008.04.19 20:38 #50 m_keeper: 有没有办法让数组成为全局的? 我不太清楚你的需要,但当你需要保存大量数据然后再读取时,使用向中间文件写入的方式会更容易,比如说。 int handle=FileOpen("Test.dat",FILE_BIN|FILE_WRITE)。 FileWriteArray(handle,arr,0,Narr)。 然后再从另一个程序中读回。 int handle=FileOpen("Test.dat",FILE_BIN|FILE_READ)。 FileReadArray(handle,arr,0,Narr)。 更多细节请参考MT4帮助。 123456789101112...55 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
以下是在刚刚超过一周的时间间隔内脱颖而出的频率(以天为单位)。
4.58.
2.58.
1.63(最强的,在中间的图表中显示)。
1.04
0.52.
0.26.
有什么建议是导致1.63天的周期(一周的第三次谐波)?
以下是第一个预测
仍有很多工作要做
ANG3110,你对明天的预测是什么?
以下是第一个预测
仍有很多工作要做
ANG3110,你对明天的预测是什么?
实际上我还没有具体做出预测。我可以直接用眼睛给你画。
那你在图上看到了什么,请详细描述一下。
也许有人有对mq4的非快速傅里叶变换?C或Pascal的实现也是可能的。
在第二页看到
也许有人有对mq4的非快速傅里叶变换?C或Pascal的实现也是可能的。
见第二页。
谢谢,错过了...
以下是我们目前得到的情况
我们搜索主要的市场频率,确定它们的振幅和相位,定义trnd,并对整个事情进行添加和归一化。
我不喜欢在周期图上搜索局部最大值的方式,搜索是基于谐波分布的。
而没有任何迹象,当然你可以通过玩参数来隔离它们,但它仍然是不稳定的,而且往往是非常微观的。
的最大值。
第二个缺点是,所有东西都显示在一个窗口中,有必要将所有这些乐趣分散到主窗口的几个图表中。
和2-3个额外的窗口。
谁知道如何使所有的计算在一个地方进行,而所有其他人--指标、专家--都能获得结果?
选择适当的市场波动频率仍应由人工完成。如果用鼠标或像ANG3110 那样的线来选择最大值,那将是非常方便的。
ANG3110,你是如何落实与行的工作的?通过脚本?
关于如何处理我现在发布的内容,有几句话要说。
Lenght=560;//设置窗口的大小,单位为条。
Period_count=2;//我们将考虑多少个周期,相应地,长度应该比你在市场上看到的多出 period_count 倍。
Garmonic=9;//这个参数和下一个参数是由非常复杂的拟合方法决定的(我将详细介绍)。
GarmonicControl=1.7。
iMAperiod=4;//如果拟合没有帮助,试着将图形平滑一些。
Futur=100;//对多少条进行预测。
InPast=200;//对过去的条形图进行操作,用于估计预测,基于已有的数据。
实际上,你在指标上看到了什么(顺便说一下今天的预测)?
所有的图表都应该位于0到Lenght的范围内(好比+/-5%)。
如果范围不同,那只是一个小故障。 按刷新就可以正常工作(我不明白这里有什么问题)。
薄薄的粉红色图表--准备好的时间序列,应该与课程类似。
粗橙色--周期图,周期值等于蓝线的对应值
红条进入蓝线的位置和数量由Garmonic和GarmonicControl决定。
绿条支撑着周期图--检测到的周期在很大程度上取决于红线。 在分辨出最重要的周期后,你应该开始调整Garmonic*,直到你得到结果
薄薄的绿色曲线是相位图,看起来如果频率是稳定的,那么相位图是平滑的,但如果它波动,那么该频率的振荡最近受到了干扰,不能相信。(0对应的是-pi/2;长度---3*pi/2)
而实际上最重要的是那条粉红色的粗线--它是一个预测。预报不一定要和最初的图表相吻合,通过提升和重复之前的图表。最重要的是看到中枢点和它们可能的强度(预测的中枢时间肯定会不同)。
选择适当的市场波动频率毕竟要靠人工完成。如果用鼠标选择最大值,或者用直线选择,将非常方便,正如ANG3110 所做的那样
ANG3110,你是如何落实与行的工作的?通过脚本?
对于你的情况,我认为最适合的是以下选项。
你做一个脚本来控制指标。
你在指标中的int start()之后插入它。
首先你把指标放在图表上,然后扔掉脚本,用LR通道来移动图表。
我希望你能自己做,或者我可以给你一个提示。
谢谢你,线路已经整理好了。
我可以再问一个问题吗?
我现在有三个图表的信息,一个在主窗口,两个在我的窗口。
参数只在其中一个中设置,并存储在全局变量中
这些变量被存储在全局变量中,键为 "PF_"+Symbol()+"_"+DoubleToStr(Period(),0)+"_key"。
我还在全局变量中存储了关于最大值的信息
问题是,我必须对每个图表进行三次计算。
一开始我尝试了iCustom,但在我看来,它并不适合我。
从以前添加的图表中获取数据,但要重新计算,至少要从头开始计算。
并看到它已经启动了(通过全局变量)。
并不做计算,而iCustom则返回一个空。
有没有办法让数组成为全局的?
在我看来,如果你把成千上万的值塞进GlobalVariable,它的工作速度就会慢很多。
它的工作速度会慢得多,因为对字符串的搜索是在
有没有办法让数组成为全局的?
我不太清楚你的需要,但当你需要保存大量数据然后再读取时,使用向中间文件写入的方式会更容易,比如说。
int handle=FileOpen("Test.dat",FILE_BIN|FILE_WRITE)。
FileWriteArray(handle,arr,0,Narr)。
然后再从另一个程序中读回。
int handle=FileOpen("Test.dat",FILE_BIN|FILE_READ)。
FileReadArray(handle,arr,0,Narr)。
更多细节请参考MT4帮助。