build 216 bug ? isConnected() returns false but metatrader still connected - 页 3

 
edddim:

这能解决这个问题吗...?

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);
  }

谢谢你edddim!


你能用文字解释你的想法吗?

 

the problem is not in my code it is in the IsConnected().

谢谢你说明了你为什么留在infinit循环中的原因。

是的,我意识到不是你的代码--我是在推测一系列的事件,导致终端自己进入代码区,执行一些代码,从而引发了连接问题。

既然你说你确实停留在循环中,那么是不是终端不能正确地处理这个问题......谁知道呢?但除非有人公开这些想法,否则没有人会想到考虑这种情况的可能性,是吗?

再次感谢您的回答。

支持团队无法模拟你的问题--所以有时侧面的思考是有用的......

;)

 

你能用文字解释一下你的想法吗?

这个想法是要被检查的,......有点复杂,因为它要检查进入的tick和时间。更多的可以用ArraySize(FILE)来检查,更准确的是检查MOVE[d]>MarketInfo(FILE[d],5)作为一组其他可能的函数,包括准确的指向变化。更简单的检查版本是,如果只是连接,可以。

int incomeTime = TimeCurrent();
Sleep(1000);
if ( incomeTime <= 0 ) return;
RefreshRates();
if ( incomeTime >= TimeCurrent() ) return;

情况是,如果超过1000个睡眠暂停将是不准确的精度,但如果更少,可能会导致收到与之前相同的时间,因为收到的时间是秒。

下一步的检查可能是,如果刻度线被改变了,就要进行后续操作。

这是从我的观点出发的。

[Deleted]  
谢谢你的这个想法,Edddim。

但不幸的是,这并不能解决问题,因为这很不方便,也不太可靠。

此外,它只是检查 市场是否开放,而不是检查与交易账户的连接(如果我理解你的解决方案)。


MetaQuotes,我友好地要求你投入更多的精力来解决这个问题,因为这是一个关键问题,而且我不是唯一遇到这个问题的人。

然而,如果你们已经在处理这个问题,请不要对我的请求感到不快。


善意的问候。


丹尼尔。

[Deleted]  

今天,我在我的虚拟服务器上安装了一个观察者脚本,它告诉两个MT4站的IsConnected()状态。其中,MIG投资公司的MT4在一两次短暂的断开连接后仍停留在!isConnected()状态,尽管它确实是连接的。

亲爱的MT4开发团队,你能不能用几个不同的经纪商的MT4站做一个更大的测试设置,并反转isConnected()的状态?我非常肯定,如果你投入一些精力,你将能够重现这个问题!我相信你会的。

大多数可用的脚本和EA都依赖于IsConnected()返回正确的连接状态,一直重启MT4并不是我所满意的解决方法。

 

再一次。为了确定这个问题,你应该使用简单的专家

void start()
  {
   if(!IsConnected()) Print("Alarm!!! Connection is lost!");
  }

而不是脚本或EA的无尽循环!!!!!!!

如果你的脚本报告失去了连接,但我们的EA(见上文)保持沉默,那么你的互联网有全球性的问题(例如,你的互联网供应商的最后一英里有问题)

如果EA打印出 "警报",那么我们的连接程序就有问题。

[Deleted]  

是的!Stringo又在回答了,非常感谢。

然而,这就是它的本质!我试着用这种简单的无循环的EA/脚本。

我非常肯定我的网络没有问题,因为它是在我的私人网络和虚拟服务器 上测试的。

问题是,我可以进行交易,一切看起来都很好,但isConnected()仍然返回FALSE。

 

交易操作初始化它自己与交易服务器的连接。

IsConnected()显示了泵的数据连接状态。

1.连接指示灯(右下角)是红色还是深色?

2.您连接到哪个经纪商?

3.你的虚拟服务器上安装了什么操作系统?

[Deleted]  

谢谢你的快速答复,我的答案在此。

1.它是绿色-红色的,像往常一样

2.米格投资

3.在我的虚拟服务器 上,安装的是Windows Server 2003。在我的家庭桌面上,偶尔会出现同样的问题 WinXP。

 
stringo:

再一次。为了确定这个问题,你应该使用简单的专家

void start()
  {
   if(!IsConnected()) Print("Alarm!!! Connection is lost!");
  }

而不是脚本或EA的无尽循环!!!!!!!

如果你的脚本报告失去了连接,但我们的EA(见上文)保持沉默,那么你的互联网有全球性的问题(例如,你的互联网供应商的最后一英里有问题)

如果EA打印出 "报警",那么我们的连接程序就有问题。

我尝试了以下方法。

空白 启动()
{

如果(IsConnected())Print("Connected!")
如果(!IsConnected())Print("Alarm!!! Connection is lost!");
}

在有连接的情况下,打印出 "连接",但当连接丢失时,EA就会失效。我认为原因是没有更多的传入点来触发代码!"IsConnected()",所以它将永远不会检测到失去连接!!!。