实时的提基 - 页 7 1234567891011121314...26 新评论 fxsaber 2020.01.30 23:42 #61 prostotrader: 你必须张贴你的代码来证明或反驳一些东西! 你自己去证明相邻的OnTick事件之间有记录,然后进入CopyTicks-历史,并可以通过OnBookEvent实时捕获。 不幸的是,上面的日志并没有显示这一点。 prostotrader 2020.01.30 23:46 #62 fxsaber: 你正在证明相邻的OnTick事件之间存在记录,然后进入CopyTicks历史,并可以通过OnBookEvent实时捕捉。 不幸的是,上面的日志并没有显示这一点。 我通过发布工作代码证明了这一点,并解释了为什么它工作得更快,而且是实时的。 我是基于MQL5功能的 帮助和个人经验。 想自己检查一下吗?或者用一个工作代码来证明相反的情况。 fxsaber 2020.01.30 23:49 #63 prostotrader: 我通过发布工作代码和解释为什么它工作得更快、更实时来证明这一点。 不幸的是,当缺少OnTick CopyTicks-history条目形式的主要证明环节时,不能被接受。 prostotrader 2020.01.30 23:51 #64 fxsaber: 不幸的是,当缺少OnTick CopyTicks-history记录形式的证明的主要环节时,它不能被接受。 那么问题出在哪里? 自己去看看吧。 fxsaber 2020.01.30 23:56 #65 prostotrader: 那么它是什么呢? 自己去看看吧。 只是指出你的证明不能仅凭逻辑上的理由而被接受,而不是与任何其他观点相矛盾。 prostotrader 2020.01.31 00:07 #66 fxsaber: 只是指出你的证明不能仅仅因为逻辑原因而被接受,而不是因为与任何其他观点相矛盾。 好的,我明白了,但我还是建议阅读OnBookEvent()的帮助。 我不打算证明什么,我只是在主题中写 了一些工作 代码,并解释(应论坛用户的要求)。 为什么这个方法比OnTick()好,如果有人不相信 我,让他自己检查一下吧 或者贴出一个能反驳我的解释的工作代码。 由以下人员添加 论坛上有成千上万的 外汇交易者,他们从未使用过OnBookEvent()。 并且有一个tumblr。 我应该为每一个会在这个线程中发帖的人做些什么呢? Andrey Khatimlianskii 2020.01.31 08:36 #67 prostotrader:第一次OnTick()的时间2020.01.30 19:31:11.112秒的时间 OnTick()2020.01.30 19:31:11.802也就是说,690毫秒已经过去了,同时,在这690毫秒的OnTick()之间的OnBookEvent()被触发了15次你认为这些点击声与蜱虫没有 关系吗? 除非你在堆栈中调用一个不影响边缘带(买入/卖出)或翻转器的变化,那么是的,这些触发器与跳动没有关系。 prostotrader: 还有一个基本点,很多人都忘记了。这是EA通过分析输入数据做出决定的速度。使用OnBookEvent()而不是OnTick(),我的EA会比 你的快。 你错了,我已经告诉你一千次了。 你可以在一个终端上的两个图表上运行这个EA:一个是 "使用OnBookEvent "模式,第二个是 "使用OnTick "模式(这是输入参数)。事件处理程序内部的代码是相同的(你可以把它放在一个单独的函数中,并从那里调用它,但这不是重点)。 //--- enum ENUM_BOOK_OR_TICK { USE_BOOK, // Use OnBookEvent USE_TICK // Use OnTick }; input ENUM_BOOK_OR_TICK Mode = USE_BOOK; //--- bool is_book; long last_tick_time = 0; MqlTick cur_ticks[], last_tick; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { if ( Mode == USE_BOOK ) { is_book = MarketBookAdd(Symbol()); if ( !is_book ) Alert( "MarketBookAdd failed with error #", GetLastError(), "!" ); } last_tick_time = 0; 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 ( Mode != USE_BOOK || symbol != _Symbol ) return; if ( last_tick_time <= 0 ) { if ( CopyTicks( _Symbol, cur_ticks, COPY_TICKS_ALL, 0, 1 ) > 0 ) { last_tick_time = cur_ticks[0].time_msc; last_tick = cur_ticks[0]; } } if ( last_tick_time > 0 ) { int new_ticks = CopyTicks( _Symbol, cur_ticks, COPY_TICKS_ALL, last_tick_time, 0 ); for ( int i = 0; i < new_ticks; i ++ ) { PrintTick( "OnBook", cur_ticks[i] ); } if ( new_ticks > 0 ) { last_tick_time = cur_ticks[new_ticks-1].time_msc; last_tick = cur_ticks[new_ticks-1]; } } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnTick() { if ( Mode != USE_TICK ) return; if ( last_tick_time <= 0 ) { if ( CopyTicks( _Symbol, cur_ticks, COPY_TICKS_ALL, 0, 1 ) > 0 ) { last_tick_time = cur_ticks[0].time_msc; last_tick = cur_ticks[0]; } } if ( last_tick_time > 0 ) { int new_ticks = CopyTicks( _Symbol, cur_ticks, COPY_TICKS_ALL, last_tick_time, 0 ); for ( int i = 0; i < new_ticks; i ++ ) { PrintTick( "OnTick", cur_ticks[i] ); } if ( new_ticks > 0 ) { last_tick_time = cur_ticks[new_ticks-1].time_msc; last_tick = cur_ticks[new_ticks-1]; } } } void PrintTick( string func_name, MqlTick &tick ) { if ( tick.time_msc == last_tick.time_msc && tick.bid == last_tick.bid && tick.ask == last_tick.ask && tick.last == last_tick.last ) return; Print( GetTickCount64(), ": tick received from ", func_name, ": ", tick.time, " ", tick.time_msc, " ", DoubleToString( tick.bid, _Digits ), " / ", DoubleToString( tick.ask, _Digits ), " / ", DoubleToString( tick.last, _Digits ) ); }; 然后查看EA的日志,分析收到tick的时间。 如果你发现一些有趣的事情(例如,从OnTick获得一个tick(GetTickCount64)的时间比从OnBook获得同样的时间(对于同一个tick)要长),请在这里发表。 prostotrader 2020.01.31 10:54 #68 Andrey Khatimlianskii: 如果你不调用杯中的变化,不影响边缘带(买入/卖出)或翻牌,那么是的,这些触发器与跳动没有关系。 你错了,我已经告诉你一千次了。 在一个终端上的两个图表上运行该EA:一个是 "使用OnBookEvent "模式,另一个是 "使用OnTick "模式(这是输入参数)。事件处理程序内部的代码是相同的(你可以把它放在一个单独的函数中,并从那里调用它,但这不是重点)。 然后查看EA的日志,分析收到tick的时间。 如果你发现一些有趣的事情(例如,从OnTick获得一个tick(GetTickCount64)的时间比从OnBook获得的类似时间(对于相同的tick)要长),请在这里发表。 这就像我说的那样! 在日志的第一行(联合工作)是对我的解释的直接确认 OnTick()触发较晚,因此接收到的是过时的数据 附加的文件: 20200131.log 220 kb Andrey Khatimlianskii 2020.01.31 11:03 #69 prostotrader: 这就像我说的那样! 在日志的第一行(合作工作),直接确认了我的解释 OnTick()的触发时间较晚,所以它得到的是过期的数据 在这篇日志前显示一些信息。 是在发射后(最开始的条目)吗?你是按照什么顺序运行这些EA的? ps:见附件中的日志,现在就去看一下。 prostotrader 2020.01.31 11:03 #70 Andrey Khatimlianskii: 在这篇日志前显示一些信息。 是在推出之后(最开始的条目)吗?你是按照什么顺序运行这些EA的? 首先是本册,然后是本体,上面附有日志 1234567891011121314...26 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你必须张贴你的代码来证明或反驳一些东西!
你自己去证明相邻的OnTick事件之间有记录,然后进入CopyTicks-历史,并可以通过OnBookEvent实时捕获。
不幸的是,上面的日志并没有显示这一点。
你正在证明相邻的OnTick事件之间存在记录,然后进入CopyTicks历史,并可以通过OnBookEvent实时捕捉。
不幸的是,上面的日志并没有显示这一点。
我通过发布工作代码证明了这一点,并解释了为什么它工作得更快,而且是实时的。
我是基于MQL5功能的 帮助和个人经验。
想自己检查一下吗?或者用一个工作代码来证明相反的情况。
我通过发布工作代码和解释为什么它工作得更快、更实时来证明这一点。
不幸的是,当缺少OnTick CopyTicks-history条目形式的主要证明环节时,不能被接受。
不幸的是,当缺少OnTick CopyTicks-history记录形式的证明的主要环节时,它不能被接受。
那么问题出在哪里?
自己去看看吧。
那么它是什么呢?
自己去看看吧。
只是指出你的证明不能仅凭逻辑上的理由而被接受,而不是与任何其他观点相矛盾。
只是指出你的证明不能仅仅因为逻辑原因而被接受,而不是因为与任何其他观点相矛盾。
好的,我明白了,但我还是建议阅读OnBookEvent()的帮助。
我不打算证明什么,我只是在主题中写 了一些工作 代码,并解释(应论坛用户的要求)。
为什么这个方法比OnTick()好,如果有人不相信 我,让他自己检查一下吧
或者贴出一个能反驳我的解释的工作代码。
由以下人员添加
论坛上有成千上万的 外汇交易者,他们从未使用过OnBookEvent()。
并且有一个tumblr。
我应该为每一个会在这个线程中发帖的人做些什么呢?
第一次OnTick()的时间2020.01.30 19:31:11.112
秒的时间 OnTick()2020.01.30 19:31:11.802
也就是说,690毫秒已经过去了,同时,在这690毫秒的OnTick()之间的
OnBookEvent()被触发了15次
你认为这些点击声与蜱虫没有 关系吗?
除非你在堆栈中调用一个不影响边缘带(买入/卖出)或翻转器的变化,那么是的,这些触发器与跳动没有关系。
还有一个基本点,很多人都忘记了。
这是EA通过分析输入数据做出决定的速度。
使用OnBookEvent()而不是OnTick(),我的EA会比 你的快。
你错了,我已经告诉你一千次了。
你可以在一个终端上的两个图表上运行这个EA:一个是 "使用OnBookEvent "模式,第二个是 "使用OnTick "模式(这是输入参数)。事件处理程序内部的代码是相同的(你可以把它放在一个单独的函数中,并从那里调用它,但这不是重点)。
然后查看EA的日志,分析收到tick的时间。
如果你发现一些有趣的事情(例如,从OnTick获得一个tick(GetTickCount64)的时间比从OnBook获得同样的时间(对于同一个tick)要长),请在这里发表。
如果你不调用杯中的变化,不影响边缘带(买入/卖出)或翻牌,那么是的,这些触发器与跳动没有关系。
你错了,我已经告诉你一千次了。
在一个终端上的两个图表上运行该EA:一个是 "使用OnBookEvent "模式,另一个是 "使用OnTick "模式(这是输入参数)。事件处理程序内部的代码是相同的(你可以把它放在一个单独的函数中,并从那里调用它,但这不是重点)。
然后查看EA的日志,分析收到tick的时间。
如果你发现一些有趣的事情(例如,从OnTick获得一个tick(GetTickCount64)的时间比从OnBook获得的类似时间(对于相同的tick)要长),请在这里发表。
这就像我说的那样!
在日志的第一行(联合工作)是对我的解释的直接确认
OnTick()触发较晚,因此接收到的是过时的数据
这就像我说的那样!
在日志的第一行(合作工作),直接确认了我的解释
OnTick()的触发时间较晚,所以它得到的是过期的数据
在这篇日志前显示一些信息。
是在发射后(最开始的条目)吗?你是按照什么顺序运行这些EA的?
ps:见附件中的日志,现在就去看一下。
在这篇日志前显示一些信息。
是在推出之后(最开始的条目)吗?你是按照什么顺序运行这些EA的?
首先是本册,然后是本体,上面附有日志