mql5语言的特点、微妙之处以及技巧 - 页 239 1...232233234235236237238239240241242243244245246247 新评论 fxsaber 2024.01.04 23:04 #2381 Anatoli Kazharski #:如何确定某个符号是否有数据,以便在没有数据时不会将其留在 [Market Watch] 窗口中? SymbolInfoTick. Anatoli Kazharski 2024.01.04 23:30 #2382 fxsaber #:SymbolInfoTick. 我试过这个选项。不幸的是,它不起作用。如果一个符号首次添加到[Market Watch]窗口,它还没有数据,SymbolInfoTick 就会返回空值。 我还测试了CopyXXX 函数,但它们没有超时,等待服务器数据的过程持续了大约 45 秒,时间太长了。 我需要一种快速方法来确定某个字符是否不可用。我指的是这样的情况: //--- 这种符号在服务器上没有数据,需要一种方法来识别它们,这样它们就不会被添加到[市场总览]窗口,或者如果被添加到[市场总览]窗口,也不会从列表中移除。 附注:也许有某种方法可以取消从[ 市场观察]窗口列表中删除符号的锁定? fxsaber 2024.01.05 02:37 #2383 Anatoli Kazharski #:我试过这个选项。不幸的是,它不起作用。如果一个符号首次添加到 [Market Watch] 窗口,它还没有数据,SymbolInfoTick 返回空值。通过手动操作很容易获得有效的符号。 点击几下即可将所有符号添加到市场观察窗口。 几秒钟后,就能收到这些符号上的刻度。 单击鼠标即可按时间排序。 使用 Del 键删除所获列表中的一个尾部。 所有这些操作最多需要半分钟。 Vladimir Pastushak 2024.01.05 04:23 #2384 Anatoli Kazharski #:我试过这个选项。不幸的是,它不起作用。如果一个符号首次添加到 [Market Watch] 窗口,它还没有数据,SymbolInfoTick 返回空值。我还测试了CopyXXX 函数,但它们没有超时,等待服务器数据的过程持续了大约 45 秒,时间太长了。我需要一种快速方法来确定某个字符是否不可用。我指的是这样的情况://---这些符号在服务器上没有数据,需要一种方法来识别它们,以便它们不会被添加到[市场观察]窗口中,或者如果被添加到窗口中,也不会从列表中移除。附注:也许有办法取消从[市场 观察]窗口列表中删除符号的锁定? 我已经为这个问题困扰了大约 6 年,我请求开发人员把这里的事情处理得井井有条。 遗憾的是,这个问题一直没有得到解决,目前,当任何人第一次访问金融工具时,都会出现终端挂起的情况。 Alexey Viktorov 2024.01.05 07:40 #2385 Anatoli Kazharski #:如何确定某个符号是否有数据,以便在没有数据时不会将其留在 [Market Watch] 窗口中?我在一个循环中使用这种检查:但在此之后,当 Expert Advisor 处于图表上时, 我无法手动将符号从[Market Watch]窗口中逐个或一次全部 删除: 尝试检查最后一次报价的时间。 SymbolInfoInteger(name, SYMBOL_TIME); 如果为 0,则没有数据。 我刚刚通过打开的图表进行了检查。 2024.01.05 10:38:43.783 !00 (GBPUSD,H1) USDCAD 2024.01.05 09:38:51 2024.01.05 10:38:43.783 !00 (GBPUSD,H1) NZDUSD 2024.01.05 09:38:51 2024.01.05 10:38:43.783 !00 (GBPUSD,H1) USDCAD 2024.01.05 09:38:51 2024.01.05 10:38:43.783 !00 (GBPUSD,H1) EURGBP 2024.01.05 09:38:49 2024.01.05 10:38:43.783 !00 (GBPUSD,H1) GBPUSD 2024.01.05 09:38:49 2024.01.05 10:38:43.783 !00 (GBPUSD,H1) POZ3 1970.01.01 00:00:00 2024.01.05 10:38:43.783 !00 (GBPUSD,H1) EDH4 1970.01.01 00:00:00 2024.01.05 10:38:43.783 !00 (GBPUSD,H1) BRZ3 1970.01.01 00:00:00 Nauris Zukas 2024.01.05 07:48 #2386 可以通过在服务器之间切换来获取更多数据。我不知道这是否可以通过代码来实现。 JRandomTrader 2024.01.05 08:28 #2387 Nauris Zukas #: 通过在服务器之间切换可以获得额外的数据。我不知道是否可以通过代码来实现。 如果你说的 "服务器之间 "是指 "经纪商之间",那么几乎不可能,除非你尝试使用配置文件。 但如果我真的需要在一个经纪商的不同服务器之间切换(Open 有很多服务器,Finam 有两个),我会通过 iptables/nftables 和我的 bash 脚本来实现。但对我来说这更容易,因为我用的是 Linux。 Nauris Zukas 2024.01.05 08:52 #2388 JRandomTrader #:如果 "服务器之间 "是指 "经纪人之间"。 . JRandomTrader 2024.01.05 09:16 #2389 Nauris Zukas #: 是的,原则上是可以的。 但是,由于无法从 MQL 程序中找出服务器的名称和 IP 地址,您必须通过切换服务器并检查连接到哪个 IP 地址来手动找出它们。 然后可以更改防火墙配置,禁止连接到某些服务器(这里需要重新劫持数据包,而不是丢弃数据包以避免超时),迫使 MT 切换到另一个服务器。 再说一遍,在 Linux 下做到这一点并不难,但我无法想象在 Windows 下如何做到这一点。 Anatoli Kazharski 2024.01.05 11:19 #2390 Alexey Viktorov #:试着查看最后一次引用的时间。如果为 0,则没有数据。我刚刚根据开放图表进行了检查。 这也适用于类似情况: 我试过这个选项。不幸的是,它并不适合。如果一个符号是第一次添加到 [Market Watch] 窗口,那么它还没有数据, SymbolInfoTick 返回的值为空。 如果勾选很少出现,所有此类符号都将被排除。 fxsaber#: 手动获取工作符号很容易。 点击几下即可将所有符号添加到市场观察中。 几秒钟后就会收到这些符号的刻度。 单击鼠标即可按时间排序。 使用 Del 键删除所获列表中的一个尾部。 所有这一切最多需要半分钟。 不,您需要的是全自动。 弗拉基米尔-帕斯图沙克#: 我已经和这个问题斗争了 6 年,我要求开发人员把秩序放在这里。不幸的是,这个问题并没有得到解决,目前还存在这样的情况:当任何人第一次访问金融工具时,终端就会挂起。 我只是在调用以下函数时才注意到这个问题: Bars() iBars() SeriesInfoInteger(symbol, PERIOD_M1, SERIES_BARS_COUNT) //--- 终端开发人员 1. 排除在交易服务器上添加无数据符号的可能性。 2.2. 使[市场观察]窗口中的符号删除阻止功能失效,如果是错误,则进行修复。现在只能通过重启终端来实现。 3.3. 对于CopyXXX 等功能,增加一个可选参数,用于设置超时(从服务器等待数据的最长时间)。 我现在无法重现这个问题。到目前为止,它能正常工作,没有延迟。但似乎在某些情况下会出现这种情况。 4. 修复在下列情况下使用Bars()、iBars()、SeriesInfoInteger(symbol, PERIOD_M1, SERIES_BARS_COUNT) 函数时出现的无限等待错误: 与服务器无连接 符号上无数据 试图从图表中删除程序可能会导致终端挂起数分钟。 5.5. 修复了在未连接服务器的情况下使用函数时出现的无限等待错误: SeriesInfoInteger(symbol, PERIOD_M1, SERIES_FIRSTDATE) SeriesInfoInteger(symbol, PERIOD_M1, SERIES_LASTBAR_DATE) SeriesInfoInteger(symbol, PERIOD_M1, SERIES_SERVER_FIRSTDATE) 在这种情况下,您还可以添加一个额外的可选参数来设置超时(从服务器等待数据的最长时间)。 //--- 附注:到目前为止,我已经确定了使用CopyXXX 等函数检查数据的变体。但我会观察上述问题是否会再次出现。 Features of the mql5 MQL5 细则手册:指标子窗口控件 - 滚动条 如何准备 MetaTrader 5 报价用于其他应用程序 1...232233234235236237238239240241242243244245246247 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
如何确定某个符号是否有数据,以便在没有数据时不会将其留在 [Market Watch] 窗口中?
SymbolInfoTick.
SymbolInfoTick.
我试过这个选项。不幸的是,它不起作用。如果一个符号首次添加到[Market Watch]窗口,它还没有数据,SymbolInfoTick 就会返回空值。
我还测试了CopyXXX 函数,但它们没有超时,等待服务器数据的过程持续了大约 45 秒,时间太长了。
我需要一种快速方法来确定某个字符是否不可用。我指的是这样的情况:
//---
这种符号在服务器上没有数据,需要一种方法来识别它们,这样它们就不会被添加到[市场总览]窗口,或者如果被添加到[市场总览]窗口,也不会从列表中移除。
附注:也许有某种方法可以取消从[ 市场观察]窗口列表中删除符号的锁定?
我试过这个选项。不幸的是,它不起作用。如果一个符号首次添加到 [Market Watch] 窗口,它还没有数据,SymbolInfoTick 返回空值。
通过手动操作很容易获得有效的符号。
我试过这个选项。不幸的是,它不起作用。如果一个符号首次添加到 [Market Watch] 窗口,它还没有数据,SymbolInfoTick 返回空值。
我还测试了CopyXXX 函数,但它们没有超时,等待服务器数据的过程持续了大约 45 秒,时间太长了。
我需要一种快速方法来确定某个字符是否不可用。我指的是这样的情况:
//---
这些符号在服务器上没有数据,需要一种方法来识别它们,以便它们不会被添加到[市场观察]窗口中,或者如果被添加到窗口中,也不会从列表中移除。
附注:也许有办法取消从[市场 观察]窗口列表中删除符号的锁定?
我已经为这个问题困扰了大约 6 年,我请求开发人员把这里的事情处理得井井有条。
遗憾的是,这个问题一直没有得到解决,目前,当任何人第一次访问金融工具时,都会出现终端挂起的情况。
如何确定某个符号是否有数据,以便在没有数据时不会将其留在 [Market Watch] 窗口中?
我在一个循环中使用这种检查:
但在此之后,当 Expert Advisor 处于图表上时, 我无法手动将符号从[Market Watch]窗口中逐个或一次全部 删除:
尝试检查最后一次报价的时间。
如果为 0,则没有数据。
我刚刚通过打开的图表进行了检查。
通过在服务器之间切换可以获得额外的数据。我不知道是否可以通过代码来实现。
如果你说的 "服务器之间 "是指 "经纪商之间",那么几乎不可能,除非你尝试使用配置文件。
但如果我真的需要在一个经纪商的不同服务器之间切换(Open 有很多服务器,Finam 有两个),我会通过 iptables/nftables 和我的 bash 脚本来实现。但对我来说这更容易,因为我用的是 Linux。
如果 "服务器之间 "是指 "经纪人之间"。
.
是的,原则上是可以的。
但是,由于无法从 MQL 程序中找出服务器的名称和 IP 地址,您必须通过切换服务器并检查连接到哪个 IP 地址来手动找出它们。
然后可以更改防火墙配置,禁止连接到某些服务器(这里需要重新劫持数据包,而不是丢弃数据包以避免超时),迫使 MT 切换到另一个服务器。
再说一遍,在 Linux 下做到这一点并不难,但我无法想象在 Windows 下如何做到这一点。
试着查看最后一次引用的时间。
如果为 0,则没有数据。
我刚刚根据开放图表进行了检查。
这也适用于类似情况:
如果勾选很少出现,所有此类符号都将被排除。
手动获取工作符号很容易。
不,您需要的是全自动。
我已经和这个问题斗争了 6 年,我要求开发人员把秩序放在这里。
不幸的是,这个问题并没有得到解决,目前还存在这样的情况:当任何人第一次访问金融工具时,终端就会挂起。
我只是在调用以下函数时才注意到这个问题:
//---
终端开发人员
1. 排除在交易服务器上添加无数据符号的可能性。
2.2. 使[市场观察]窗口中的符号删除阻止功能失效,如果是错误,则进行修复。现在只能通过重启终端来实现。
3.3. 对于CopyXXX 等功能,增加一个可选参数,用于设置超时(从服务器等待数据的最长时间)。
我现在无法重现这个问题。到目前为止,它能正常工作,没有延迟。但似乎在某些情况下会出现这种情况。
4. 修复在下列情况下使用Bars()、iBars()、SeriesInfoInteger(symbol, PERIOD_M1, SERIES_BARS_COUNT) 函数时出现的无限等待错误:
试图从图表中删除程序可能会导致终端挂起数分钟。
5.5. 修复了在未连接服务器的情况下使用函数时出现的无限等待错误:
在这种情况下,您还可以添加一个额外的可选参数来设置超时(从服务器等待数据的最长时间)。
//---
附注:到目前为止,我已经确定了使用CopyXXX 等函数检查数据的变体。但我会观察上述问题是否会再次出现。