MT5和速度在行动 - 页 46 1...394041424344454647484950515253...94 新评论 fxsaber 2020.10.05 23:27 #451 Renat Fatkhullin:毫秒计时器已经存在很长时间了: EventSetMillisecondTimer() 你完全脱离了这个圈子。假设你需要在OnTick中建立两个头寸。第一个OrderSend是几毫秒的时间。在这之后,你需要做一个快照。然后应该调用第二个OrderSend。 只有OnTick可以执行数百毫秒。你建议拍一些OnTimer的快照。 fxsaber 2020.10.05 23:28 #452 Renat Fatkhullin:计量库本身也有问题。有很多不必要的东西,包括开销。 演播室里的争论! fxsaber 2020.10.05 23:36 #453 Renat Fatkhullin:这是我的代码和稳定的运行时间:在20个图形上没有数百或数千微秒的并行运行时间你有多少个核心,什么样的处理器? i7-2600? 8个核心。 2020.10.06 02:27:59.464 Terminal MetaTrader 5 x64 build 2630 started for MetaQuotes Software Corp. 2020.10.06 02:27:59.465 Terminal Windows 10 build 19042, Intel Core i7-2700 K @ 3.50 GHz, 7 / 15 Gb memory, 19 / 29 Gb disk, IE 11, Admin, GMT+3 隐蔽的压力测试再次以数百万的请求并行进行? 告诉过你很多次,战斗顾问。尽可能地减少了通话次数。理论上(我没有测量过),每个OnTick最多有10次调用。 要更加透明。仅仅因为你贴出了几个简单的_B电话,并不能证明你的其他主张。你一提出离谱的要求,就突然忘记了代码和条件的实际描述。 你不需要在头脑中想象什么--告诉并展示你实际调用和测试的东西。不是 "运行了一个未知的压力测试并等待警报来显示世界 "的撕掉的结果,而正是测试的完整代码。 我公布了实时EA的结果。那里有70个mqh文件,包括WinAPI。如果你真的理解了,而不是只言片语,我就给你源代码。你会很快重现刹车的效果。 Renat Fatkhullin 2020.10.06 05:20 #454 fxsaber:你完全脱离了这个圈子。假设你需要在OnTick中开设两个头寸。第一个OrderSend是几毫秒的时间。在这之后,你需要做一个快照。然后应该调用第二个OrderSend。只有OnTick可以执行数百毫秒。你建议拍一些OnTimer的快照。 我没有建议抢购,我直接回答了一个关于毫秒计时器 的问题。它是存在的,尽管在当前的测试器中,它仍然在1秒内被触发。在我们正在编写的新测试器中,我们将尝试改变这一点。 Renat Fatkhullin 2020.10.06 05:22 #455 fxsaber:8个核心。多次说到战斗顾问。尽可能地减少了通话次数。理论上(我没有测量过),每个OnTick最多可有10次调用。我正在公布专家顾问的结果。那里有70个mqh文件,包括WinAPI。如果你不只是谈论它,而是真正理解它,我将给你源代码。你会很快发挥出刹车的作用。 我们会搞清楚的,给我们源代码。 Renat Fatkhullin 2020.10.06 06:11 #456 fxsaber:桌子上的争论! 你的 整个基准 有太多的垃圾,事实上这里有一个干净和可理解的(不像你的杂乱的代码)版本。 //--- benchmark macros #define _B(_function,_alert_interval) \ { \ ulong _latency=GetMicrosecondCount(); \ _function; \ _latency=GetMicrosecondCount()-_latency; \ if(_latency > _alert_interval) \ ::Alert("Time[" + __FILE__ + " " + (string)__LINE__ + " in " + __FUNCTION__+ ": " + #_function + "] = " + (string)_latency + " mсs"); \ } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnTick() { MqlTick Tick; _B(SymbolInfoTick(_Symbol,Tick),0); _B(SymbolInfoTick(_Symbol,Tick),0); } 你的问题是什么。 看不懂的代码 绑定到一个有大量开销的类中 在堆栈中存储50个结果的成本 static bool Set( const string Str ) { if (BENCHMARK::Amount == BENCHMARK::ReserveSize) BENCHMARK::ReserveSize = ::ArrayResize(BENCHMARK::Bench, BENCHMARK::ReserveSize + BENCHMARK_RESERVE); BENCHMARK::Bench[BENCHMARK::Amount++].Set(Str); return(true); } 采取的结果 - 一个坚实的开销和对象绑定中的垃圾 static ulong Get( const uint AlertInterval = 0 ) { const int Pos = BENCHMARK::Amount - 1; const ulong Res = (Pos < 0) ? 0 : BENCHMARK::Bench[Pos].Get(); if (Pos >= 0) { if (AlertInterval && (Res > AlertInterval)) ::Alert("Time[" + BENCHMARK::Bench[Pos].Str + "] = " + (string)Res + " mсs."); BENCHMARK::Amount = Pos; } return(Res); } 我希望你没有禁用测试的代码优化? 我是指metaeditor.ini中的全局参数Optimize=0 fxsaber 2020.10.06 08:59 #457 Renat Fatkhullin:你的 整个基准 有太多的垃圾,事实上这里有一个干净和可理解的(与你的杂乱的代码相比)版本。 不幸的是,你的版本处于理解便利性的早期阶段。方便的是当你可以这样做的时候。 关于交易、自动交易系统和策略测试的论坛 图书馆:标杆 fxsaber, 2020.10.01 23:49 现在我们试图找出标准变体中的打嗝之处。我们在源代码中添加一些符号。 for (long Chart = _B2(::ChartFirst()); (Chart != -1) && !Res; Chart = _B2(::ChartNext(Chart))) Res = (Chart != chartID) && _B2(::ChartGetInteger(Chart, CHART_IS_MAXIMIZED)); 并立即看到了原因。 2020.10.02 00:45:14.113 Alert: Time[Test9.mq5 36 in IsInvisible: ::ChartGetInteger(Chart,CHART_IS_MAXIMIZED)] = 878 mсs. 2020.10.02 00:45:14.114 Alert: Time[Test9.mq5 36 in IsInvisible: ::ChartGetInteger(Chart,CHART_IS_MAXIMIZED)] = 943 mсs. 2020.10.02 00:45:14.114 Alert: Time[Test9.mq5 36 in IsInvisible: ::ChartGetInteger(Chart,CHART_IS_MAXIMIZED)] = 297 mсs. 2020.10.02 00:45:14.116 Alert: Time[Test9.mq5 36 in IsInvisible: ::ChartGetInteger(Chart,CHART_IS_MAXIMIZED)] = 1787 mсs. 2020.10.02 00:45:14.116 Alert: Time[Test9.mq5 35 in IsInvisible: ::ChartNext(Chart)] = 2 mсs. 2020.10.02 00:45:14.117 Alert: Time[Test9.mq5 36 in IsInvisible: ::ChartGetInteger(Chart,CHART_IS_MAXIMIZED)] = 980 mсs. 2020.10.02 00:45:14.117 Alert: Time[Test9.mq5 35 in IsInvisible: ::ChartNext(Chart)] = 2 mсs. 2020.10.02 00:45:14.117 Alert: Time[Test9.mq5 36 in IsInvisible: ::ChartGetInteger(Chart,CHART_IS_MAXIMIZED)] = 59 mсs. 2020.10.02 00:45:14.118 Alert: Time[Test9.mq5 36 in IsInvisible: ::ChartGetInteger(Chart,CHART_IS_MAXIMIZED)] = 803 mсs. 2020.10.02 00:45:14.119 Alert: Time[Test9.mq5 36 in IsInvisible: ::ChartGetInteger(Chart,CHART_IS_MAXIMIZED)] = 1059 mсs. CHART_IS_MAXIMIZED对别人的图表来说太慢了。错误报告已经准备好了!与图书馆的合作非常容易。 有什么问题呢。 不可读的代码 捆绑在一个有大量开销的班级中 堆栈存储成本的50个结果 得到的结果 - 一个巨大的开销和对象绑定的垃圾 可用性超过了微薄的开销。如果你仔细看一下它是如何实施的,那就很悲惨了。例如,ArrayResize是一个开销,所以要尽量减少它的使用。 我希望你没有禁用测试的代码优化? 我是指metaeditor.ini中的全局参数Optimize=0 对慢速模式不感兴趣。我在看战斗EA的性能,当然也注意算法优化和编译器优化。 Roman 2020.10.06 13:35 #458 Renat Fatkhullin:你的 整个基准 有太多的垃圾,事实上这里有一个干净和可理解的(不像你的杂乱的代码)版本。你有什么问题。 不可读的代码 与一个有大量开销的班级相联系 堆栈存储成本的50个结果 获取结果--对象绑定中的所有开销和垃圾 我希望你没有禁用测试的代码优化?我是指metaeditor.ini中的全局参数Optimize=0 这里是C风格,它很简单,而且真的没有垃圾。谢谢你的例子。 一位C语言老师建议最好不要在用户名中使用下划线_B,因为这个前缀是由库、程序等的开发者使用的。,而且不要遇到重叠的情况,他建议最好不要使用它。 在mql5中是否有可能与你的名字重叠? 或者说,自定义的名字完全被屏蔽在MQ的名字之外? Edgar Akhmadeev 2020.10.06 14:27 #459 Roman:一位C语言老师建议不要在用户名中使用下划线_B,因为这个前缀被图书馆、软件等的开发者使用。,而且为了避免重叠,他建议不要使用。 在C语言中,以"_"开头的名称被用作服务、系统或特殊名称。在这种情况下,我认为这是可以允许的。因为这个功能是用于代码维护和检查的。 Roman 2020.10.06 14:38 #460 Edgar Akhmadeev:以"_"开头的名称在C语言中被用作服务、系统或特殊名称。在这种情况下--可以接受,我想。因为这个功能是用于代码维护和检查的。 这就是问题所在,除了mql5,还有开发者的MQ服务名称。 1...394041424344454647484950515253...94 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
毫秒计时器已经存在很长时间了: EventSetMillisecondTimer()
你完全脱离了这个圈子。假设你需要在OnTick中建立两个头寸。第一个OrderSend是几毫秒的时间。在这之后,你需要做一个快照。然后应该调用第二个OrderSend。
只有OnTick可以执行数百毫秒。你建议拍一些OnTimer的快照。
计量库本身也有问题。有很多不必要的东西,包括开销。
演播室里的争论!
这是我的代码和稳定的运行时间:在20个图形上没有数百或数千微秒的并行运行时间
你有多少个核心,什么样的处理器? i7-2600?
8个核心。
隐蔽的压力测试再次以数百万的请求并行进行?
告诉过你很多次,战斗顾问。尽可能地减少了通话次数。理论上(我没有测量过),每个OnTick最多有10次调用。
要更加透明。仅仅因为你贴出了几个简单的_B电话,并不能证明你的其他主张。你一提出离谱的要求,就突然忘记了代码和条件的实际描述。
你不需要在头脑中想象什么--告诉并展示你实际调用和测试的东西。不是 "运行了一个未知的压力测试并等待警报来显示世界 "的撕掉的结果,而正是测试的完整代码。
我公布了实时EA的结果。那里有70个mqh文件,包括WinAPI。如果你真的理解了,而不是只言片语,我就给你源代码。你会很快重现刹车的效果。
你完全脱离了这个圈子。假设你需要在OnTick中开设两个头寸。第一个OrderSend是几毫秒的时间。在这之后,你需要做一个快照。然后应该调用第二个OrderSend。
只有OnTick可以执行数百毫秒。你建议拍一些OnTimer的快照。
8个核心。
多次说到战斗顾问。尽可能地减少了通话次数。理论上(我没有测量过),每个OnTick最多可有10次调用。
我正在公布专家顾问的结果。那里有70个mqh文件,包括WinAPI。如果你不只是谈论它,而是真正理解它,我将给你源代码。你会很快发挥出刹车的作用。
桌子上的争论!
你的 整个基准 有太多的垃圾,事实上这里有一个干净和可理解的(不像你的杂乱的代码)版本。
你的问题是什么。
我希望你没有禁用测试的代码优化?
我是指metaeditor.ini中的全局参数Optimize=0
你的 整个基准 有太多的垃圾,事实上这里有一个干净和可理解的(与你的杂乱的代码相比)版本。
不幸的是,你的版本处于理解便利性的早期阶段。方便的是当你可以这样做的时候。
关于交易、自动交易系统和策略测试的论坛
图书馆:标杆
fxsaber, 2020.10.01 23:49
现在我们试图找出标准变体中的打嗝之处。我们在源代码中添加一些符号。
并立即看到了原因。
CHART_IS_MAXIMIZED对别人的图表来说太慢了。错误报告已经准备好了!与图书馆的合作非常容易。
有什么问题呢。
可用性超过了微薄的开销。如果你仔细看一下它是如何实施的,那就很悲惨了。例如,ArrayResize是一个开销,所以要尽量减少它的使用。
我希望你没有禁用测试的代码优化?
我是指metaeditor.ini中的全局参数Optimize=0
对慢速模式不感兴趣。我在看战斗EA的性能,当然也注意算法优化和编译器优化。
你的 整个基准 有太多的垃圾,事实上这里有一个干净和可理解的(不像你的杂乱的代码)版本。
你有什么问题。
我希望你没有禁用测试的代码优化?
我是指metaeditor.ini中的全局参数Optimize=0
这里是C风格,它很简单,而且真的没有垃圾。谢谢你的例子。
一位C语言老师建议最好不要在用户名中使用下划线_B
,因为这个前缀是由库、程序等的开发者使用的。
,而且不要遇到重叠的情况,他建议最好不要使用它。
在mql5中是否有可能与你的名字重叠?
或者说,自定义的名字完全被屏蔽在MQ的名字之外?
一位C语言老师建议不要在用户名中使用下划线_B
,因为这个前缀被图书馆、软件等的开发者使用。
,而且为了避免重叠,他建议不要使用。
在C语言中,以"_"开头的名称被用作服务、系统或特殊名称。在这种情况下,我认为这是可以允许的。因为这个功能是用于代码维护和检查的。
以"_"开头的名称在C语言中被用作服务、系统或特殊名称。在这种情况下--可以接受,我想。因为这个功能是用于代码维护和检查的。
这就是问题所在,除了mql5,还有开发者的MQ服务名称。