关于MT5代码分析器 - 页 5 1234567 新评论 Renat Fatkhullin 2021.09.10 10:03 #41 唯一令人困惑的是第二张纸。其余的都已经到位了。让我们拭目以待 fxsaber 2021.09.10 10:46 #42 Renat Fatkhullin #: 唯一的尴尬是第二次滑倒。其余的都很好。 显然,剖析器不适合用于加速运行速度超过几毫秒的代码块的目的。 fxsaber 2021.09.10 10:59 #43 #include <fxsaber\Usage\Usage.mqh> // https://www.mql5.com/ru/code/33875 const bool Init = EventSetMillisecondTimer(1); void Sleep2( uint Interval ) { const ulong StartTime = GetMicrosecondCount(); Interval *= 1000; while (GetMicrosecondCount() - StartTime < Interval) ; } #define Sleep Sleep2 void f() { Sleep(10); } void OnTimer() { _USAGE f(); Sleep(20); } EA在滑行中的时间为30ms,剖析器显示,在一个有三个加法和两个乘法的函数中,它所占的比例高达13%! 而这就是b2593所显示的情况。 那里没有任何东西!因为,确实,那里是零。此外,在第二次报告中,一切都非常清楚。 让我们把它整理出来,以便我们能够改进,而不是发誓。 fxsaber 2021.09.10 11:06 #44 fxsaber #: 剖析器显示,在一个有三个加法和两个乘法 的函数中,有多达13%的内容是这样的! 这就是为什么我想知道为什么EA的整个OnTick通道平均需要3毫秒(它充满了计算和交易环境的工作),而据称60%的剖析是在 "三个加法和两个乘法"。想出了这些简洁的例子。 我想在MT5中使用一个旧的剖析器,但我必须用构建来做这样的舞蹈。我还没有设法运行它。 Ilyas 2021.09.10 13:12 #45 fxsaber #:请用一个简单的例子帮助我解释剖析器的数据。这看起来像很多的废话。 Sleep(2)完全没有。 由于某些原因,USAGE比Sleep(1)多吃了几倍。 真的想掌握它,但还没有运气。 还尝试了睡眠替换。仍然不清楚剖析器的值。 通话报告里有什么? 我有一个印象,这个代码与截图报告不一致。 你确定你没有在剖析器工作时修复代码吗? fxsaber 2021.09.10 13:37 #46 Ilyas #:通话报告里有什么?给人的印象是,给出的代码与截图中的报告不一致。 你确定你没有在剖析器运行时修改代码? 不,我没有。 2021.09.10 11:46:48.616 MQL5 profiler 8064 total measurements, 0/0 errors, 2014 kb of stack memory analyzed (11256/1073741824) 2021.09.10 11:46:48.616 MQL5 profiler 49442 total function frames found (9141 mql5 code, 6461 built-in, 11590 other, 22250 system) fxsaber 2021.10.11 01:44 #47 我需要帮助来解读分析器的结果。 #include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006 void OnStart() { double Res = 0; const int Total = OrdersHistoryTotal(); for (int i = 0; i < Total; i++) if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) Res += OrderProfit(); } MQL剖析器报告 - \MQL5\Experts\Test19.mq5 职能 线路 总CPU 百分比 自己的CPU 百分比 MT4ORDERS::GetHistoryPositionData 1093 7 50.00% 2 14.29% MT4ORDERS::Order.CloseTimeMsc = ::HistoryDealGetInteger(Ticket, DEAL_TIME_MSC)。 1109 1 12.50% 1 50.00% } 1360 1 12.50% 1 50.00% return(Ticket && ((:HistoryOrderGetInteger(Ticket, ORDER_TICKET) == Ticket) || 824 2 25.00% 0 0.00% WHILE(_B2(MT4ORDERS::HistorySelectOrder(OrderTicket))) // https://www.mql5.com/ru/forum/304239#comment_10710403 1151 1 12.50% 0 0.00% StartTime = ::GetMicrosecondCount(); 1370 1 12.50% 0 0.00% double OrderPriceOpen = ::HistoryOrderGetDouble(OrderTicket, ORDER_PRICE_OPEN) 1182 1 12.50% 0 0.00% MT4ORDERS::Order.TicketID = ::HistoryDealGetInteger(MT4ORDERS::Order.Ticket, DEAL_POSITION_ID)。 1096 1 12.50% 0 0.00% CHashMap<ulong,ulong>::调整大小 514 1 7.14% 1 7.14% m_entries[i].next = m_buckets[bucket] 。 526 1 12.50% 1 100.00% ArrayFill(m_buckets,0,new_size,-1)。 518 7 87.50% 0 0.00% @global_initializations 1 7.14% 1 7.14% 类别MT4HISTORY 428 1 50.00% 1 100.00% 静态的 constool MT4ORDERS::IsTester = ::MQLInfoInteger(MQL_TESTER)。 2496 1 50.00% 0 0.00% MT4HISTORY::RefreshHistory 588 6 42.86% 0 0.00% this.Ticket[this.Amount - 1] = (long)TicketDeal; 626 2 28.57% 0 0.00% 如果(_B2(::HistorySelect(0, INT_MAX)) 590 3 42.86% 0 0.00% ::HistoryDealGetInteger((TicketDeal = :HistoryDealGetTicket(this.LastTotalDeals)), DEAL_TIME_MSC) : LONG_MAX; 636 1 14.29% 0 0.00% return(!::HistoryOrderGetInteger(Ticket, ORDER_POSITION_ID) || (:HistoryOrderGetDouble(Ticket, ORDER_VOLUME_CURRENT) &&) 660 1 14.29% 0 0.00% CHashMap<ulong,ulong>::Add 294 1 7.14% 0 0.00% 调整大小(new_size)。 600 1 50.00% 0 0.00% 如果((候选人%divisor)==0) 40 1 50.00% 0 0.00% 启动时 3 13 92.86% 0 0.00% _B2(this.RefreshHistory())。 763 6 40.00% 0 0.00% _BV2(MT4ORDERS::GetHistoryPositionData(Ticket)) 1872 7 46.67% 0 0.00% return(_B2(MT4ORDERS::MT4OrderSelect(Index, Select, Pool))。 2588 2 13.33% 0 0.00% MQL剖析器报告 - \MQL5\Experts\Test19.mq5 职能 线路 总CPU 百分比 自己的CPU 百分比 历史订单获取积分(HistoryOrderGetInteger 3 21.43% 3 21.43% WHILE(_B2(MT4ORDERS::HistorySelectOrder(OrderTicket))) // https://www.mql5.com/ru/forum/304239#comment_10710403 1151 1 7.14% 3 21.43% return(Ticket && ((:HistoryOrderGetInteger(Ticket, ORDER_TICKET) == Ticket) || 824 2 14.29% 3 21.43% 历史选择 3 21.43% 3 21.43% 如果(_B2(::HistorySelect(0, INT_MAX)) 590 3 21.43% 3 21.43% 历史订单获取双倍 2 14.29% 2 14.29% double OrderPriceOpen = ::HistoryOrderGetDouble(OrderTicket, ORDER_PRICE_OPEN) 1182 1 7.14% 2 14.29% return(!::HistoryOrderGetInteger(Ticket, ORDER_POSITION_ID) || (:HistoryOrderGetDouble(Ticket, ORDER_VOLUME_CURRENT) &&) 660 1 7.14% 2 14.29% MT4ORDERS::GetHistoryPositionData 1093 7 50.00% 2 14.29% _BV2(MT4ORDERS::GetHistoryPositionData(Ticket)) 1872 7 50.00% 2 14.29% 获取微秒数 1 7.14% 1 7.14% StartTime = ::GetMicrosecondCount(); 1370 1 7.14% 1 7.14% CHashMap<ulong,ulong>::Resize 514 1 7.14% 1 7.14% 调整大小(new_size)。 600 1 7.14% 1 7.14% 历史交易获取整数(HistoryDealGetInteger 1 7.14% 1 7.14% ::HistoryDealGetInteger((TicketDeal = :HistoryDealGetTicket(this.LastTotalDeals)), DEAL_TIME_MSC) : LONG_MAX; 636 1 7.14% 1 7.14% @global_initializations 1 7.14% 1 7.14% CHashMap<ulong,ulong>::Add 294 1 7.14% 0 0.00% this.Ticket[this.Amount - 1] = (long)TicketDeal; 626 1 7.14% 0 0.00% 空白的OnStart() 3 13 92.86% 0 0.00% MT4HISTORY::RefreshHistory 588 6 42.86% 0 0.00% _B2(this.RefreshHistory())。 763 6 42.86% 0 0.00% About the MT5 code An effective trading strategy Functions for reading deal Andrey Khatimlianskii 2021.10.11 03:15 #48 fxsaber #:请帮助我解读分析器的结果。 什么是不清楚的? 我通常按总CPU进行排序,看看什么东西在整体上最能降低程序的速度。它可以是有用的。 我的历史上有5700个订单,第一次运行时,我得到的几乎是一个空白的报告,然后我得到这样的东西。 HistoryDealGetInteger(所有调用花了36%)和HistorySelect(27%)吃得最多。然后是HistoryOrderGetInteger(18%)和global_initialization(9%)。 剩下的10%花在代码的其他部分。 但在如此快速的单次执行过程中看结果是没有意义的,我认为。 fxsaber 2021.10.11 07:39 #49 Andrey Khatimlianskii #:什么是不清楚的? 一个解释的问题。不了解什么、哪里和如何放慢速度。 我通常按照总CPU进行排序,看看什么东西在总体上拖累了程序。它可以是有用的。 我在第一次运行时得到了几乎空白的报告,历史上有5700个订单,然后我得到了这个。 HistoryDealGetInteger(所有调用花了36%)和HistorySelect(27%)吃得最多。然后是HistoryOrderGetInteger(18%)和global_initialization(9%)。 剩余的10%则用于其他代码。 谢谢你的详细回答。我只是不明白为什么45%的线和其他的没有被考虑在内? fxsaber 2021.10.11 07:46 #50 Andrey Khatimlianskii #:但在这样一个快速的单子上看结果是没有意义的,我认为。 我在一个很长的历史上增加了一个20倍的重复。 29.41%(不清楚原因)是由于返回后有一个封闭的括号。这很难解释。 1234567 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
唯一的尴尬是第二次滑倒。其余的都很好。
显然,剖析器不适合用于加速运行速度超过几毫秒的代码块的目的。
EA在滑行中的时间为30ms,剖析器显示,在一个有三个加法和两个乘法的函数中,它所占的比例高达13%!
而这就是b2593所显示的情况。
那里没有任何东西!因为,确实,那里是零。此外,在第二次报告中,一切都非常清楚。
让我们把它整理出来,以便我们能够改进,而不是发誓。
剖析器显示,在一个有三个加法和两个乘法 的函数中,有多达13%的内容是这样的!
这就是为什么我想知道为什么EA的整个OnTick通道平均需要3毫秒(它充满了计算和交易环境的工作),而据称60%的剖析是在 "三个加法和两个乘法"。想出了这些简洁的例子。
我想在MT5中使用一个旧的剖析器,但我必须用构建来做这样的舞蹈。我还没有设法运行它。
请用一个简单的例子帮助我解释剖析器的数据。
这看起来像很多的废话。
真的想掌握它,但还没有运气。
还尝试了睡眠替换。
仍然不清楚剖析器的值。
通话报告里有什么?
我有一个印象,这个代码与截图报告不一致。
你确定你没有在剖析器工作时修复代码吗?
通话报告里有什么?
给人的印象是,给出的代码与截图中的报告不一致。
你确定你没有在剖析器运行时修改代码?
不,我没有。
我需要帮助来解读分析器的结果。
请帮助我解读分析器的结果。
什么是不清楚的?
我通常按总CPU进行排序,看看什么东西在整体上最能降低程序的速度。它可以是有用的。
我的历史上有5700个订单,第一次运行时,我得到的几乎是一个空白的报告,然后我得到这样的东西。
HistoryDealGetInteger(所有调用花了36%)和HistorySelect(27%)吃得最多。然后是HistoryOrderGetInteger(18%)和global_initialization(9%)。
剩下的10%花在代码的其他部分。
但在如此快速的单次执行过程中看结果是没有意义的,我认为。
什么是不清楚的?
一个解释的问题。不了解什么、哪里和如何放慢速度。
我通常按照总CPU进行排序,看看什么东西在总体上拖累了程序。它可以是有用的。
我在第一次运行时得到了几乎空白的报告,历史上有5700个订单,然后我得到了这个。
HistoryDealGetInteger(所有调用花了36%)和HistorySelect(27%)吃得最多。然后是HistoryOrderGetInteger(18%)和global_initialization(9%)。
剩余的10%则用于其他代码。
谢谢你的详细回答。我只是不明白为什么45%的线和其他的没有被考虑在内?
但在这样一个快速的单子上看结果是没有意义的,我认为。
我在一个很长的历史上增加了一个20倍的重复。
29.41%(不清楚原因)是由于返回后有一个封闭的括号。这很难解释。