连接了() - 页 3

 

对不起,但为什么不应该工作。

int start()

{

    while ( !IsStopped() )
    {
        IsConnectedBefore = IsConnectedNow;
        IsConnectedNow = IsConnected();
      ....

     }

}   

所以我的EA总是在while-loop中,不需要任何tick。

 

围绕PostMessageA()的整个事情,只是作为对本线程早期 "从init()调用start() "一句的回应。从init()调用start()" 在很多方面都是错误的,因此我必须对其进行评论,并提供一个适当的解决方案,即即使在周末也要从init()中强制调用start()。


对于在断开连接的状态下启动MT4 的问题,它没有提供一个解决方案。虽然我也不明白 这可能是什么用例,因为连接 来来去去,而metatrader本身应该很容易保持24/7不间断运行。即使在周末重启,通过init()中的PostMessageA(),只要重启后连接回来,它就会立即恢复start()中的循环,即使没有勾选,然后它又会一直运行,直到下一次(意外的)重启。

 
sunshineh:

对不起,但为什么不应该工作。

所以我的EA总是在while-loop中,不需要任何tick。


是的,因为你没有重新启动终端,而你没有连接到互联网,但如果你重新启动终端,而你没有连接到互联网,AE就不会在没有勾选的情况下进入循环,无论你做什么,即使你使用PostMessageA()或从init()调用Start(),唯一的方法是用脚本,因为脚本的运行不考虑是否有勾选。
 

无论如何,感谢大家的努力帮助。我决定把我的手弄脏一点,运行一个外部程序来运行脚本,故事结束。
不管怎么说,IsConnected()这个函数 还是让我发笑,如果这么简单的事情他都不涉及的话

 
7bit:

围绕PostMessageA()的整个事情,只是作为对本线程早期 "从init()调用start() "一句的回应。"从init()调用start()" 在很多方面都是错误的,因此我必须对它进行评论,并提供一个适当的解决方案 来实现同样的目的,即即使在周末也要从init()中强制调用start()。


对于在断开连接的状态下启动MT4 的问题,它没有提供一个解决方案。虽然我也不明白 这有什么用处,因为连接是 来来去去的,而metatrader本身应该很容易保持24小时不间断的运行。即使在周末重启,通过init()中的PostMessageA(),只要重启后连接回来,它就会立即恢复start()中的循环,即使没有勾选,然后它又会一直运行,直到下一次(意外的)重启。


谢谢你的插话7Bit,知道更好的方法是很有用的,我已经成功地运行了一个EA,就像我上面描述的那样,试图解决一个给我带来重大问题的问题。终端可以定期失去连接,但由于一个未知的原因,无法恢复连接。我需要在终端中手动重新扫描服务器,才能重新连接。起初我只是认为这是时间上的侥幸,但往往不是侥幸,我可以等待一个小时,不恢复连接,然后我点击重新扫描,它就会重新连接。我的解决办法是不断地测试连接状态......如果它失去了连接,给它5分钟时间重新连接,在警报、电子邮件和日志中大叫它正在发生,然后它关闭终端并重新启动。这在大多数情况下都有效。不时地,有一个合法的连接问题,由于EA在没有连接的情况下不会初始化,我被卡在一个洞里。我已经研究了解决这个问题的方法,所有这些方法都是在MT4之外的,因此超出了我目前的IT能力。幸运的是,我已经转移了经纪商,并且在目前的供应商那里没有遇到任何问题......因此,在这个问题上的工作在优先级列表中是很低的。

但有可能发生连接丢失的情况,当连接确实可用时,MT4却无法重新连接。终端重启对我的EA没有影响,但在没有连接的情况下坐了一个小时就会有影响!。

V

 
Viffer:

幸运的是,我已经转移了经纪人,并且与我目前的供应商没有任何问题......因此,在这个问题上的工作是低优先级的。

我还没有在我的经纪人那里看到这种情况,所以它真的可能只发生在某些经纪人身上。连接有时会丢失几秒钟,一天一到两次,但总是立即重新连接。


如果要快速地将一个外部应用程序黑客化,使其能够监控和远程控制 另一个windows应用程序(点击按钮,菜单命令等),我推荐AutoIT。它是一种易于学习的类似于BASIC的脚本语言,正是围绕着这种类型的东西。

 
7bit:

我还没有在我的经纪商那里看到这种情况,所以它真的可能只发生在某些经纪商那里。连接有时会丢失几秒钟,每天一到两次,但总是立即重新连接。


如果要快速地将一个外部应用程序黑客化,使其能够监控和远程控制另一个windows应用程序(点击按钮、菜单提示等),我推荐AutoIT。它是一种易于学习的类似于BASIC的脚本语言,正是围绕着这种类型的东西。

谢谢你的建议,我会去查的。

V

 
qjol:

IsConnected()函数还是让我哭笑不得,这么简单的事情他都不涉及。

我以为问题出在重启后MT4延迟init(),直到完全连接?


这和IsConnected()突然有什么关系?IsConnected()似乎按预期工作。当连接时它会返回真,当断开连接时返回假。我不明白这有什么好笑的。

 
7bit:

我以为问题出在重启后MT4延迟init(),直到完全连接?


这与IsConnected()突然有什么关系?IsConnected()似乎按预期工作。当连接时它会返回真,当断开连接时返回假。我不明白这有什么好笑的。


因为

if (!IsConnected()) 应该返回false & 只要不来一个新的tick IsConnected()就不能被检查 因为这个,所以才让我发笑

 
qjol:

只要不出现新的勾选,IsConnected()就不能被检查,因为这一点,这就是为什么它让我发笑。

它可以被检查,只是在一个无限循环中运行检查。在连接中断时启动终端时如何启动 这个循环是一个完全独立的问题。一旦你让你的循环运行,它就会做预期的事情。

你的问题与IsConnected()函数 没有关系。用同样的参数,你也可以抱怨Print()或Alert()或任何其他你无法调用的函数,因为你首先 因为一些完全不同的 原因无法启动整个代码