build 216 bug ? isConnected() returns false but metatrader still connected - 页 2 1234 新评论 [Deleted] 2008.05.07 18:28 #11 好的,是的,我知道了......嗯......我们将看看它是否会回来;) [Deleted] 2008.05.16 21:33 #12 Hi Stringo, 不幸的是,这个错误一直存在。 当运行下面的测试脚本并从一个账户切换到另一个账户时(在我的测试案例中,我使用了2或3个不同经纪商的账户,并从一个账户切换到另一个账户),你可以看到,在几个账户变化(相当随机的数字)之后,connectionState真的没有变回1,它保持在0,即使终端_是连接的。 在你看来,这可能不是一个关键的错误。然而,对于一些开发显示连接状态的脚本的人来说,所进行的测试的结果是相当惊人的。 这就是为什么我非常感谢你能再看一下这个问题。 这里是测试脚本。 //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { while(!IsStopped()) { Print("test"+IsConnected()); Sleep(500); } } 您真诚的感谢。 丹尼尔. DrSpock 2008.05.26 04:50 #13 我也可以确认,这个错误存在于Build 216中。它似乎发生在一些 "连接失败"--登录序列之后。 Slava 2008.05.26 11:20 #14 是的,这个脚本是已知的。但我们应该重现环境来检测问题。然而,我们不能重现 Liliput 2008.05.28 08:41 #15 我也必须确认同样的错误。在我的EA中,我同时检查 连接是否存在。如果不存在,我的脚本就会退出。 有没有人找到解决这个问题的方法? Slava 2008.05.28 09:47 #16 脚本不能确定问题,因为它是无休止的循环和独立于传入刻度的。 问题只能显示专家。简单的专家,只有一行代码 - Print(IsConnected())。 滴答声响起(这意味着终端已连接)--启动函数运行--哎呀!IsConnected()返回0(即错误)。 Liliput 2008.05.28 17:36 #17 谢谢 是的,我在使用 int start() { while(true) { if(IsConnected()) { ....... i do my work { else {return(-1);} // so if connection was lost i break the infiny loop } } 问题是,当连接恢复时,IsConnected()保持旧值为假,不改变为真!但是我看到了价格的变化,并且终端100%连接。这是一个错误,因为无限循环被破坏了,并且在连接恢复后的第一个点上没有发生任何事情,所以启动被执行。但由于某些原因,Is Connected()仍然返回错误。如果我把EA从图表中删除,然后再把它放进去,一切都会正常,直到下一次连接丢失。 这让我抓狂。请想办法解决这个问题。 谢谢 ukt 2008.05.28 17:50 #18 Liliput - 如果以上是start()的使用概要,为什么要用infinit循环留在里面? 我问的原因是,正常的方法是:输入 > 我想工作吗? 不:返回 > 工作 > 返回 (正常--当然是主观的;o) 不是告诉你如何设计--那是你的事,只是问你的理由,然后我学到更多/看到不同的做事方法 我为什么要问? 我不知道终端是如何表现的,例如,如果一个EA拒绝返回它,可能有许多 数据点,因为EA没有返回,终端只是没有调用start()......或者 - 它只是没有调用,最终由于许多 数据点流过而没有能够调用EA的start(),终端进入未知的深度,表现出连接问题? ;) Edi Dimitrovski 2008.05.28 20:02 #19 这是否可以解决这个问题呢? string FILE[1]; int MOVE[1]; void init() { FILE[0]=Symbol(); } int start() { //---- check connection if ( !Connection() ) return(0); //---- return(0); } bool Connection() { int d; bool connect; RefreshRates(); for ( d=0; d<ArraySize(FILE); d++) { if ( MOVE[d] != MarketInfo(FILE[d],5) ) { MOVE[d] = MarketInfo(FILE[d],5); /* if ( !connect ) */ connect=1; } } return(connect); } Liliput 2008.05.28 22:49 #20 ukt: Liliput - 如果以上是start()的使用概要,为什么要用infinit循环留在里面? 我问的原因是,正常的方法是:输入 > 我想工作吗? 不:返回 > 工作 > 返回 (正常--当然是主观的;o) 不是告诉你如何设计--那是你的事,只是问你的理由,然后我学到更多/看到不同的做事方法 我为什么要问? 我不知道终端是如何表现的,例如,如果一个EA拒绝返回它,可能有许多 数据点,因为EA没有返回,终端只是没有调用start()......或者 - 它只是没有调用,最终由于许多 数据点流过而没有能够调用EA的start(),终端进入了未知的深度,表现出连接问题? ;) ukt,没问题,我会回答。我做infinit循环是因为我需要做很多操作,我不想等待新的tick来做这些操作。所以我通过这种方式从终端获取控制权,并在我需要和想要的时候做我的工作。我使用RefreshRates()来获取实际数据。 因此,检查与经纪人的连接是否存在是合乎逻辑的,因为我发送/关闭/修改订单,如果没有连接就没有工作。 1234 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
Hi Stringo,
不幸的是,这个错误一直存在。
当运行下面的测试脚本并从一个账户切换到另一个账户时(在我的测试案例中,我使用了2或3个不同经纪商的账户,并从一个账户切换到另一个账户),你可以看到,在几个账户变化(相当随机的数字)之后,connectionState真的没有变回1,它保持在0,即使终端_是连接的。
在你看来,这可能不是一个关键的错误。然而,对于一些开发显示连接状态的脚本的人来说,所进行的测试的结果是相当惊人的。
这就是为什么我非常感谢你能再看一下这个问题。
这里是测试脚本。
您真诚的感谢。
丹尼尔.
我也必须确认同样的错误。在我的EA中,我同时检查 连接是否存在。如果不存在,我的脚本就会退出。
有没有人找到解决这个问题的方法?
脚本不能确定问题,因为它是无休止的循环和独立于传入刻度的。
问题只能显示专家。简单的专家,只有一行代码 - Print(IsConnected())。
滴答声响起(这意味着终端已连接)--启动函数运行--哎呀!IsConnected()返回0(即错误)。
谢谢
是的,我在使用
问题是,当连接恢复时,IsConnected()保持旧值为假,不改变为真!但是我看到了价格的变化,并且终端100%连接。这是一个错误,因为无限循环被破坏了,并且在连接恢复后的第一个点上没有发生任何事情,所以启动被执行。但由于某些原因,Is Connected()仍然返回错误。如果我把EA从图表中删除,然后再把它放进去,一切都会正常,直到下一次连接丢失。
这让我抓狂。请想办法解决这个问题。
谢谢
Liliput - 如果以上是start()的使用概要,为什么要用infinit循环留在里面?
我问的原因是,正常的方法是:输入 > 我想工作吗? 不:返回 > 工作 > 返回
(正常--当然是主观的;o)
不是告诉你如何设计--那是你的事,只是问你的理由,然后我学到更多/看到不同的做事方法
我为什么要问?
我不知道终端是如何表现的,例如,如果一个EA拒绝返回它,可能有许多 数据点,因为EA没有返回,终端只是没有调用start()......或者 - 它只是没有调用,最终由于许多 数据点流过而没有能够调用EA的start(),终端进入未知的深度,表现出连接问题?
;)
这是否可以解决这个问题呢?
Liliput - 如果以上是start()的使用概要,为什么要用infinit循环留在里面?
我问的原因是,正常的方法是:输入 > 我想工作吗? 不:返回 > 工作 > 返回
(正常--当然是主观的;o)
不是告诉你如何设计--那是你的事,只是问你的理由,然后我学到更多/看到不同的做事方法
我为什么要问?
我不知道终端是如何表现的,例如,如果一个EA拒绝返回它,可能有许多 数据点,因为EA没有返回,终端只是没有调用start()......或者 - 它只是没有调用,最终由于许多 数据点流过而没有能够调用EA的start(),终端进入了未知的深度,表现出连接问题?
;)
ukt,没问题,我会回答。我做infinit循环是因为我需要做很多操作,我不想等待新的tick来做这些操作。所以我通过这种方式从终端获取控制权,并在我需要和想要的时候做我的工作。我使用RefreshRates()来获取实际数据。
因此,检查与经纪人的连接是否存在是合乎逻辑的,因为我发送/关闭/修改订单,如果没有连接就没有工作。