MT5和速度在行动 - 页 56 1...495051525354555657585960616263...94 新评论 Roman 2020.10.14 03:55 #551 Renat Akhtyamov: 绅士们的进步... 首先阅读计算机中的内存分配,然后是如何和通过什么方式进行分配,然后是如何清理和读出和读入,并不困难。至少可以向开发商提出更合理的建议 你在MT4上不知道吗? 你自己使用预定义的Ask Bid? 在mt5的整个MqlTick结构 中,由于某种原因,它们被丢失了。 调用函数,填充结构,然后才得到值。 还是立即得到价值,有什么区别吗? 或者它不是在我的方向? 你至少应该说明你是写给谁的))。 A100 2020.10.14 03:59 #552 Roman:预先定义的变量,对于当前的勾股,可能会更好。 开发商以前曾解释过,直接进入有一个基本限制 void f() { MqlTick t1 = _Tick; MqlTick t2 = _Tick; } 而且一般来说,t1不等于t2。此外,t1和t2中的字段值最终可能指的是不同的ticks。 Roman 2020.10.14 04:06 #553 A100:开发商以前曾解释过,直接进入有一个基本限制而一般来说,t1不等于t2。此外,t1和t2里面的字段值可以指向不同的tick,尽管它们是链接字段(它们应该指向同一个tick)。 Brr,基本限制是什么? 你的例子中的结构是不必要的,它不需要被填充。 一个值来自套接字,并根据结构被写入变量_Ask, _Bid等。_Ask != _Ask according to you? 如果你填充结构,就会出现限制,这需要一些时间。 你不需要填写,而是直接给出_Ask、_Bid等。 A100 2020.10.14 04:17 #554 Roman:Brr,原则限制是什么? 你的例子中的结构在这里是不必要的,它不需要被填入。 void f() { double ask1 = _Ask; double ask2 = _Ask; } 你可以在没有结构的情况下重写它。在一般情况下,ask1不等于ask2 Valeriy Yastremskiy 2020.10.14 04:22 #555 A100:你也可以在没有结构的情况下重写它。在一般情况下,ask1不等于ask2 也就是说,这些是对非同步环境的请求,而响应是由环境的当前状态接收的?而OnTick是抓取当前的tick并制定EA,但同时通过tick结构要求EA在制定时可以从下一个tick中得到答案? Roman 2020.10.14 04:22 #556 A100:你也可以在没有结构的情况下重写它。一般来说,ask1不等于ask2 所以你不必使用100500位数字,其中实数的最后一位数字相差0.0000000000000000000001 对于每个变量都有不同的数字,对于价格双倍最大8。 fxsaber 2020.10.14 05:30 #557 Renat Fatkhullin:发布了第2652号测试版,具有重要意义。 改进了编译中断(22%)。 大大加快了SymbolInfoTick的访问速度。 22%良好。 SymbolInfoTick- 在我的家用机器上,我用眼睛注意到它没有发出警报。然而,在日志中对这些警报进行了过滤,看到比24小时前同一时期发出的2650个警报要多很多。 将两份日志都发给了PM。 fxsaber 2020.10.14 05:31 #558 Valeriy Yastremskiy:也就是说,这些是对非同步环境的请求,而响应是基于环境的当前状态?而OnTick是捕捉当前的tick并制定EA,但EA在制定时由tick结构提出的请求可以从下一个tick中得到答案? 是的。 fxsaber 2020.10.14 05:41 #559 Renat Fatkhullin:对于大规模的勾股工作,要放入更多的内存。在2020年,当涉及到分析和研究时,4gb(价格为20欧元)远远不够好。 我们谈论的是对CopyTicks的一次性调用。这样做是为了在OnInit中对这些点位进行虚拟回测,然后继续实时回测,只输入新的点位。 作为一个折中方案,我建议在OnInit中调用CopyTicks后立即释放终端的内存。那么我们就不必为CopyTicks引入强制冷却功能。 现在,睡眠版 的冷却是非常拐弯抹角的。但我在上面展示了这个拐杖是如何节省内存的。 现在事实证明,20个专家顾问即使在慢速VPS上也能快速运行。但启动它们是一个严重的问题。 这里有一个专家顾问,显示了这个问题。 // Демонстрация 10-ти секундного удержания в памяти ненужных данных CopyTicks. #define PRINT(A) Print(#A + " = " + (string)(A)) input datetime inFrom = D'2020.06.01'; // С какой даты анализировать историю int OnInit() { MqlTick Ticks[]; Print("Before CopyTicks:"); PRINT(MQLInfoInteger(MQL_MEMORY_USED)); PRINT(TerminalInfoInteger(TERMINAL_MEMORY_USED)); PRINT(CopyTicksRange(_Symbol, Ticks, COPY_TICKS_ALL, (long)inFrom * 1000)); ArrayFree(Ticks); Print("After CopyTicks:"); for (int i = 0; i < 10; i++) { PRINT(i); PRINT(MQLInfoInteger(MQL_MEMORY_USED)); PRINT(TerminalInfoInteger(TERMINAL_MEMORY_USED)); Sleep(1000); } return(INIT_FAILED); } 结果。 2020.10.14 08:49:24.016 Before CopyTicks: 2020.10.14 08:49:24.016 MQLInfoInteger(MQL_MEMORY_USED) = 0 2020.10.14 08:49:24.031 TerminalInfoInteger(TERMINAL_MEMORY_USED) = 864 2020.10.14 08:49:25.399 CopyTicksRange(_Symbol,Ticks,COPY_TICKS_ALL,(long)inFrom*1000) = 14372119 2020.10.14 08:49:25.465 After CopyTicks: 2020.10.14 08:49:25.465 i = 0 2020.10.14 08:49:25.465 MQLInfoInteger(MQL_MEMORY_USED) = 1 2020.10.14 08:49:25.499 TerminalInfoInteger(TERMINAL_MEMORY_USED) = 1796 2020.10.14 08:49:26.594 i = 1 2020.10.14 08:49:26.594 MQLInfoInteger(MQL_MEMORY_USED) = 1 2020.10.14 08:49:26.630 TerminalInfoInteger(TERMINAL_MEMORY_USED) = 1796 2020.10.14 08:49:27.729 i = 2 2020.10.14 08:49:27.729 MQLInfoInteger(MQL_MEMORY_USED) = 1 2020.10.14 08:49:27.762 TerminalInfoInteger(TERMINAL_MEMORY_USED) = 1796 2020.10.14 08:49:28.852 i = 3 2020.10.14 08:49:28.852 MQLInfoInteger(MQL_MEMORY_USED) = 1 2020.10.14 08:49:28.884 TerminalInfoInteger(TERMINAL_MEMORY_USED) = 1796 2020.10.14 08:49:29.977 i = 4 2020.10.14 08:49:29.977 MQLInfoInteger(MQL_MEMORY_USED) = 1 2020.10.14 08:49:30.009 TerminalInfoInteger(TERMINAL_MEMORY_USED) = 1796 2020.10.14 08:49:31.102 i = 5 2020.10.14 08:49:31.102 MQLInfoInteger(MQL_MEMORY_USED) = 1 2020.10.14 08:49:31.136 TerminalInfoInteger(TERMINAL_MEMORY_USED) = 1796 2020.10.14 08:49:32.224 i = 6 2020.10.14 08:49:32.225 MQLInfoInteger(MQL_MEMORY_USED) = 1 2020.10.14 08:49:32.257 TerminalInfoInteger(TERMINAL_MEMORY_USED) = 1796 2020.10.14 08:49:33.348 i = 7 2020.10.14 08:49:33.348 MQLInfoInteger(MQL_MEMORY_USED) = 1 2020.10.14 08:49:33.381 TerminalInfoInteger(TERMINAL_MEMORY_USED) = 1796 2020.10.14 08:49:34.468 i = 8 2020.10.14 08:49:34.468 MQLInfoInteger(MQL_MEMORY_USED) = 1 2020.10.14 08:49:34.501 TerminalInfoInteger(TERMINAL_MEMORY_USED) = 1796 2020.10.14 08:49:35.593 i = 9 2020.10.14 08:49:35.593 MQLInfoInteger(MQL_MEMORY_USED) = 1 2020.10.14 08:49:35.605 TerminalInfoInteger(TERMINAL_MEMORY_USED) = 860 Renat Fatkhullin 2020.10.14 05:52 #560 fxsaber:22% - 很好。SymbolInfoTick - 在家用机上,我用眼睛注意到没有警报。然而,在日志中对这些警报进行了过滤,看到比24小时前同一时期发出的2650个警报要多很多。将两份日志都发给了PM。 在大规模并行访问的情况下,速度提高了10倍。 对于其他情况,只有处理器、内存和操作系统的升级。 1...495051525354555657585960616263...94 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
绅士们的进步...
你在MT4上不知道吗?
你自己使用预定义的Ask Bid?
在mt5的整个MqlTick结构 中,由于某种原因,它们被丢失了。
调用函数,填充结构,然后才得到值。
还是立即得到价值,有什么区别吗?
或者它不是在我的方向?
你至少应该说明你是写给谁的))。
预先定义的变量,对于当前的勾股,可能会更好。
开发商以前曾解释过,直接进入有一个基本限制
而且一般来说,t1不等于t2。此外,t1和t2中的字段值最终可能指的是不同的ticks。
开发商以前曾解释过,直接进入有一个基本限制
而一般来说,t1不等于t2。此外,t1和t2里面的字段值可以指向不同的tick,尽管它们是链接字段(它们应该指向同一个tick)。
Brr,基本限制是什么?
你的例子中的结构是不必要的,它不需要被填充。
一个值来自套接字,并根据结构被写入变量_Ask, _Bid等。
_Ask != _Ask according to you?
如果你填充结构,就会出现限制,这需要一些时间。
你不需要填写,而是直接给出_Ask、_Bid等。
Brr,原则限制是什么?
你的例子中的结构在这里是不必要的,它不需要被填入。
你可以在没有结构的情况下重写它。在一般情况下,ask1不等于ask2
你也可以在没有结构的情况下重写它。在一般情况下,ask1不等于ask2
也就是说,这些是对非同步环境的请求,而响应是由环境的当前状态接收的?而OnTick是抓取当前的tick并制定EA,但同时通过tick结构要求EA在制定时可以从下一个tick中得到答案?
你也可以在没有结构的情况下重写它。一般来说,ask1不等于ask2
所以你不必使用100500位数字,其中实数的最后一位数字相差0.0000000000000000000001
对于每个变量都有不同的数字,对于价格双倍最大8。
发布了第2652号测试版,具有重要意义。
22%良好。
SymbolInfoTick- 在我的家用机器上,我用眼睛注意到它没有发出警报。然而,在日志中对这些警报进行了过滤,看到比24小时前同一时期发出的2650个警报要多很多。
将两份日志都发给了PM。
也就是说,这些是对非同步环境的请求,而响应是基于环境的当前状态?而OnTick是捕捉当前的tick并制定EA,但EA在制定时由tick结构提出的请求可以从下一个tick中得到答案?
是的。
对于大规模的勾股工作,要放入更多的内存。
在2020年,当涉及到分析和研究时,4gb(价格为20欧元)远远不够好。
我们谈论的是对CopyTicks的一次性调用。这样做是为了在OnInit中对这些点位进行虚拟回测,然后继续实时回测,只输入新的点位。
作为一个折中方案,我建议在OnInit中调用CopyTicks后立即释放终端的内存。那么我们就不必为CopyTicks引入强制冷却功能。
现在,睡眠版 的冷却是非常拐弯抹角的。但我在上面展示了这个拐杖是如何节省内存的。
现在事实证明,20个专家顾问即使在慢速VPS上也能快速运行。但启动它们是一个严重的问题。
这里有一个专家顾问,显示了这个问题。
结果。
22% - 很好。
SymbolInfoTick - 在家用机上,我用眼睛注意到没有警报。然而,在日志中对这些警报进行了过滤,看到比24小时前同一时期发出的2650个警报要多很多。
将两份日志都发给了PM。
在大规模并行访问的情况下,速度提高了10倍。
对于其他情况,只有处理器、内存和操作系统的升级。