我如何在MQL5中获得Open,Low,High,Close参数? - 页 9 1234567891011121314 新评论 Igor Makanu 2019.07.30 18:03 #81 Renat Akhtyamov: 我已经习惯了四合板,它更紧凑,更容易阅读 ;) 我的紧凑的例子是在头版......这基本上是一切开始的地方 )))) Artyom Trishkin 2019.07.30 19:52 #82 Igor Makanu:嗯,我想你有不想构建成字节的位子......基本上没有更多的选择了!))))如果这个线程是在版主的注视下,就需要做一些事情......我把宏拆开来做零件。 Artem,它到底有没有用? 2019.07.30 19:42:16.639 tst_iXXX_Copy (EURUSD,H1) 开始测试#1... 2019.07.30 19:42:40.199 tst_iXXX_Copy (EURUSD,H1) CopyClose : loops=500000000 , ms=23422 2019.07.30 19:42:40.199 tst_iXXX_Copy (EURUSD,H1) 开始测试#2... 2019.07.30 19:43:26.953 tst_iXXX_Copy (EURUSD,H1) iClose : loops=500000000 , ms=46609 2019.07.30 19:43:26.953 tst_iXXX_Copy (EURUSD,H1) 开始测试#3... 2019.07.30 19:44:12.274 tst_iXXX_Copy (EURUSD,H1) Close[i] : loops=500000000 , ms=45156 2019.07.30 19:44:12.274 tst_iXXX_Copy (EURUSD,H1) 开始测试 #4... 2019.07.30 19:44:42.080 tst_iXXX_Copy (EURUSD,H1) CopyRates : loops=500000000 , ms=29656 2019.07.30 19:44:42.080 tst_iXXX_Copy (EURUSD,H1) 结束脚本 是的,这很有效。 2019.07.31 00:38:01.936 Start test № 1... 2019.07.31 00:38:31.097 CopyClose : loops=500000000 , ms=29015 2019.07.31 00:38:31.097 Start test № 2... 2019.07.31 00:41:25.095 iClose : loops=500000000 , ms=173875 2019.07.31 00:41:25.095 Start test № 3... 2019.07.31 00:44:29.777 Close[i] : loops=500000000 , ms=184547 2019.07.31 00:44:29.777 Start test № 4... 2019.07.31 00:45:01.074 CopyRates : loops=500000000 , ms=31172 2019.07.31 00:45:01.074 End script 一句话。 29秒 CopyClose() 173秒iClose() 184秒 关闭[] 31秒 CopyRates() 怎么了?为什么我有超过六倍的差异? 深圳在D1上运行 Igor Makanu 2019.07.30 19:53 #83 Artyom Trishkin: 怎么了?为什么我有超过六倍的差异? 伊戈尔-马卡努。 嗯,我想你有不想构建成字节的位子......基本上没有更多的选择了!)))) ))) Artyom Trishkin 2019.07.30 20:32 #84 Igor Makanu: 嗯,我想你有不想构建成字节的位子......基本上没有更多的选择了!)))) ))) 在H1上做了一个测试,没有明显的区别。 2019.07.31 00:55:30.290 Start test № 1... 2019.07.31 00:55:58.234 CopyClose : loops=500000000 , ms=27812 2019.07.31 00:55:58.234 Start test № 2... 2019.07.31 00:58:59.095 iClose : loops=500000000 , ms=180734 2019.07.31 00:58:59.095 Start test № 3... 2019.07.31 01:02:06.834 Close[i] : loops=500000000 , ms=187610 2019.07.31 01:02:06.834 Start test № 4... 2019.07.31 01:02:38.365 CopyRates : loops=500000000 , ms=31406 2019.07.31 01:02:38.365 End script 而比特和字节与之无关? Igor Makanu 2019.07.30 20:42 #85 Artyom Trishkin: 而比特和字节与之无关? 我不会告诉你,你的电脑一定很笨,是吗? 我已经测试过几次,罗曼也测试过--结果是相当的。 对于这个测试,硬盘的速度不应该是关键的,剩下的就不多了:操作系统,而硬件=内存+CPU,某处有慢的东西。 当然,在一些 "内部世界 "酷睿i3有一个选项,我有一个酷睿™i3-4170 Artyom Trishkin 2019.07.30 21:09 #86 Igor Makanu: 我不会告诉你,你的电脑一定很笨,是吗? 我已经测试过几次,罗曼也测试过--结果是相当的 对于这个测试,硬盘的速度不应该是关键的,剩下的就不多了:操作系统,而硬件=内存+CPU,某处有滞后的东西。 当然,在一些 "内部世界 "酷睿i3有一个选项,我有一个酷睿™i3-4170 我有一个挂在第二个符号上的测试EA,其中定时器中的事件控制是不变的。我们可以假设它以某种方式影响了它。而且只在非 CopyXXX功能上。目前没有理由把它从图表中删除--它的存在对我目前的事务比这个测试更重要。 Andrey Barinov 2019.07.31 03:51 #87 Artyom Trishkin: 在H1上做了一个测试,没有明显的差别。 开发者曾经说过,5中新的iXXX函数只是CopyXXX函数的一个包装。 因此,预计在单次查询中不会出现差异。 Fast235 2019.07.31 05:16 #88 Renat Akhtyamov: 在功能速度上有什么定论--哪个更快? //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ int Count=5000000; // кол-во проходов //--- void OnStart(void) { Print("Bench_1: ",Bench_1(Count)," msc"); Print("Bench_2: ",Bench_2(Count)," msc"); } //+------------------------------------------------------------------+ //| Bench_1 | //+------------------------------------------------------------------+ ulong Bench_1(const int _count) { const ulong StartTime=GetMicrosecondCount(); //--- for(int i=0; i<Count;i++) { datetime time = iTime(Symbol(),Period(),0); double open = iOpen(Symbol(),Period(),0); double high = iHigh(Symbol(),Period(),0); double low = iLow(Symbol(),Period(),0); double close = iClose(NULL,PERIOD_CURRENT,0); long volume= iVolume(Symbol(),0,0); } //--- return(GetMicrosecondCount() - StartTime); } //+------------------------------------------------------------------+ //| Bench_2 | //+------------------------------------------------------------------+ ulong Bench_2(const int _count) { datetime time[]; double open[]; // Open (цены открытия бара) double high[]; // High (цены максимума бара) double low[]; // Open (цены минимума бара) double close[]; // Open (цены минимума бара) long volume[]; // Close (цены закрытия бара) const ulong StartTime=GetMicrosecondCount(); //--- for(int i=0; i<Count;i++) { CopyTime(Symbol(),Period(),1,1,time); CopyOpen(Symbol(),Period(),1,1,open); CopyHigh(Symbol(),Period(),1,1,high); CopyLow(Symbol(),Period(),1,1,low); CopyClose(Symbol(),Period(),1,1,close); CopyTickVolume(Symbol(),Period(),1,1,volume); //--- datetime _time = time[0]; double _open = open[0]; double _high = high[0]; double _low = low[0]; double _close = close[0]; long _volume= volume[0]; } //--- return(GetMicrosecondCount() - StartTime); } //+------------------------------------------------------------------+ 剧本的作者不记得是谁了 Andrey Khatimlianskii 2019.07.31 12:48 #89 Igor Makanu: 他们的工作是一样的,我认为实验是为了实验......。这是最后一次5亿次的测试调用,是的,你可以看到区别,唯一剩下的就是要弄清楚一分钟有多少个刻度(~60),一小时有多少个刻度(~3600),一天有多少个刻度(~86400),以及这23秒将运行5亿次调用...。 5 787天=23秒的利润?如果我们在每个tick 上使用最快的函数,)))))。 我认为,使用方便的东西,不要听任何人的。 我忘记了测试和优化,伊戈尔。这就是需要速度的地方。 Igor Makanu 2019.07.31 15:09 #90 Andrey Khatimlianskii: 我忘记了测试和优化的问题,伊戈尔。这就是需要速度的地方。 是的,嗯...只是这里没有一群认真讨论这个话题的人,所以我完全没有想到这一切是为了什么))))。 你是对的!- 但我们需要一个方便使用的CopyOpen()函数...如果我们把CopyOpen()的调用 包在额外的函数中,那么性能的提高就会消失。 ZZY:我认为,一般来说,它就像其他地方一样--你用汇编编写,你会得到很长的开发时间,而不是说最终的性能会比你用15分钟编写的C++高--你应该检查一下。 1234567891011121314 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我已经习惯了四合板,它更紧凑,更容易阅读
;)
我的紧凑的例子是在头版......这基本上是一切开始的地方 ))))
嗯,我想你有不想构建成字节的位子......基本上没有更多的选择了!))))
如果这个线程是在版主的注视下,就需要做一些事情......我把宏拆开来做零件。
Artem,它到底有没有用?
2019.07.30 19:42:16.639 tst_iXXX_Copy (EURUSD,H1) 开始测试#1...
2019.07.30 19:42:40.199 tst_iXXX_Copy (EURUSD,H1) CopyClose : loops=500000000 , ms=23422
2019.07.30 19:42:40.199 tst_iXXX_Copy (EURUSD,H1) 开始测试#2...
2019.07.30 19:43:26.953 tst_iXXX_Copy (EURUSD,H1) iClose : loops=500000000 , ms=46609
2019.07.30 19:43:26.953 tst_iXXX_Copy (EURUSD,H1) 开始测试#3...
2019.07.30 19:44:12.274 tst_iXXX_Copy (EURUSD,H1) Close[i] : loops=500000000 , ms=45156
2019.07.30 19:44:12.274 tst_iXXX_Copy (EURUSD,H1) 开始测试 #4...
2019.07.30 19:44:42.080 tst_iXXX_Copy (EURUSD,H1) CopyRates : loops=500000000 , ms=29656
2019.07.30 19:44:42.080 tst_iXXX_Copy (EURUSD,H1) 结束脚本
是的,这很有效。
一句话。
怎么了?为什么我有超过六倍的差异?
深圳在D1上运行
怎么了?为什么我有超过六倍的差异?
嗯,我想你有不想构建成字节的位子......基本上没有更多的选择了!))))
)))
Igor Makanu:
嗯,我想你有不想构建成字节的位子......基本上没有更多的选择了!))))
)))
在H1上做了一个测试,没有明显的区别。
而比特和字节与之无关?
而比特和字节与之无关?
我不会告诉你,你的电脑一定很笨,是吗?
我已经测试过几次,罗曼也测试过--结果是相当的。
对于这个测试,硬盘的速度不应该是关键的,剩下的就不多了:操作系统,而硬件=内存+CPU,某处有慢的东西。
当然,在一些 "内部世界 "酷睿i3有一个选项,我有一个酷睿™i3-4170
我不会告诉你,你的电脑一定很笨,是吗?
我已经测试过几次,罗曼也测试过--结果是相当的
对于这个测试,硬盘的速度不应该是关键的,剩下的就不多了:操作系统,而硬件=内存+CPU,某处有滞后的东西。
当然,在一些 "内部世界 "酷睿i3有一个选项,我有一个酷睿™i3-4170
我有一个挂在第二个符号上的测试EA,其中定时器中的事件控制是不变的。我们可以假设它以某种方式影响了它。而且只在非 CopyXXX功能上。目前没有理由把它从图表中删除--它的存在对我目前的事务比这个测试更重要。
在H1上做了一个测试,没有明显的差别。
开发者曾经说过,5中新的iXXX函数只是CopyXXX函数的一个包装。
因此,预计在单次查询中不会出现差异。
在功能速度上有什么定论--哪个更快?
他们的工作是一样的,我认为实验是为了实验......。这是最后一次5亿次的测试调用,是的,你可以看到区别,唯一剩下的就是要弄清楚一分钟有多少个刻度(~60),一小时有多少个刻度(~3600),一天有多少个刻度(~86400),以及这23秒将运行5亿次调用...。
5 787天=23秒的利润?如果我们在每个tick 上使用最快的函数,)))))。
我认为,使用方便的东西,不要听任何人的。
我忘记了测试和优化,伊戈尔。这就是需要速度的地方。
我忘记了测试和优化的问题,伊戈尔。这就是需要速度的地方。
是的,嗯...只是这里没有一群认真讨论这个话题的人,所以我完全没有想到这一切是为了什么))))。
你是对的!- 但我们需要一个方便使用的CopyOpen()函数...如果我们把CopyOpen()的调用 包在额外的函数中,那么性能的提高就会消失。
ZZY:我认为,一般来说,它就像其他地方一样--你用汇编编写,你会得到很长的开发时间,而不是说最终的性能会比你用15分钟编写的C++高--你应该检查一下。