MT5和速度在行动 - 页 16 1...91011121314151617181920212223...94 新评论 fxsaber 2020.08.27 10:15 #151 fxsaber:将同样的脚本与其他交易平台进行比较是很有意思的。 MT4 b1280。 // Мониторинг длительных пиков выполнения важных функций для торговли. #include <fxsaber\Benchmark.mqh> // https://c.mql5.com/3/321/Benchmark.mqh input int inCycle = 10; // Циклов проверки в одном OnTick input int inAlertTime = 1; // Нижний порог в миллисекундах #define _B2(A) _B(A, AlertTime) void Check( const string Symb, const int AlertTime = 1 ) { MqlTick Tick; if (_B2(SymbolInfoTick(Symb, Tick))) { _B2(OrdersHistoryTotal()); _B2(OrdersTotal()); _B2(OrderSelect(0, SELECT_BY_POS)); _B2(OrderSelect(0, SELECT_BY_POS, MODE_HISTORY)); _B2(OrderSelect(0, SELECT_BY_TICKET)); _B2(GetLastError()); _B2(IsStopped()); _B2(SymbolInfoDouble(Symb, SYMBOL_ASK)); _B2(SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_VALUE)); _B2(SymbolInfoDouble(Symb, SYMBOL_POINT)); _B2(SymbolInfoInteger(Symb, SYMBOL_DIGITS)); _B2(TimeCurrent()); _B2(TimeLocal()); _B2(OrderGetDouble(ORDER_PRICE_CURRENT)); _B2(OrderGetInteger(ORDER_MAGIC)); _B2(OrderGetString(ORDER_SYMBOL)); _B2(AccountInfoDouble(ACCOUNT_EQUITY)); _B2(MQLInfoInteger(MQL_TRADE_ALLOWED)); _B2(AccountInfoInteger(ACCOUNT_TRADE_EXPERT)); _B2(AccountInfoInteger(ACCOUNT_TRADE_ALLOWED)); _B2(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)); _B2(SymbolsTotal(true)); _B2(SymbolName(0, true)); _B2(Symbol()); _B2(GlobalVariableCheck(NULL)); _B2(GlobalVariableGet(NULL)); _B2(ResourceFree(NULL)); } } void OnTick() { for (int i = 0; i < inCycle; i++) Check(_Symbol, inAlertTime); } 2020.08.27 13:09:46.799 Test6 EURUSD,M1: Alert: Time[Test6.mq4 39: AccountInfoInteger(ACCOUNT_TRADE_EXPERT)] = 7 ms. 2020.08.27 13:09:46.790 Test6 EURUSD,M1: Alert: Time[Test6.mq4 18: OrderSelect(0,SELECT_BY_POS,MODE_HISTORY)] = 2 ms. 2020.08.27 13:09:46.784 Test6 EURUSD,H1: Alert: Time[Test6.mq4 25: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 1 ms. 只有三张滑板,然后他们很少冒出来。由于没有HistorySelect 和CopyTicks,可能很难创建一个制动器。 Dmi3 2020.08.27 10:19 #152 Fast235:所以它们都是Haswell,Xeon的工作频率要低得多,在性能和单一测试中会有性能下降,只有在多线程优化中才会有优势。最新型号的i3的运行速度应该快得多问一下开发人员关于缓存水平对速度的影响,以及一般来说Zen2和最新的英特尔的速度。增加我有Ryzen 3700x,你可以用英特尔做测试例如,用这个MQL5/Scripts\UnitTests\Stat\TestStatBenchmark.mq5脚本用定时器循环数次 我们在这里谈论的不是测试,而是订单 执行中的延迟。这个延迟是存在的,而且是浮动的。这让TS和我都感到很不爽。 fxsaber 2020.08.27 10:19 #153 fxsaber:只有三样东西跳出来,然后它们很少跳出来。由于没有HistorySelect和CopyTicks,一定很难创建一个制动器。 在MT4上也等着呢。 2020.08.27 13:18:00.306 Test6 GBPCAD.rann,M1: Alert: Time[Test6.mq4 26: SymbolInfoDouble(Symb,SYMBOL_POINT)] = 1 ms. 2020.08.27 13:17:39.820 Test6 GBPCAD.rann,M1: Alert: Time[Test6.mq4 30: TimeLocal()] = 2 ms. 2020.08.27 13:17:32.598 Test6 GBPCAD.rann,M1: Alert: Time[Test6.mq4 30: TimeLocal()] = 36 ms. 2020.08.27 13:17:29.676 Test6 GBPCAD.rann,H1: Alert: Time[Test6.mq4 15: OrdersHistoryTotal()] = 1 ms. 2020.08.27 13:17:26.468 Test6 GBPCAD.rann,H1: Alert: Time[Test6.mq4 27: SymbolInfoInteger(Symb,SYMBOL_DIGITS)] = 5 ms. 2020.08.27 13:17:26.460 Test6 GBPCAD.rann,M1: Alert: Time[Test6.mq4 13: SymbolInfoTick(Symb,Tick)] = 1 ms. 2020.08.27 13:17:14.528 Test6 GBPCAD.rann,M1: Alert: Time[Test6.mq4 13: SymbolInfoTick(Symb,Tick)] = 3 ms. 2020.08.27 13:16:52.309 Test6 GBPCAD.rann,H1: Alert: Time[Test6.mq4 15: OrdersHistoryTotal()] = 2 ms. 2020.08.27 13:16:52.308 Test6 GBPCAD.rann,M1: Alert: Time[Test6.mq4 15: OrdersHistoryTotal()] = 2 ms. 2020.08.27 13:16:52.307 Test6 GBPCAD.rann,H1: Alert: Time[Test6.mq4 36: AccountInfoDouble(ACCOUNT_EQUITY)] = 1 ms. 2020.08.27 13:16:42.448 Test6 GBPCAD.rann,M1: Alert: Time[Test6.mq4 17: OrderSelect(0,SELECT_BY_POS)] = 2 ms. 2020.08.27 13:16:32.480 Test6 GBPCAD.rann,H1: Alert: Time[Test6.mq4 36: AccountInfoDouble(ACCOUNT_EQUITY)] = 3 ms. 2020.08.27 13:16:32.479 Test6 GBPCAD.rann,H1: Alert: Time[Test6.mq4 15: OrdersHistoryTotal()] = 3 ms. 2020.08.27 13:16:32.477 Test6 GBPCAD.rann,M1: Alert: Time[Test6.mq4 15: OrdersHistoryTotal()] = 1 ms. 2020.08.27 13:16:29.096 Test6 GBPCAD.rann,H1: Alert: Time[Test6.mq4 26: SymbolInfoDouble(Symb,SYMBOL_POINT)] = 1 ms. 2020.08.27 13:16:14.593 Test6 GBPCAD.rann,H1: Alert: Time[Test6.mq4 15: OrdersHistoryTotal()] = 23 ms. 2020.08.27 13:14:55.398 Test6 GBPCAD.rann,H1: Alert: Time[Test6.mq4 27: SymbolInfoInteger(Symb,SYMBOL_DIGITS)] = 1 ms. 2020.08.27 13:13:34.891 Test6 GBPCAD.rann,M1: Alert: Time[Test6.mq4 25: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 2 ms. 以36毫秒为单位的TimeLocal。选择一个具有较大刻度量 的符号。 fxsaber 2020.08.27 10:31 #154 对任何感兴趣的人来说,这里是 播放的说明。 谁认为它不会被触动。 2020.08.27 13:17:56.139 Test6 (EURUSD,H1) Alert: Time[Test6.mq5 48: OrdersTotal()] = 2 ms. 2020.08.27 13:17:56.167 Test6 (EURUSD,M1) Alert: Time[Test6.mq5 48: OrdersTotal()] = 39 ms. 2020.08.27 13:17:56.198 Test6 (EURUSD,H1) Alert: Time[Test6.mq5 48: OrdersTotal()] = 54 ms. 2020.08.27 13:18:11.512 Test6 (EURUSD,M1) Alert: Time[Test6.mq5 48: OrdersTotal()] = 3 ms. fxsaber 2020.08.27 10:33 #155 fxsaber:挑选了一个具有较大tick量 的符号。 甚至不打算去检查它。想象一下,最受欢迎的FORTS符号有一个勾选的订阅。而不是在OnBookEvent中的OnTick逻辑。滞后的情况一定很糟糕。 需要官方建议,如何做才能尽量减少滞后性。 Anton 2020.08.27 12:20 #156 fxsaber:为了重现刹车,你需要在一个字符的多个字符上运行脚本--让OnTick在同一时间被调用。然后,警报将在每一个嘀嗒声中被提示。CPU负载图显示,terminal64.exe对8个逻辑核心的负载高达30%。这只是四个运行脚本的欧元兑美元图表。你可以清楚地看到每个图表每次加载的数量。这么多的资源去了哪里? 这个问题很容易回答。 在这里,你复制了大量的数据。 HistorySelect(MathRand(), INT_MAX); 你实际上是在给一个命令,把所有可用的交易历史从终端数据库中提取到EA环境中,供以后使用。你是故意要把一个可能的相同请求的缓存算法跑掉。 但你并没有使用所有这些数据,而是立即在下一行将其重置。 _B2(HistorySelect(Tick.time, INT_MAX)); 很明显,这里的终端基地是一个具有同步访问的共享资源。而且你还特意在其中创造了成千上万的订单和交易。 所有这些毫无意义的动作在每次勾选时 都会从几个线程中重复10次。而你是故意让这些行动从几个线程同时发生。 所以你很清楚你在做什么,为什么,资源花在哪里,同时你声称 "延迟是由MT5的CPU负载过大造成的"。 说了这么多,你的电脑显然有问题。也就是说,是的,你在主动移动大量的内存,但它不应该影响函数的执行时间,特别是与HistorySelect()没有任何关系的函数。 在我们的测试中,b2582,即使每格1000次,在一个字符图上有5个EA,即比你的默认条件大几个数量级,也没有观察到任何一个警报。 我们的测试系统:Windows 10 build 18363, Intel Xeon E5-2630 v4 @ 2.20GHz Dmi3 2020.08.27 12:49 #157 Anton:这个问题很容易回答。这是你复制大量数据的地方。你实际上是在给一个命令,将所有可用的交易历史从终端数据库中提取到EA环境中,供以后使用。故意随机地试图打乱相同请求的可能的缓存算法。但你并没有使用所有这些数据,而是立即在下一行将其重置。很明显,这里的终端基地是一个具有同步访问的共享资源。而且你还特意在其中创造了成千上万的订单和交易。所有这些毫无意义的动作在每次勾选时 都会从几个线程中重复10次。而你是故意让这些行动从几个线程同时发生。所以你很清楚你在做什么,为什么,资源花在哪里,同时你声称 "延迟是由MT5的CPU负载过大造成的"。说了这么多,你的电脑显然有问题。也就是说,是的,你在主动移动大量的内存,但它不应该影响函数的执行时间,特别是与HistorySelect()没有任何关系的函数。在我们的测试中,b2582,即使每格1000次,在一个字符图上有5个EA,即比你的默认条件大 几个数量级,也没有观察到任何一个警报。我们的测试系统:Windows 10 build 18363, Intel Xeon E5-2630 v4 @ 2.20GHz 同事们。 现在是时候让你走出飞机模型的圈子了。 这里是战斗条件。4个终端,约300个专家顾问,约30个工具。其中有三分之一的人订阅了滚轮。所有这些都是在FORTS。在这种条件下进行模拟。 Anton 2020.08.27 14:22 #158 Dmi3:同事们。现在是时候让你走出飞机模型的圈子了。这里是战斗条件。4个终端,约300个EA,约30个工具。三分之一的选举人认购了滚轮。所有这些都是在FORTS。在这种条件下进行模拟。 "给你 "被接受为一个压缩文件,加上对问题的详细描述。否则就是一场空谈。 这里讨论的是所提交的EA代码和其执行的有效性。根据所发现的问题,已经进行了优化终端代码 的工作。 Dmi3 2020.08.27 16:43 #159 Anton:"给你 "被接受为一个压缩文件,加上对问题的详细描述。否则就是一场空谈。在这种情况下,讨论的是EA提交的代码和其执行的效率。终端代码已经 针对发现的问题进行了优化。 我没有任何问题,没有什么可送的。 fxsaber有问题。 他已经在这里写了16页。 而米哈伊尔自2014年以来也有同样的 问题,他已经写了149页:https://www.mql5.com/ru/forum/38456/page149。 他们都有足够的资格给你提供你需要的所有信息。 ФОРТС. Вопросы по исполнению 2020.08.20www.mql5.com С большими проблемами удалось это сделать (начальник отдела по работе с профессиональными клиентами ДЦ Открытие Евгений Сергеевич,. fxsaber 2020.08.27 19:59 #160 Anton:这个问题很容易回答。这是你复制大量数据的地方。你实际上是在给一个命令,将所有可用的交易历史从终端数据库中提取到EA环境中,供以后使用。故意随机化,试图打乱相同请求的可能的缓存算法。 你没有遵循这个主题的发展年表,所以你允许自己在发言中进行指责。 我删除了MathRand一行。这里有一个简短的记录。 2020.08.27 22:38:57.920 Alert: Time[Test6.mq5 40: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 3 ms. 2020.08.27 22:38:57.923 Alert: Time[Test6.mq5 19: CopyTicksRange(Symb,Ticks,COPY_TICKS_ALL,Tick.time_msc)] = 1 ms. 2020.08.27 22:38:57.926 Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 3 ms. 2020.08.27 22:38:57.928 Alert: Time[Test6.mq5 61: AccountInfoDouble(ACCOUNT_EQUITY)] = 1 ms. 2020.08.27 22:38:57.940 Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 11 ms. 2020.08.27 22:39:02.227 Alert: Time[Test6.mq5 17: CopyTicks(Symb,Ticks,COPY_TICKS_ALL,0,1)] = 1 ms. 2020.08.27 22:39:02.229 Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 2 ms. 2020.08.27 22:39:02.238 Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 7 ms. 2020.08.27 22:39:02.241 Alert: Time[Test6.mq5 28: HistoryDealSelect(0)] = 1 ms. 2020.08.27 22:40:34.575 Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 2 ms. 2020.08.27 22:40:44.407 Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms. 2020.08.27 22:40:44.409 Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 9 ms. 2020.08.27 22:40:46.819 Alert: Time[Test6.mq5 40: SymbolInfoDouble(Symb,SYMBOL_TRADE_TICK_VALUE)] = 1 ms. 2020.08.27 22:40:52.760 Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 3 ms. 2020.08.27 22:40:52.764 Alert: Time[Test6.mq5 28: HistoryDealSelect(0)] = 3 ms. 2020.08.27 22:40:54.907 Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 3 ms. 2020.08.27 22:41:11.415 Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 5 ms. 2020.08.27 22:41:13.517 Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms. 2020.08.27 22:41:14.689 Alert: Time[Test6.mq5 18: CopyTicks(Symb,Ticks,COPY_TICKS_ALL,Tick.time_msc)] = 1 ms. 2020.08.27 22:41:45.343 Alert: Time[Test6.mq5 19: CopyTicksRange(Symb,Ticks,COPY_TICKS_ALL,Tick.time_msc)] = 1 ms. 2020.08.27 22:42:12.156 Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 3 ms. 2020.08.27 22:42:19.654 Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 2 ms. 2020.08.27 22:42:32.581 Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 2 ms. 2020.08.27 22:42:48.662 Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms. 2020.08.27 22:42:49.754 Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 2 ms. 2020.08.27 22:42:49.756 Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 2 ms. 2020.08.27 22:42:50.803 Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms. 2020.08.27 22:42:50.804 Alert: Time[Test6.mq5 32: HistoryOrderGetInteger(0,ORDER_MAGIC)] = 1 ms. 2020.08.27 22:42:50.805 Alert: Time[Test6.mq5 44: TimeCurrent()] = 1 ms. 2020.08.27 22:43:42.143 Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 6 ms. 2020.08.27 22:43:42.148 Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 4 ms. 2020.08.27 22:43:54.985 Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 2 ms. 2020.08.27 22:44:01.402 Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 1 ms. 2020.08.27 22:44:01.405 Alert: Time[Test6.mq5 22: HistorySelect(Tick.time,INT_MAX)] = 2 ms. 但你并没有使用所有这些数据,而是立即将其倾倒在下一行。 显然,这里的终端基地是一个具有同步访问的共享资源。而且你还特意在其中创造了成千上万的订单和交易。 我在真实账户上进行测试,其中超过10K的订单是正常的。这些不是假订单,因为其中>70%的订单被执行。 顺便说一下,在截图上,9331+576!=12529。 所有这些无意义的动作在每次打勾 时都会同时从几个线程中重复10次。而你是故意让这些来自多个线程的行动同时发生。 我在不同的角色上都有问题。建议用一个符号来更快地再现问题。 每一次打勾都要重复10次,这是一个至关重要的必要条件。因为一个EA包含一打不同专业的TC是正常的。 所以你很清楚你在做什么,为什么,以及资源的去向,但你却声称 "延迟是由于MT5的CPU负载过大"。 说了这么多,你的电脑显然有问题。我的意思是,是的,你在主动移动大量的内存,但它不应该影响函数的执行时间,尤其是与HistorySelect()没有任何关系的函数。 我不能指责你的无能,但你写的东西,说句不好听的,让人摸不着头脑。HistorySelect是寻找四个索引(订单表的开始/结束和交易表的开始/结束)。这些表是按时间排序的,所以最差也有(应该有)一个二进制搜索。对于10K订单,它是瞬时的(计算二进制对数)。什么是记忆量的运动?这里没有人在谈论可怕的HistorySelectByPosition。初级的HistorySelect受到影响。 在我们的测试中,b2582,即使每格1000次,在一个字符图上有5个EA,即比你的默认条件大几个数量级,也没有观察到一个警报。 我们的测试系统:Windows 10 build 18363, Intel Xeon E5-2630 v4 @ 2.20GHz 请在此提供进行测试的交易账户的登录信息。 1...91011121314151617181920212223...94 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
将同样的脚本与其他交易平台进行比较是很有意思的。
MT4 b1280。
只有三张滑板,然后他们很少冒出来。由于没有HistorySelect 和CopyTicks,可能很难创建一个制动器。
所以它们都是Haswell,Xeon的工作频率要低得多,在性能和单一测试中会有性能下降,只有在多线程优化中才会有优势。最新型号的i3的运行速度应该快得多
问一下开发人员关于缓存水平对速度的影响,以及一般来说Zen2和最新的英特尔的速度。
增加
我有Ryzen 3700x,你可以用英特尔做测试
例如,用这个MQL5/Scripts\UnitTests\Stat\TestStatBenchmark.mq5脚本
用定时器循环数次
我们在这里谈论的不是测试,而是订单 执行中的延迟。这个延迟是存在的,而且是浮动的。这让TS和我都感到很不爽。
只有三样东西跳出来,然后它们很少跳出来。由于没有HistorySelect和CopyTicks,一定很难创建一个制动器。
在MT4上也等着呢。
以36毫秒为单位的TimeLocal。选择一个具有较大刻度量 的符号。
对任何感兴趣的人来说,这里是 播放的说明。
谁认为它不会被触动。
挑选了一个具有较大tick量 的符号。
甚至不打算去检查它。想象一下,最受欢迎的FORTS符号有一个勾选的订阅。而不是在OnBookEvent中的OnTick逻辑。滞后的情况一定很糟糕。
需要官方建议,如何做才能尽量减少滞后性。
为了重现刹车,你需要在一个字符的多个字符上运行脚本--让OnTick在同一时间被调用。然后,警报将在每一个嘀嗒声中被提示。
CPU负载图显示,terminal64.exe对8个逻辑核心的负载高达30%。这只是四个运行脚本的欧元兑美元图表。你可以清楚地看到每个图表每次加载的数量。
这么多的资源去了哪里?
这个问题很容易回答。
在这里,你复制了大量的数据。
你实际上是在给一个命令,把所有可用的交易历史从终端数据库中提取到EA环境中,供以后使用。你是故意要把一个可能的相同请求的缓存算法跑掉。
但你并没有使用所有这些数据,而是立即在下一行将其重置。
很明显,这里的终端基地是一个具有同步访问的共享资源。而且你还特意在其中创造了成千上万的订单和交易。
所有这些毫无意义的动作在每次勾选时 都会从几个线程中重复10次。而你是故意让这些行动从几个线程同时发生。
所以你很清楚你在做什么,为什么,资源花在哪里,同时你声称 "延迟是由MT5的CPU负载过大造成的"。
说了这么多,你的电脑显然有问题。也就是说,是的,你在主动移动大量的内存,但它不应该影响函数的执行时间,特别是与HistorySelect()没有任何关系的函数。
在我们的测试中,b2582,即使每格1000次,在一个字符图上有5个EA,即比你的默认条件大几个数量级,也没有观察到任何一个警报。
我们的测试系统:Windows 10 build 18363, Intel Xeon E5-2630 v4 @ 2.20GHz
这个问题很容易回答。
这是你复制大量数据的地方。
你实际上是在给一个命令,将所有可用的交易历史从终端数据库中提取到EA环境中,供以后使用。故意随机地试图打乱相同请求的可能的缓存算法。
但你并没有使用所有这些数据,而是立即在下一行将其重置。
很明显,这里的终端基地是一个具有同步访问的共享资源。而且你还特意在其中创造了成千上万的订单和交易。
所有这些毫无意义的动作在每次勾选时 都会从几个线程中重复10次。而你是故意让这些行动从几个线程同时发生。
所以你很清楚你在做什么,为什么,资源花在哪里,同时你声称 "延迟是由MT5的CPU负载过大造成的"。
说了这么多,你的电脑显然有问题。也就是说,是的,你在主动移动大量的内存,但它不应该影响函数的执行时间,特别是与HistorySelect()没有任何关系的函数。
在我们的测试中,b2582,即使每格1000次,在一个字符图上有5个EA,即比你的默认条件大 几个数量级,也没有观察到任何一个警报。
我们的测试系统:Windows 10 build 18363, Intel Xeon E5-2630 v4 @ 2.20GHz
同事们。
现在是时候让你走出飞机模型的圈子了。
这里是战斗条件。4个终端,约300个专家顾问,约30个工具。其中有三分之一的人订阅了滚轮。所有这些都是在FORTS。在这种条件下进行模拟。
同事们。
现在是时候让你走出飞机模型的圈子了。
这里是战斗条件。4个终端,约300个EA,约30个工具。三分之一的选举人认购了滚轮。所有这些都是在FORTS。在这种条件下进行模拟。
"给你 "被接受为一个压缩文件,加上对问题的详细描述。否则就是一场空谈。
这里讨论的是所提交的EA代码和其执行的有效性。根据所发现的问题,已经进行了优化终端代码 的工作。
"给你 "被接受为一个压缩文件,加上对问题的详细描述。否则就是一场空谈。
在这种情况下,讨论的是EA提交的代码和其执行的效率。终端代码已经 针对发现的问题进行了优化。
我没有任何问题,没有什么可送的。
fxsaber有问题。 他已经在这里写了16页。
而米哈伊尔自2014年以来也有同样的 问题,他已经写了149页:https://www.mql5.com/ru/forum/38456/page149。
他们都有足够的资格给你提供你需要的所有信息。
这个问题很容易回答。
这是你复制大量数据的地方。
你实际上是在给一个命令,将所有可用的交易历史从终端数据库中提取到EA环境中,供以后使用。故意随机化,试图打乱相同请求的可能的缓存算法。
你没有遵循这个主题的发展年表,所以你允许自己在发言中进行指责。
我删除了MathRand一行。这里有一个简短的记录。
但你并没有使用所有这些数据,而是立即将其倾倒在下一行。
显然,这里的终端基地是一个具有同步访问的共享资源。而且你还特意在其中创造了成千上万的订单和交易。
我在真实账户上进行测试,其中超过10K的订单是正常的。这些不是假订单,因为其中>70%的订单被执行。
顺便说一下,在截图上,9331+576!=12529。
所有这些无意义的动作在每次打勾 时都会同时从几个线程中重复10次。而你是故意让这些来自多个线程的行动同时发生。
我在不同的角色上都有问题。建议用一个符号来更快地再现问题。
每一次打勾都要重复10次,这是一个至关重要的必要条件。因为一个EA包含一打不同专业的TC是正常的。
所以你很清楚你在做什么,为什么,以及资源的去向,但你却声称 "延迟是由于MT5的CPU负载过大"。
说了这么多,你的电脑显然有问题。我的意思是,是的,你在主动移动大量的内存,但它不应该影响函数的执行时间,尤其是与HistorySelect()没有任何关系的函数。
我不能指责你的无能,但你写的东西,说句不好听的,让人摸不着头脑。HistorySelect是寻找四个索引(订单表的开始/结束和交易表的开始/结束)。这些表是按时间排序的,所以最差也有(应该有)一个二进制搜索。对于10K订单,它是瞬时的(计算二进制对数)。什么是记忆量的运动?这里没有人在谈论可怕的HistorySelectByPosition。初级的HistorySelect受到影响。
在我们的测试中,b2582,即使每格1000次,在一个字符图上有5个EA,即比你的默认条件大几个数量级,也没有观察到一个警报。
我们的测试系统:Windows 10 build 18363, Intel Xeon E5-2630 v4 @ 2.20GHz
请在此提供进行测试的交易账户的登录信息。