实时的提基 - 页 17 1...101112131415161718192021222324...26 新评论 Aleksey Mavrin 2020.02.04 12:31 #161 Yuriy Zaytsev: 你确定这一点吗? 4秒 ???? 不可能!你真的认为处理器被冻结了4秒或内存被释放了4秒? 你在开玩笑吗? 更有可能是磁盘上的写队列问题。 磁盘的速度比内存和处理器慢。 然后flush(),在C语言中有这样一个命令,可能你知道,它是在方便和舒适的时候执行的,可以在一些延迟的情况下执行,更多的是与磁盘加载有关。 这就是当缓冲区需要重置到磁盘时的调用。 嗯,我不太确定,因为我没有在MT中实验性地检查过。但这是一种标准--在日志中,有写到磁盘的时间,如果事件的时间,导致写到日志的时间,更重要,这不是符合逻辑的吗? 而如果我们假设,日志被写入磁盘的时间,如果磁盘被加载,无论如何你的物理记录会有一个延迟,而这个时间将是发送命令写入缓冲区。 也就是说,刷新并不改变缓冲区--它只是在有延迟的情况下稍稍重置一下。 wp.正确地指出,你需要写时间,因为在任何情况下,只有在写到日志时形成终端本身的时间,没有任何意义的定向。 Yuriy Zaytsev 2020.02.04 14:19 #162 Aleksey Mavrin:嗯,我不太确定,因为我没有在MT中进行实验检查。但这是一种标准--如果更重要的是事件的时间,导致记录到逻辑上的事件,为什么要在日志中记录到磁盘的时间?而如果我们假设,日志被写入磁盘的时间,如果磁盘被加载,无论如何你的物理记录会有一个延迟,而这个时间将是发送命令写入缓冲区。也就是说,刷新并不改变缓冲区--它只是在有延迟的情况下稍稍重置一下。s.s.正确地指出,你必须写下时间,因为在任何情况下,只有在写到日志时形成终端本身的时间,没有任何意义的定向。 我假设--时间是在写到磁盘之前插入的,然后一切都配合起来。 让我们试着一步一步地描述这个场景--使其更加清晰。 1-刻度线来了(点击onTick)--应该被打印出来 2-而且OnTick打印了一份日志--它被成功保存了 3-这个刻度线也到达了OnTick--它也应该被打印出来。 驱动程序把它的数据磁头放在了别的地方--),正在写自己的数据。 5-这是当metatrader试图向磁盘发送东西的时候 但是磁盘上的Windows操作系统忙得不可开交--操作系统告诉metatrader对不起MQ我有更重要的事情要做--等等 6-4秒过去了。 7- 然后Windows在4秒后-清除了驱动器的队列-并对MetaTrader说-亲爱的交易终端-你想写东西到磁盘吗?- 好了,写吧! 8-metatrader写到磁盘时有4秒的延迟,并在日志中记录时间,不是它想写数据到磁盘的时间 - 而是它实际写的时间。 这就是4秒的由来。 --- 任何其他情况,如终端将本地 时间放入缓冲区--但写入时间延迟了4秒--这样的情况都不工作。 否则的话,时间就会重合了! Sergey Chalyshev 2020.02.04 16:18 #163 Aleksey Mavrin: 嗯,我不太确定,因为我没有在MT中 进行实验检查。但这是一种标准--为什么在日志中记录到磁盘的时间,如果更重要的是事件的时间,这导致记录到日志中,这是合乎逻辑的,对吗? 而如果我们假设,日志被写入磁盘的时间,如果磁盘被加载,无论如何你的物理记录会有一个延迟,而这个时间会被发送命令写入写缓冲区。 也就是说,刷新并不改变缓冲区--它只是在有延迟的情况下稍稍重置一下。 s.s.正确地指出,你必须写出时间,因为在任何情况下,只有终端自己在写到日志时产生的时间,才有必要关注一下。 如果你不检查,那就不要胡说八道。 你甚至知道我们在这个话题中谈论的是什么吗? 给我看测试,否则就离开这里。 Yuriy Zaytsev 2020.02.04 16:47 #164 Aleksey Mavrin:嗯,我不太确定,因为我没有在MT中进行实验检查。但这是一种标准--如果更重要的是事件的时间,导致记录到逻辑上的事件,为什么要在日志中记录到磁盘的时间?而如果我们假设,日志被写入磁盘的时间,如果磁盘被加载,无论如何你的物理记录会有一个延迟,而这个时间会被发送命令写入写缓冲区。也就是说,刷新并不改变缓冲区--它只是在有延迟的情况下稍稍重置一下。s.s.正确地指出,你必须写下时间,因为在任何情况下,只有形成终端本身的时间,当写到日志,指导没有意义。 只是在我们的情况下,我们得到了 写到磁盘的时间! 但时间可以在GetTickDescription过程中安排,我在上面给作者写了这个问题。 如果他把它放在那里,我们就不会在4秒钟内讨论可能的延迟原因。在日志中,最有可能的是,OnBock和OnTick的本地时间是一样的,但到磁盘的时间会有4秒的差异。 //+------------------------------------------------------------------+ //| возвращает строковое описание тика | //+------------------------------------------------------------------+ string GetTickDescription(MqlTick &tick) { .. .. Sergey Chalyshev: 如果你没有检查过,那就别管它了。你知道这个主题是关于什么的吗?给我看看测试结果,否则就给 我滚出去。 不要对我这么苛刻。 Yuriy Zaytsev 2020.02.04 16:56 #165 有可能改进这种嘀嗒声的捕捉,将其设置为一周或两周,也许能捕捉到日志中的记录日期与事件发生日期相差无几的时刻。 当然,可以通过定期加载磁盘来加速这一过程,以便进行录音。 另一个问题,最重要的问题.为什么要在这个研究上浪费时间:-)))有什么实际好处。 --- 目前很清楚的是,点子首先出现在OnTick中,然后才出现在OnBuk中,好的是,OnBuk不仅被调用的是点子,而且还被调用的是市场上交易量的变化,换句话说,有人开了一个订单,关闭或删除,交易量发生了变化。 这对市场来说是相当重要的信息。 当然,在股票/期货市场上的交易决策的逻辑,正是在OnBuk,而不是在OnTick。 Aleksey Mavrin 2020.02.04 17:12 #166 Sergey Chalyshev:如果你没有检查,那就别管它了。你知道这个主题是关于什么的吗?给我看看测试结果,否则就他妈的给我滚出去。 你才唠叨呢,老二,16页还没想过在打印 前给事件计时,写上他们测量的速度,专家,该死)。 你如此自豪地指出来的,他们说,我没有检查,你甚至没有真正理解我在说什么,我打赌。但你不太可能理解它。 而事实上,这个时间并不完全是记录到磁盘的时间,它被检查了。 Aleksey Mavrin 2020.02.04 17:31 #167 Sergey Chalyshev:如果你没有检查,那就别管它了。你知道这个主题是关于什么的吗?给我看看测试结果,否则就给我滚出去。 这样吧,聪明的家伙,至少给我看一个可靠的方法来检验你的意思,我就保释,承认我不明白,否则就承认你自己不明白,道歉,或者保释自己出去。 也就是--至少有一个100%可靠的方法可以通过实验验证终端到底是什么时候写到日志的,即主选项。 1. 终端在队列中收到打印 命令的时间。 2. 打印命令开始的时间。 3. 缓冲区内打印的终止时间)。 这个变体可能是确切的时间。 4. 打印执行到磁盘的时间。 prostotrader 2020.02.04 18:10 #168 Aleksey Mavrin: 这样吧,聪明人,你至少给我看一个可靠的方法来检查你的意思,我就保释,承认我没有理解,否则就承认你自己不理解,道歉,或者保释自己。 也就是--至少有一个100%可靠的方法可以通过实验验证终端到底是什么时候写到日志的,即主选项。 1. 终端在队列中收到打印命令的时间。 2. 打印命令开始的时间。 3. 缓冲区内打印的终止时间)。 这个变体可能是确切的时间。 4. 打印到磁盘的执行时间。 那么,这有什么意义呢? 等待你的代码... Aleksey Mavrin 2020.02.04 18:27 #169 prostotrader: 那么是什么情况呢? 等待你的代码... 你在等待什么代码?我向你保证过什么吗?价格是多少来着)。 你也像你的朋友一样,没有理解我在说什么。 prostotrader 2020.02.04 18:54 #170 在辩论进行的同时,我做了另一个实验。 //+------------------------------------------------------------------+ //| Ticks_test.mq5 | //| Copyright 2019 prostotrader | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2019 prostotrader" #property link "https://www.mql5.com" #property version "1.00" //--- bool is_book; ulong st_time, func_time; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { is_book = MarketBookAdd(Symbol()); st_time = GetMicrosecondCount(); func_time = GetMicrosecondCount(); Print(__FUNCTION__, "; Time: ", MathAbs((func_time - st_time)/1000), " ms"); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { if(is_book == true) MarketBookRelease(Symbol()); } //+------------------------------------------------------------------+ //| BookEvent function | //+------------------------------------------------------------------+ void OnBookEvent(const string &symbol) { if(Symbol() == symbol) { func_time = GetMicrosecondCount(); Print(__FUNCTION__, "; Time: ", MathAbs((func_time - st_time)/1000), " ms"); } } void OnTick() { func_time = GetMicrosecondCount(); Print(__FUNCTION__, "; Time: ", MathAbs((func_time - st_time)/1000), " ms"); } //+------------------------------------------------------------------+ 我的意思是,在初始化过程中,我以一微秒为单位计时。 在每次打印之前,我都会再次钻研时间。 理想情况下,它应该是这样的 2020.02.04 21:28:01.316 Ticks_test_2 (GOLD-3.20,M1) OnTick; Time: 1395 ms 2020.02.04 21:28:01.316 Ticks_test_2 (GOLD-3.20,M1) OnBookEvent; Time: 1395 ms 但很多时候,结果是这样的(对数曝光)。 2020.02.04 21:28:11.133 Ticks_test_2 (GOLD-3.20,M1) OnTick; Time: 11212 ms 2020.02.04 21:28:11.139 Ticks_test_2 (GOLD-3.20,M1) OnBookEvent; Time: 11218 ms 2020.02.04 21:28:15.603 Ticks_test_2 (GOLD-3.20,M1) OnTick; Time: 15682 ms 2020.02.04 21:28:15.609 Ticks_test_2 (GOLD-3.20,M1) OnBookEvent; Time: 15688 ms 2020.02.04 21:28:29.521 Ticks_test_2 (GOLD-3.20,M1) OnTick; Time: 29599 ms 2020.02.04 21:28:29.790 Ticks_test_2 (GOLD-3.20,M1) OnTick; Time: 29868 ms 2020.02.04 21:28:29.790 Ticks_test_2 (GOLD-3.20,M1) OnBookEvent; Time: 29868 ms 2020.02.04 21:28:33.109 Ticks_test_2 (GOLD-3.20,M1) OnTick; Time: 33188 ms 2020.02.04 21:28:33.115 Ticks_test_2 (GOLD-3.20,M1) OnBookEvent; Time: 33194 ms 2020.02.04 21:28:40.800 Ticks_test_2 (GOLD-3.20,M1) OnTick; Time: 40878 ms 2020.02.04 21:28:40.807 Ticks_test_2 (GOLD-3.20,M1) OnBookEvent; Time: 40885 ms 2020.02.04 21:28:41.891 Ticks_test_2 (GOLD-3.20,M1) OnTick; Time: 41969 ms 2020.02.04 21:28:41.896 Ticks_test_2 (GOLD-3.20,M1) OnBookEvent; Time: 41974 ms 2020.02.04 21:28:52.984 Ticks_test_2 (GOLD-3.20,M1) OnTick; Time: 53063 ms 2020.02.04 21:28:52.991 Ticks_test_2 (GOLD-3.20,M1) OnBookEvent; Time: 53070 ms 2020.02.04 21:28:54.457 Ticks_test_2 (GOLD-3.20,M1) OnTick; Time: 54536 ms 2020.02.04 21:28:55.276 Ticks_test_2 (GOLD-3.20,M1) OnBookEvent; Time: 55355 ms 2020.02.04 21:29:10.643 Ticks_test_2 (GOLD-3.20,M1) OnTick; Time: 70722 ms 2020.02.04 21:29:10.650 Ticks_test_2 (GOLD-3.20,M1) OnBookEvent; Time: 70729 ms 2020.02.04 21:29:14.674 Ticks_test_2 (GOLD-3.20,M1) OnTick; Time: 74752 ms 2020.02.04 21:29:14.681 Ticks_test_2 (GOLD-3.20,M1) OnBookEvent; Time: 74759 ms 2020.02.04 21:29:25.306 Ticks_test_2 (GOLD-3.20,M1) OnTick; Time: 85384 ms 2020.02.04 21:29:25.313 Ticks_test_2 (GOLD-3.20,M1) OnBookEvent; Time: 85390 ms 2020.02.04 21:29:30.468 Ticks_test_2 (GOLD-3.20,M1) OnTick; Time: 90546 ms 2020.02.04 21:29:30.481 Ticks_test_2 (GOLD-3.20,M1) OnBookEvent; Time: 90559 ms 2020.02.04 21:29:30.866 Ticks_test_2 (GOLD-3.20,M1) OnTick; Time: 90944 ms 2020.02.04 21:29:30.874 Ticks_test_2 (GOLD-3.20,M1) OnBookEvent; Time: 90951 ms 2020.02.04 21:29:36.680 Ticks_test_2 (GOLD-3.20,M1) OnTick; Time: 96758 ms 2020.02.04 21:29:36.688 Ticks_test_2 (GOLD-3.20,M1) OnBookEvent; Time: 96766 ms 2020.02.04 21:29:37.891 Ticks_test_2 (GOLD-3.20,M1) OnTick; Time: 97968 ms 2020.02.04 21:29:37.910 Ticks_test_2 (GOLD-3.20,M1) OnBookEvent; Time: 97987 ms 因此,在调用打印时,当地时间 被写入打印。 但它不适合4秒... 1...101112131415161718192021222324...26 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你确定这一点吗?
4秒 ???? 不可能!你真的认为处理器被冻结了4秒或内存被释放了4秒? 你在开玩笑吗?
更有可能是磁盘上的写队列问题。
磁盘的速度比内存和处理器慢。
然后flush(),在C语言中有这样一个命令,可能你知道,它是在方便和舒适的时候执行的,可以在一些延迟的情况下执行,更多的是与磁盘加载有关。
这就是当缓冲区需要重置到磁盘时的调用。
嗯,我不太确定,因为我没有在MT中实验性地检查过。但这是一种标准--在日志中,有写到磁盘的时间,如果事件的时间,导致写到日志的时间,更重要,这不是符合逻辑的吗?
而如果我们假设,日志被写入磁盘的时间,如果磁盘被加载,无论如何你的物理记录会有一个延迟,而这个时间将是发送命令写入缓冲区。
也就是说,刷新并不改变缓冲区--它只是在有延迟的情况下稍稍重置一下。
wp.正确地指出,你需要写时间,因为在任何情况下,只有在写到日志时形成终端本身的时间,没有任何意义的定向。
嗯,我不太确定,因为我没有在MT中进行实验检查。但这是一种标准--如果更重要的是事件的时间,导致记录到逻辑上的事件,为什么要在日志中记录到磁盘的时间?
而如果我们假设,日志被写入磁盘的时间,如果磁盘被加载,无论如何你的物理记录会有一个延迟,而这个时间将是发送命令写入缓冲区。
也就是说,刷新并不改变缓冲区--它只是在有延迟的情况下稍稍重置一下。
s.s.正确地指出,你必须写下时间,因为在任何情况下,只有在写到日志时形成终端本身的时间,没有任何意义的定向。
我假设--时间是在写到磁盘之前插入的,然后一切都配合起来。
让我们试着一步一步地描述这个场景--使其更加清晰。
1-刻度线来了(点击onTick)--应该被打印出来
2-而且OnTick打印了一份日志--它被成功保存了
3-这个刻度线也到达了OnTick--它也应该被打印出来。
驱动程序把它的数据磁头放在了别的地方--),正在写自己的数据。
5-这是当metatrader试图向磁盘发送东西的时候
但是磁盘上的Windows操作系统忙得不可开交--操作系统告诉metatrader对不起MQ我有更重要的事情要做--等等
6-4秒过去了。
7- 然后Windows在4秒后-清除了驱动器的队列-并对MetaTrader说-亲爱的交易终端-你想写东西到磁盘吗?- 好了,写吧!
8-metatrader写到磁盘时有4秒的延迟,并在日志中记录时间,不是它想写数据到磁盘的时间 - 而是它实际写的时间。
这就是4秒的由来。
---
任何其他情况,如终端将本地 时间放入缓冲区--但写入时间延迟了4秒--这样的情况都不工作。
否则的话,时间就会重合了!
嗯,我不太确定,因为我没有在MT中 进行实验检查。但这是一种标准--为什么在日志中记录到磁盘的时间,如果更重要的是事件的时间,这导致记录到日志中,这是合乎逻辑的,对吗?
而如果我们假设,日志被写入磁盘的时间,如果磁盘被加载,无论如何你的物理记录会有一个延迟,而这个时间会被发送命令写入写缓冲区。
也就是说,刷新并不改变缓冲区--它只是在有延迟的情况下稍稍重置一下。
s.s.正确地指出,你必须写出时间,因为在任何情况下,只有终端自己在写到日志时产生的时间,才有必要关注一下。
如果你不检查,那就不要胡说八道。
你甚至知道我们在这个话题中谈论的是什么吗?
给我看测试,否则就离开这里。
嗯,我不太确定,因为我没有在MT中进行实验检查。但这是一种标准--如果更重要的是事件的时间,导致记录到逻辑上的事件,为什么要在日志中记录到磁盘的时间?
而如果我们假设,日志被写入磁盘的时间,如果磁盘被加载,无论如何你的物理记录会有一个延迟,而这个时间会被发送命令写入写缓冲区。
也就是说,刷新并不改变缓冲区--它只是在有延迟的情况下稍稍重置一下。
s.s.正确地指出,你必须写下时间,因为在任何情况下,只有形成终端本身的时间,当写到日志,指导没有意义。
只是在我们的情况下,我们得到了 写到磁盘的时间!
但时间可以在GetTickDescription过程中安排,我在上面给作者写了这个问题。
如果他把它放在那里,我们就不会在4秒钟内讨论可能的延迟原因。在日志中,最有可能的是,OnBock和OnTick的本地时间是一样的,但到磁盘的时间会有4秒的差异。
如果你没有检查过,那就别管它了。
你知道这个主题是关于什么的吗?
给我看看测试结果,否则就给 我滚出去。
不要对我这么苛刻。
有可能改进这种嘀嗒声的捕捉,将其设置为一周或两周,也许能捕捉到日志中的记录日期与事件发生日期相差无几的时刻。
当然,可以通过定期加载磁盘来加速这一过程,以便进行录音。
另一个问题,最重要的问题.为什么要在这个研究上浪费时间:-)))有什么实际好处。
---
目前很清楚的是,点子首先出现在OnTick中,然后才出现在OnBuk中,好的是,OnBuk不仅被调用的是点子,而且还被调用的是市场上交易量的变化,换句话说,有人开了一个订单,关闭或删除,交易量发生了变化。 这对市场来说是相当重要的信息。
当然,在股票/期货市场上的交易决策的逻辑,正是在OnBuk,而不是在OnTick。
如果你没有检查,那就别管它了。
你知道这个主题是关于什么的吗?
给我看看测试结果,否则就他妈的给我滚出去。
你才唠叨呢,老二,16页还没想过在打印 前给事件计时,写上他们测量的速度,专家,该死)。
你如此自豪地指出来的,他们说,我没有检查,你甚至没有真正理解我在说什么,我打赌。但你不太可能理解它。
而事实上,这个时间并不完全是记录到磁盘的时间,它被检查了。
如果你没有检查,那就别管它了。
你知道这个主题是关于什么的吗?
给我看看测试结果,否则就给我滚出去。
这样吧,聪明的家伙,至少给我看一个可靠的方法来检验你的意思,我就保释,承认我不明白,否则就承认你自己不明白,道歉,或者保释自己出去。
也就是--至少有一个100%可靠的方法可以通过实验验证终端到底是什么时候写到日志的,即主选项。
1. 终端在队列中收到打印 命令的时间。
2. 打印命令开始的时间。
3. 缓冲区内打印的终止时间)。
这个变体可能是确切的时间。
4. 打印执行到磁盘的时间。
这样吧,聪明人,你至少给我看一个可靠的方法来检查你的意思,我就保释,承认我没有理解,否则就承认你自己不理解,道歉,或者保释自己。
也就是--至少有一个100%可靠的方法可以通过实验验证终端到底是什么时候写到日志的,即主选项。
1. 终端在队列中收到打印命令的时间。
2. 打印命令开始的时间。
3. 缓冲区内打印的终止时间)。
这个变体可能是确切的时间。
4. 打印到磁盘的执行时间。
那么,这有什么意义呢?
等待你的代码...
那么是什么情况呢?
等待你的代码...
你在等待什么代码?我向你保证过什么吗?价格是多少来着)。
你也像你的朋友一样,没有理解我在说什么。在辩论进行的同时,我做了另一个实验。
我的意思是,在初始化过程中,我以一微秒为单位计时。
在每次打印之前,我都会再次钻研时间。
理想情况下,它应该是这样的
但很多时候,结果是这样的(对数曝光)。
因此,在调用打印时,当地时间 被写入打印。
但它不适合4秒...