MT5和速度在行动 - 页 50 1...434445464748495051525354555657...94 新评论 fxsaber 2020.10.08 06:04 #491 关于交易、自动交易系统和交易策略测试的论坛 MT5和速度在行动 fxsaber, 2020.10.07 11:13 #include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279 void OnTick() { _BV(Print(""), 1); } 无法检查它在慢速VPS上的表现。 如果你在OrderSend之后做任何打印输出(例如订单发送结果),最好将它们累积在一个字符串变量中,并在退出On-function时将其发送给打印。 否则,你可能会失去很多连接到打印-快照 的钱。多少钱 - 你可以回答,如果有人在他的VPS上运行上述顾问。 ZZZ 最简单的实现。 #include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279 class PRINT { private: string Str; public: PRINT() : Str(NULL) { ::StringSetLength(this.Str, 5000); } ~PRINT() { if (this.Str != NULL) ::Print(this.Str); } template <typename T> void Add( const T PrintStr ) { this.Str += ((this.Str == NULL) ? NULL : "\n") + (string)PrintStr; } }; #define Print PrintObj.Add // Закомментируйте, чтобы посмотреть скорость обычного Print. void OnTick() { PRINT PrintObj; // Накопитель Print-ов. for (int i = 0; i < 5; i++) { _BV(Print(i), 1) Sleep(100); // Эмуляция OrderSend } } 在快速的机器上,这种解决方案要比通常的方法快得多。在VPS上怎么做--不知道。 Edgar Akhmadeev 2020.10.08 06:53 #492 fxsaber: 如果你在OrderSend之后做任何打印输出(例如订单发送结果),最好将它们累积在一个字符串变量中,并在退出On-function时将其发送给打印。否则,你可能会失去很多连接到打印-快照 的钱。多少钱 - 你可以回答,如果有人在他的VPS上运行上述顾问。 在我的3美元VPS上 2020.10.08 09:50:59.631 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 3121 mсs. 2020.10.08 09:50:59.724 Test Print (EURUSD,H1) 2020.10.08 09:50:59.724 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 78 mсs. 2020.10.08 09:50:59.837 Test Print (EURUSD,H1) 2020.10.08 09:50:59.837 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 86 mсs. 2020.10.08 09:50:59.930 Test Print (EURUSD,H1) 2020.10.08 09:50:59.931 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 159 mсs. 2020.10.08 09:51:00.036 Test Print (EURUSD,H1) 2020.10.08 09:51:00.036 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 84 mсs. 2020.10.08 09:51:00.138 Test Print (EURUSD,H1) 2020.10.08 09:51:00.138 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 94 mсs. 2020.10.08 09:51:00.243 Test Print (EURUSD,H1) 2020.10.08 09:51:00.243 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 86 mсs. 2020.10.08 09:51:00.380 Test Print (EURUSD,H1) 2020.10.08 09:51:00.380 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 54 mсs. 2020.10.08 09:51:00.973 Test Print (EURUSD,H1) 2020.10.08 09:51:00.973 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 79 mсs. 2020.10.08 09:51:01.129 Test Print (EURUSD,H1) 2020.10.08 09:51:01.129 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 91 mсs. 2020.10.08 09:51:01.186 Test Print (EURUSD,H1) 2020.10.08 09:51:01.186 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 60 mсs. 2020.10.08 09:51:01.320 Test Print (EURUSD,H1) 2020.10.08 09:51:01.321 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 75 mсs. 2020.10.08 09:51:01.402 Test Print (EURUSD,H1) 2020.10.08 09:51:01.402 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 86 mсs. 2020.10.08 09:51:01.546 Test Print (EURUSD,H1) 2020.10.08 09:51:01.555 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 72 mсs. 2020.10.08 09:51:02.158 Test Print (EURUSD,H1) 2020.10.08 09:51:02.158 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 67 mсs. 2020.10.08 09:51:04.651 Test Print (EURUSD,H1) 2020.10.08 09:51:04.651 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 74 mсs. 2020.10.08 09:51:04.929 Test Print (EURUSD,H1) 2020.10.08 09:51:04.930 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 200 mсs. 2020.10.08 09:51:07.200 Test Print (EURUSD,H1) 2020.10.08 09:51:07.200 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 58 mсs. 2020.10.08 09:51:07.330 Test Print (EURUSD,H1) 2020.10.08 09:51:07.330 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 68 mсs. 2020.10.08 09:51:07.452 Test Print (EURUSD,H1) 2020.10.08 09:51:07.460 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 77 mсs. 2020.10.08 09:51:07.728 Test Print (EURUSD,H1) 2020.10.08 09:51:07.728 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 64 mсs. 2020.10.08 09:51:07.870 Test Print (EURUSD,H1) 2020.10.08 09:51:07.870 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 72 mсs. 2020.10.08 09:51:07.967 Test Print (EURUSD,H1) 2020.10.08 09:51:07.967 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 58 mсs. 2020.10.08 09:51:08.130 Test Print (EURUSD,H1) 2020.10.08 09:51:08.130 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 56 mсs. 2020.10.08 09:51:11.274 Test Print (EURUSD,H1) 2020.10.08 09:51:11.275 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 63 mсs. 2020.10.08 09:51:11.409 Test Print (EURUSD,H1) 2020.10.08 09:51:11.409 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 73 mсs. 2020.10.08 09:51:11.903 Test Print (EURUSD,H1) 2020.10.08 09:51:11.903 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 86 mсs. 2020.10.08 09:51:12.022 Test Print (EURUSD,H1) 2020.10.08 09:51:12.022 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 79 mсs. 2020.10.08 09:51:12.699 Test Print (EURUSD,H1) 2020.10.08 09:51:12.700 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 69 mсs. 2020.10.08 09:51:12.977 Test Print (EURUSD,H1) 2020.10.08 09:51:12.977 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 67 mсs. 2020.10.08 09:51:13.226 Test Print (EURUSD,H1) 2020.10.08 09:51:13.226 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 98 mсs. 2020.10.08 09:51:13.412 Test Print (EURUSD,H1) 2020.10.08 09:51:13.412 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 93 mсs. 2020.10.08 09:51:13.854 Test Print (EURUSD,H1) 2020.10.08 09:51:13.854 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 59 mсs. 2020.10.08 09:51:14.000 Test Print (EURUSD,H1) 2020.10.08 09:51:14.000 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 62 mсs. 2020.10.08 09:51:18.343 Test Print (EURUSD,H1) 2020.10.08 09:51:18.343 Test Print (EURUSD,H1) Alert: Time[Test Print.mq5 5: Print()] = 86 mсs. fxsaber 2020.10.08 06:55 #493 Edgar Akhmadeev:在我的3美元VPS上。 谢谢你。绝对是一个更好的变通办法。 Anton 2020.10.08 07:48 #494 fxsaber:#include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279 long GetAnotherChart() { long Chart = ::ChartFirst(); while (Chart == ChartID()) Chart = ChartNext(Chart); return(Chart); } void OnTick() { const long Chart = GetAnotherChart(); if (Chart) _B(EventChartCustom(Chart, 123, 0, 0, NULL), 1); _B(EventChartCustom(0, 123, 0, 0, NULL), 1); }寄给别人的图表比寄给自己的更贵。 这样试试吧。 _B(EventChartCustom(-1, 123, 0, 0, NULL), 1); fxsaber 2020.10.08 08:21 #495 Anton:这样试试吧。 // https://www.mql5.com/ru/forum/342090/page50#comment_18647171 class PRINT { private: string Str; public: PRINT() : Str(NULL) { ::StringSetLength(this.Str, 5000); } ~PRINT() { if (this.Str != NULL) ::Print(this.Str); } template <typename T> void Add( const T PrintStr ) { this.Str += ((this.Str == NULL) ? NULL : "\n") + (string)PrintStr; } }; #define Alert PrintObj.Add PRINT PrintObj; //#define BENCHMARK_OFF // Выключение замеров. #include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ru/code/31279 void OnTick() { _B(EventChartCustom(-1, 123, GetMicrosecondCount(), 0, NULL), 1); } void OnChartEvent(const int id, const long& lparam,const double& dparam,const string& sparam) { if (id == 1123) Print("Time[from OnTick To OnChartEvent] = " + (string)(GetMicrosecondCount() - lparam) + " mcs."); } 结果。 2020.10.08 11:35:52.050 Benchmark.mqh: TimeAvg[GetMicrosecondsCount()] = 0 mcs. 2020.10.08 11:35:52.050 Benchmark.mqh is On. 2020.10.08 11:35:55.617 Time[from OnTick To OnChartEvent] = 14 mcs. 2020.10.08 11:35:55.821 Time[from OnTick To OnChartEvent] = 3 mcs. 2020.10.08 11:35:56.729 Time[from OnTick To OnChartEvent] = 4 mcs. 2020.10.08 11:35:56.932 Time[from OnTick To OnChartEvent] = 9 mcs. 2020.10.08 11:35:57.841 Time[from OnTick To OnChartEvent] = 9 mcs. 2020.10.08 11:35:58.177 Bench_Stack = 0, 1 <= Time[Test9.mq5 23 in OnTick: EventChartCustom(-1,123,GetMicrosecondCount(),0,NULL)] = 2 mcs. 2020.10.08 11:35:58.177 Bench_Stack = 0, 1 <= Time[Test9.mq5 23 in OnTick: EventChartCustom(-1,123,GetMicrosecondCount(),0,NULL)] = 2 mcs. 2020.10.08 11:35:58.177 Bench_Stack = 0, 1 <= Time[Test9.mq5 23 in OnTick: EventChartCustom(-1,123,GetMicrosecondCount(),0,NULL)] = 2 mcs. 当测光被关闭时。 2020.10.08 11:15:19.084 Benchmark.mqh: TimeAvg[GetMicrosecondsCount()] = 0 mcs. 2020.10.08 11:15:19.084 Benchmark.mqh is Off. 2020.10.08 11:15:24.171 Time[from OnTick To OnChartEvent] = 4 mcs. 2020.10.08 11:15:24.376 Time[from OnTick To OnChartEvent] = 3 mcs. 2020.10.08 11:15:27.010 Time[from OnTick To OnChartEvent] = 3 mcs. 2020.10.08 11:15:31.859 Time[from OnTick To OnChartEvent] = 5 mcs. 2020.10.08 11:15:32.266 Time[from OnTick To OnChartEvent] = 4 mcs. 2020.10.08 11:15:32.470 Time[from OnTick To OnChartEvent] = 3 mcs. 2020.10.08 11:15:32.670 Time[from OnTick To OnChartEvent] = 6 mcs. 也就是说,切换到 "OnEmpty "需要不到10µs。 为什么不对零做同样的事? Anton 2020.10.08 09:00 #496 fxsaber:也就是说,切换到 "OnEmpty "需要不到10µs。为什么不对零做同样的事? 不同的意义和不同的执行机制。0 - 事件为 "自己的 "图表。-1 - 事件在自己的图表队列中。 fxsaber 2020.10.08 14:59 #497 关于交易、自动交易系统和交易策略测试的论坛 MT5和速度在行动 fxsaber, 2020.10.07 12:41 尽管我一再要求,但我从未尝试在MQL5中使用TimeCurrentMsc。 会是这样吗? fxsaber 2020.10.08 15:27 #498 Anton:不同的意义和不同的执行机制。0是 "自己 "图表队列中的一个事件。-1 - 事件在自己的队列中。 事实证明,通过-1的异步 不能实现相同的警报。 A100 2020.10.08 20:57 #499 fxsaber:这意味着切换到OnEmpty需要不到10微秒的时间。 正如你所看到的,在你的帮助下,一切都解决得比最乐观的预测要快,原来有一个隐藏的后门。 Roman 2020.10.08 21:22 #500 fxsaber: 会有吗? 不太一样,但由mcs间隔的计数器。 是的,TimeCurrentMcs 会更好,我加入了这个愿望。 //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { ulong mcs = 0; while(!_StopFlag) { mcs = GetMicrosecondCount(); switch(GetInterval(mcs, 5000000)) //5 секунд { case 1: Print((string) mcs); break; case 0: break; } } } //-------------------------------------------------------------------- //Получить интервал ulong prevCount = 0; int GetInterval(ulong currCount, ulong mcsIntrval) { int res = 0; switch((currCount - prevCount) > mcsIntrval) { case 1: prevCount = currCount; res = 1; break; default: break; } return(res); } 2020.10.09 00:15:45.712 TestScript (MNQZ20,M1) 5000001 2020.10.09 00:15:50.712 TestScript (MNQZ20,M1) 10000002 2020.10.09 00:15:55.712 TestScript (MNQZ20,M1) 15000003 2020.10.09 00:16:00.712 TestScript (MNQZ20,M1) 20000004 2020.10.09 00:16:05.712 TestScript (MNQZ20,M1) 25000006 2020.10.09 00:16:10.712 TestScript (MNQZ20,M1) 30000007 2020.10.09 00:16:15.712 TestScript (MNQZ20,M1) 35000008 2020.10.09 00:16:20.712 TestScript (MNQZ20,M1) 40000009 2020.10.09 00:16:25.713 TestScript (MNQZ20,M1) 45000581 2020.10.09 00:16:30.713 TestScript (MNQZ20,M1) 50000582 1...434445464748495051525354555657...94 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
关于交易、自动交易系统和交易策略测试的论坛
MT5和速度在行动
fxsaber, 2020.10.07 11:13
无法检查它在慢速VPS上的表现。
如果你在OrderSend之后做任何打印输出(例如订单发送结果),最好将它们累积在一个字符串变量中,并在退出On-function时将其发送给打印。
否则,你可能会失去很多连接到打印-快照 的钱。多少钱 - 你可以回答,如果有人在他的VPS上运行上述顾问。
ZZZ 最简单的实现。
在快速的机器上,这种解决方案要比通常的方法快得多。在VPS上怎么做--不知道。
如果你在OrderSend之后做任何打印输出(例如订单发送结果),最好将它们累积在一个字符串变量中,并在退出On-function时将其发送给打印。
否则,你可能会失去很多连接到打印-快照 的钱。多少钱 - 你可以回答,如果有人在他的VPS上运行上述顾问。
在我的3美元VPS上
在我的3美元VPS上。
谢谢你。绝对是一个更好的变通办法。
寄给别人的图表比寄给自己的更贵。
这样试试吧。
这样试试吧。
结果。
当测光被关闭时。
也就是说,切换到 "OnEmpty "需要不到10µs。
为什么不对零做同样的事?
也就是说,切换到 "OnEmpty "需要不到10µs。
为什么不对零做同样的事?
不同的意义和不同的执行机制。0 - 事件为 "自己的 "图表。-1 - 事件在自己的图表队列中。
关于交易、自动交易系统和交易策略测试的论坛
MT5和速度在行动
fxsaber, 2020.10.07 12:41
尽管我一再要求,但我从未尝试在MQL5中使用TimeCurrentMsc。
会是这样吗?
不同的意义和不同的执行机制。0是 "自己 "图表队列中的一个事件。-1 - 事件在自己的队列中。
事实证明,通过-1的异步 不能实现相同的警报。
这意味着切换到OnEmpty需要不到10微秒的时间。
正如你所看到的,在你的帮助下,一切都解决得比最乐观的预测要快,原来有一个隐藏的后门。
会有吗?
不太一样,但由mcs间隔的计数器。
是的,TimeCurrentMcs 会更好,我加入了这个愿望。