MQL4实时时钟(逐秒)。 - 页 4 123456 新评论 AIRAT SAFIN 2011.03.09 16:29 #31 很好,但这不是实时解决方案,因为我们不能控制 非tick事件的响应时间。 在 "sleep() "的情况下,我们可以。 [删除] 2011.03.09 16:44 #32 因此,如果我们把逐个滴答和陈旧的价格与睡眠结合起来,那么我们就可以有一个实时时钟了 :) zzuegg 2011.03.09 16:46 #33 正如我所说的,如果这个解决方案在EA中实施,就不再需要TimeCurrent(),循环是由Sleep(Interval-Runtime)控制的(单位:ms)。 大部分的代码保持不变,不再需要redraw()了。另外,如果你需要提高代码的速度,你可以使用一些(啊,我错过了英文单词)带有旋转零点的数组来摆脱移位循环。 AFAIK这(或类似)是最好的解决方案,可以在纯MQL的指标中完成。当你使用DLL并在外部程序中导出 计算结果时,肯定存在更好的解决方案。 zzuegg 2011.03.09 16:47 #34 spidermagos: 因此,如果我们把逐个滴答和陈旧的价格与睡眠结合起来,那么我们就可以有一个实时时钟了 :) 是的,但睡眠在指标中是不可能的,这就是你的问题,从这个主题的开始。 [删除] 2011.03.09 16:50 #35 zzuegg: 是的,但睡眠在指标中是不可能的,这就是你的问题,从这个话题的开始。 一个EA可以调用一个指标吗? zzuegg 2011.03.09 17:22 #36 是的,但只能通过icustom来解决你的问题。 bernd 2011.03.09 18:58 #37 你可以在图表上附加一个脚本,每秒钟向图表发送一个假刻度。这就是我通常做的,以定期更新多对指标和EA。 zzuegg 2011.03.09 20:18 #38 7bit: 你可以在图表上附加一个脚本,每秒钟向图表发送一个假刻度。这就是我通常做的,以定期更新多对指标和EA。 你需要一个dll,还是没有dll也可以这样做? bernd 2011.03.09 20:32 #39 zzuegg: 你需要一个dll,还是不需要就能做到?它只是mql4中的几行(当然你需要DLL调用允许调用windows API,但你不需要安装任何东西)。 /** * MT4/experts/scripts/ticks.mq4 * send a fake tick every 1000ms to the chart and * all its indicators and EA until this script is removed. */ #property copyright "© Bernd Kreuss" #import "user32.dll" int PostMessageA(int hWnd, int Msg, int wParam, int lParam); int RegisterWindowMessageA(string lpString); #import int start(){ int hwnd = WindowHandle(Symbol(), Period()); int msg = RegisterWindowMessageA("MetaTrader4_Internal_Message"); while(!IsStopped()){ PostMessageA(hwnd, msg, 2, 1); Sleep(1000); } } 我把这个脚本放在我的收藏夹里,当我需要ticks时,我只需把它拖到图表上。 我还有一个没有循环的变体,它只发送一个刻度线,然后退出,并将其(one_tick.mq4)与热键ALT+T绑定,现在我只要按ALT-T就可以向活动图表发送一个刻度线。在周末进行实验时,我的一些stat-arb EAs需要这样做,以执行start()来触发他们的计算和绘制图表(我可以在图表上移动线条来改变间隔时间,然后我需要一个新的tick来更新他们的计算)。 zzuegg 2011.03.09 20:52 #40 很好,谢谢你的分享 123456 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
很好,但这不是实时解决方案,因为我们不能控制 非tick事件的响应时间。
在 "sleep() "的情况下,我们可以。
因此,如果我们把逐个滴答和陈旧的价格与睡眠结合起来,那么我们就可以有一个实时时钟了 :)
正如我所说的,如果这个解决方案在EA中实施,就不再需要TimeCurrent(),循环是由Sleep(Interval-Runtime)控制的(单位:ms)。
大部分的代码保持不变,不再需要redraw()了。另外,如果你需要提高代码的速度,你可以使用一些(啊,我错过了英文单词)带有旋转零点的数组来摆脱移位循环。
AFAIK这(或类似)是最好的解决方案,可以在纯MQL的指标中完成。当你使用DLL并在外部程序中导出 计算结果时,肯定存在更好的解决方案。
因此,如果我们把逐个滴答和陈旧的价格与睡眠结合起来,那么我们就可以有一个实时时钟了 :)
是的,但睡眠在指标中是不可能的,这就是你的问题,从这个话题的开始。
一个EA可以调用一个指标吗?
你可以在图表上附加一个脚本,每秒钟向图表发送一个假刻度。这就是我通常做的,以定期更新多对指标和EA。
你需要一个dll,还是不需要就能做到?
它只是mql4中的几行(当然你需要DLL调用允许调用windows API,但你不需要安装任何东西)。
我把这个脚本放在我的收藏夹里,当我需要ticks时,我只需把它拖到图表上。
我还有一个没有循环的变体,它只发送一个刻度线,然后退出,并将其(one_tick.mq4)与热键ALT+T绑定,现在我只要按ALT-T就可以向活动图表发送一个刻度线。在周末进行实验时,我的一些stat-arb EAs需要这样做,以执行start()来触发他们的计算和绘制图表(我可以在图表上移动线条来改变间隔时间,然后我需要一个新的tick来更新他们的计算)。
很好,谢谢你的分享