MT5和速度在行动 - 页 78 1...717273747576777879808182838485...94 新评论 fxsaber 2020.11.21 09:28 #771 Valeriy Yastremskiy:正确理解终端内存与mcl、tix等终端程序内存的堆叠。 不,仅仅是CopyTicks存储了10秒的所需刻度的缓存。例如,要求3Gb的内存,终端将把这3Gb多存储在缓存中。总终端将消耗6GB。如果你做ArrayFree 并为另一个符号请求3Gb,终端将消耗9Gb。以此类推。 Renat Fatkhullin 2020.11.21 09:51 #772 Valeriy Yastremskiy:正确理解终端的内存是加在终端程序mcl、tix等的内存中的。 当然了。 fxsaber 2020.11.21 10:25 #773 需要制作一个脚本,根据几个符号的tick历史 按公式创建一个自定义符号 MqlTick Formula( const MqlTick &Symbol1_Tick const MqlTick &Symbol2_Tick, const MqlTick &Symbol3_Tick, const MqlTick &Symbol4_Tick, const MqlTick &Symbol5_Tick );看来,100MB的内存应该足以完成这项任务,即使是10亿次。但在MT5中,你不能通过CopyTicks来解决这个任务。这里是拐杖。 对每个符号单独调用CopyTicks(每次调用后必须等待缓存释放),通过FileSave将tick历史写入其相应的文件。 然后,从这些文件中读取蜱虫,并为它们调用公式。 是的,这是一个令人毛骨悚然的拐杖,但没有其他选择。所以,你不能直接用CopyTicks工作。有必要使用蜱虫的文件档案。 最大的内存消耗是在p.1中,即使在每次调用后期望释放缓存的条件下也是如此。在这种情况下,p.2.将免费运行! traveller00 2020.11.24 14:33 #774 我同时在8个货币对上进行交易,每个货币对上都有几个专家顾问。虽然在资源方面看起来不错,内存使用率不超过25%,CPU负载不超过10%,但滞后是明显的,比如新图表打开几秒钟,以及在一般交易中。也许有一些最佳做法,至少是抽象的,如何将其全部打包并使其更快地工作?我知道你正在将几个专家顾问系统虚拟成一个。有哪些隐患?发送交易指令 是如何实现的?我应该注意什么? P.S. 我自己通过Virtual使用同步,通过MT4Orders进行交易,每个图表有一个EA。 Anton 2020.11.24 15:04 #775 fxsaber:同样地。以你的VPS为例。市场筛查人员无法对其进行工作。ZS 摆脱几个月来一直发生的打嗝现象会很好。在一台有无限内存的机器上运行这个脚本。例如,我不能从6月1日开始上传蜱虫,只是一次一个字符。它只是挂起了CopyTicks,资源消耗为零。 当终端 "挂起 "时,对它进行转储。让我们看看原因是什么。 fxsaber 2020.11.24 15:16 #776 traveller00:我同时在8个货币对上进行交易,每个货币对上都有几个专家顾问。虽然在资源方面看起来不错,内存使用率不超过25%,CPU负载不超过10%,但滞后是明显的,比如新图表打开几秒钟,以及在一般交易中。也许有一些最佳做法,至少是抽象的,如何将其全部打包并使其更快地工作? 使用新的MT4Orders(该分支创建后历史处理加速),快照当前环境:订单和头寸。我的一切都在飞。 我知道你正在将几个专家顾问系统虚拟成一个。有哪些隐患?发送交易指令 是如何实现的?我应该注意什么? 我正在使用同步OrderSend,但我禁用了MT5检查。 关于交易、自动交易系统和策略测试的论坛 图书馆: MT4Orders fxsaber, 2020.09.29 08:45 有了这句话。 MT4ORDERS::OrderSend_MaxPause = 0; // Отключение проверки корректности работы MT5-OrderSend. 可以用来禁用这一切。在MT5交易历史迟缓 的情况下可能很有用,因为MT4Orders有时会通过参考该历史来检查MT5-OrderSend的正确性(甚至纠正)。 我不建议这样做。 每一组(一组输入参数)都有自己的虚拟。同步器浏览所有的美德,并为每个美德进行同步。它需要在一个循环中做到这一点,而不是从第一个虚拟开始。在任何OrderSend调用后(在同步器内),必然会有一个快照,并且在OrderSend执行时间内的新刻度被添加到(所有的Virtuals)。也就是说,在任何假设的停顿之后,我们都会使一切变得新鲜。每次只通过CopyTicks采取新鲜的蜱虫。没有SymbolInfoTick可供滚动使用。确保如果CopyTicks_LastTick.time_msc < SymbolInfoTick.time_msc(它经常发生,即使调用是一个接一个(以任何顺序),那么同步器没有被启用。否则,你可能会遇到实际时间限制被执行,但虚拟时间限制没有被执行。而且在同步方面也会有问题。我通过VIRTUAL::Snapshot制作快照。除了明显的速度之外,它还允许你将你的符号与其他的符号分开--只有你的符号才能到达那里。这使得速度更快。另外,在快照中不仅是历史被禁用。#define VIRTUAL_SNAPSHOT_WITHOUT_HISTORY // Отказ от снепшота истории для повышения производительности但也有需要访问历史的字段(下面有标记)。#define MACROS(A) this.##A = ::Order##A(); bool ORDERS::Copy( const bool WithoutHistory = false ) { MACROS(CloseTimeMsc) if (WithoutHistory && !this.CloseTimeMsc) // Для исторических ордеров оставляем все без изменений. { const string Str = NULL; this.comment = Str; this.Commission = 0; this.OpenPriceRequest = this.OpenPrice; } else // В MT4Orders требуется обращение к истории. { const string Str = ::OrderComment(); this.comment = Str; MACROS(Commission) MACROS(OpenPriceRequest) }之前我还检查了LastDeal.time_msc是否比LastTick.time_msc大。如果这个条件没有得到满足,我就拒绝同步,原因很明显。但这样的检查会消耗大量的资源(它与历史记录一起工作),所以我拒绝了。交易的功能 - OnTick。我大概列举了主要的几项。 traveller00 2020.11.24 16:21 #777 同步,我认为不仅是OrderSend,还有所有的交易订单,包括修改、删除等? SymbolInfoTick没有被抛出,因为ticks的顺序可能会被打乱?而CopyTicks的顺序是完全正确的。 事实证明,SymbolInfoTick只需要用来检查时间,而这就是全部?所有的交易等都只由CopyTicks 纠正? 试图在1对1的图表中打包几个EA有什么意义吗?没有什么不可能,但想了解是否值得麻烦和重写,或者利润会很低? Andrey Khatimlianskii 2020.11.24 16:45 #778 traveller00:试图将几个EA装入1对1的图表中是否有意义?没有什么不可能,但想知道是否值得麻烦和重写,或者利润会不会很小? 利润从哪里来?每个人都会在交易 时等待他们中的任何一个。 而且只是少了一些平行的东西。 除非你能为所有人保留一个订单缓存,但好处是值得怀疑的...... Andrey Khatimlianskii 2020.11.24 16:46 #779 Anton:当终端 "挂断 "时,对它进行转储。看看是什么原因造成的。 重现该问题的代码对你来说还不够吗?还是不再生了? fxsaber 2020.11.24 17:29 #780 traveller00:同步,我认为不仅是OrderSend,还有所有的交易订单,包括修改、删除等? 我是指MT5-OrderSend。 不传递SymbolInfoTick,因为ticks的顺序可能会被破坏?而CopyTicks完全按照正确的顺序进行。 因为会有漏洞。 所以,SymbolInfoTick只需要用来检查时间,就这样? 是的。 所有的交易等将只由CopyTicks进行? 只有。 试图将几个EA装入1对1的图表中是否有意义?没有什么不可能的事,但想知道是否值得麻烦和重写,或者利润将是最小的? 这对我来说是一个巨大的帮助。 每个单次通过(在单次测试模式下)最后都将其实例写到同一个文件中。因此,在优化后查看一些通道后,我得到一个包含这些通道数据的文件。然后我在这个文件中过滤它们,只留下看起来不错的东西。在启动机器人时,我只需使用FileSelectDialog来选择这个文件。因此,它交易的是投资组合。 事实证明,优化需要20分钟。通行证预览 - 3分钟。他们的过滤器 - 3分钟。启动机器人投入运行 - 秒。该机器人不需要被编译。追踪版本和图表 - 类似地。 在启动时,我可以看到每组的报告。在任何时候,我都可以从现实中看到虚拟和它的名字的状态,以及虚拟和现实中的热键详细的HTML-Report。既有单套的,也有整个组合的。 由于 "美德 "的交易统计是专门快速编写的,因此可以快速地相互比较各套交易(从键盘上)。 附加的文件: clip0184.gif 64 kb 1...717273747576777879808182838485...94 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
正确理解终端内存与mcl、tix等终端程序内存的堆叠。
不,仅仅是CopyTicks存储了10秒的所需刻度的缓存。例如,要求3Gb的内存,终端将把这3Gb多存储在缓存中。总终端将消耗6GB。如果你做ArrayFree 并为另一个符号请求3Gb,终端将消耗9Gb。以此类推。
正确理解终端的内存是加在终端程序mcl、tix等的内存中的。
看来,100MB的内存应该足以完成这项任务,即使是10亿次。但在MT5中,你不能通过CopyTicks来解决这个任务。
这里是拐杖。
是的,这是一个令人毛骨悚然的拐杖,但没有其他选择。所以,你不能直接用CopyTicks工作。有必要使用蜱虫的文件档案。
最大的内存消耗是在p.1中,即使在每次调用后期望释放缓存的条件下也是如此。在这种情况下,p.2.将免费运行!
我同时在8个货币对上进行交易,每个货币对上都有几个专家顾问。虽然在资源方面看起来不错,内存使用率不超过25%,CPU负载不超过10%,但滞后是明显的,比如新图表打开几秒钟,以及在一般交易中。也许有一些最佳做法,至少是抽象的,如何将其全部打包并使其更快地工作?我知道你正在将几个专家顾问系统虚拟成一个。有哪些隐患?发送交易指令 是如何实现的?我应该注意什么?
P.S. 我自己通过Virtual使用同步,通过MT4Orders进行交易,每个图表有一个EA。
同样地。以你的VPS为例。市场筛查人员无法对其进行工作。
ZS 摆脱几个月来一直发生的打嗝现象会很好。在一台有无限内存的机器上运行这个脚本。例如,我不能从6月1日开始上传蜱虫,只是一次一个字符。它只是挂起了CopyTicks,资源消耗为零。
当终端 "挂起 "时,对它进行转储。让我们看看原因是什么。
我同时在8个货币对上进行交易,每个货币对上都有几个专家顾问。虽然在资源方面看起来不错,内存使用率不超过25%,CPU负载不超过10%,但滞后是明显的,比如新图表打开几秒钟,以及在一般交易中。也许有一些最佳做法,至少是抽象的,如何将其全部打包并使其更快地工作?
我知道你正在将几个专家顾问系统虚拟成一个。有哪些隐患?发送交易指令 是如何实现的?我应该注意什么?
我正在使用同步OrderSend,但我禁用了MT5检查。
关于交易、自动交易系统和策略测试的论坛
图书馆: MT4Orders
fxsaber, 2020.09.29 08:45
有了这句话。
可以用来禁用这一切。在MT5交易历史迟缓 的情况下可能很有用,因为MT4Orders有时会通过参考该历史来检查MT5-OrderSend的正确性(甚至纠正)。
我不建议这样做。
每一组(一组输入参数)都有自己的虚拟。同步器浏览所有的美德,并为每个美德进行同步。它需要在一个循环中做到这一点,而不是从第一个虚拟开始。
在任何OrderSend调用后(在同步器内),必然会有一个快照,并且在OrderSend执行时间内的新刻度被添加到(所有的Virtuals)。也就是说,在任何假设的停顿之后,我们都会使一切变得新鲜。
每次只通过CopyTicks采取新鲜的蜱虫。没有SymbolInfoTick可供滚动使用。确保如果CopyTicks_LastTick.time_msc < SymbolInfoTick.time_msc(它经常发生,即使调用是一个接一个(以任何顺序),那么同步器没有被启用。否则,你可能会遇到实际时间限制被执行,但虚拟时间限制没有被执行。而且在同步方面也会有问题。
我通过VIRTUAL::Snapshot制作快照。除了明显的速度之外,它还允许你将你的符号与其他的符号分开--只有你的符号才能到达那里。这使得速度更快。另外,在快照中不仅是历史被禁用。
但也有需要访问历史的字段(下面有标记)。
之前我还检查了LastDeal.time_msc是否比LastTick.time_msc大。如果这个条件没有得到满足,我就拒绝同步,原因很明显。但这样的检查会消耗大量的资源(它与历史记录一起工作),所以我拒绝了。
交易的功能 - OnTick。
我大概列举了主要的几项。
同步,我认为不仅是OrderSend,还有所有的交易订单,包括修改、删除等?
SymbolInfoTick没有被抛出,因为ticks的顺序可能会被打乱?而CopyTicks的顺序是完全正确的。
事实证明,SymbolInfoTick只需要用来检查时间,而这就是全部?所有的交易等都只由CopyTicks 纠正?
试图在1对1的图表中打包几个EA有什么意义吗?没有什么不可能,但想了解是否值得麻烦和重写,或者利润会很低?
试图将几个EA装入1对1的图表中是否有意义?没有什么不可能,但想知道是否值得麻烦和重写,或者利润会不会很小?
利润从哪里来?每个人都会在交易 时等待他们中的任何一个。
而且只是少了一些平行的东西。
除非你能为所有人保留一个订单缓存,但好处是值得怀疑的......
当终端 "挂断 "时,对它进行转储。看看是什么原因造成的。
重现该问题的代码对你来说还不够吗?还是不再生了?
同步,我认为不仅是OrderSend,还有所有的交易订单,包括修改、删除等?
我是指MT5-OrderSend。
不传递SymbolInfoTick,因为ticks的顺序可能会被破坏?而CopyTicks完全按照正确的顺序进行。
因为会有漏洞。
所以,SymbolInfoTick只需要用来检查时间,就这样?
是的。
所有的交易等将只由CopyTicks进行?
只有。
试图将几个EA装入1对1的图表中是否有意义?没有什么不可能的事,但想知道是否值得麻烦和重写,或者利润将是最小的?
这对我来说是一个巨大的帮助。
每个单次通过(在单次测试模式下)最后都将其实例写到同一个文件中。因此,在优化后查看一些通道后,我得到一个包含这些通道数据的文件。然后我在这个文件中过滤它们,只留下看起来不错的东西。在启动机器人时,我只需使用FileSelectDialog来选择这个文件。因此,它交易的是投资组合。
事实证明,优化需要20分钟。通行证预览 - 3分钟。他们的过滤器 - 3分钟。启动机器人投入运行 - 秒。该机器人不需要被编译。追踪版本和图表 - 类似地。
在启动时,我可以看到每组的报告。在任何时候,我都可以从现实中看到虚拟和它的名字的状态,以及虚拟和现实中的热键详细的HTML-Report。既有单套的,也有整个组合的。
由于 "美德 "的交易统计是专门快速编写的,因此可以快速地相互比较各套交易(从键盘上)。