빌드 216 버그? isConnected()는 false를 반환하지만 메타 트레이더는 여전히 연결되어 있습니다. - 페이지 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 ) ;
   }

eddim 감사합니다!


당신은 또한 단어와 함께 당신의 아이디어를 설명 하시겠습니까?

 

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

무한 루프에 머무르는 이유를 밝혀 주셔서 감사합니다.

예, 귀하의 코드가 아니라는 것을 알고 있습니다. 터미널이 연결 문제를 촉발하는 일부 코드를 실행하는 코드 영역으로 들어가게 한 일련의 이벤트에 대해 가정하고 있었습니다.

당신이 실제로 루프에 머물고 있다고 말했기 때문에 터미널이 이것을 올바르게 처리할 수 없다는 것이 가능하지 않습니까? 누가 알겠습니까? 그러나 이러한 아이디어를 홍보하지 않는 한 아무도 그러한 일이 일어날 가능성을 고려하지 않을 것입니다.

다시 한 번 답변해 주셔서 감사합니다.

지원 팀은 문제를 에뮬레이트할 수 없습니다. 따라서 때때로 옆으로 생각하는 것이 유용합니다...

;)

 

당신은 또한 단어와 함께 당신의 아이디어를 설명 하시겠습니까?

아이디어는 확인되어야 합니다. 시간이 지남에 따라 들어오는 틱을 확인하기 때문에 좀 더 복잡합니다. 더 많은 것은 ArraySize(FILE) 를 더 크게 하면 확인할 수 있으며, 정확한 지적 변경에 포함된 다른 가능한 기능 의 집합으로 MOVE[d] > MarketInfo(FILE[d],5) 를 확인하는 것이 더 정확할 것입니다. 방금 연결되었는지 확인하는 더 간단한 버전은 다음과 같습니다.

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

상황은 1000보다 크면 Sleep pause가 정밀도로 부정확할 수 있지만, 그보다 적으면 수신된 시간이 초 단위이기 때문에 이전과 같은 시간을 수신하는 결과가 될 수 있습니다.

다음 검사는 수행된 작업보다 틱이 변경된 경우일 수 있습니다.

그것은 내 관점에서입니다.

 
이 아이디어를 주셔서 감사합니다, Edddim.

그러나 불행히도 이것은 꽤 불편하고 신뢰할 수 없기 때문에 문제를 해결하지 못합니다.

또한 시장이 열려 있는지 확인 하고 거래 계정에 대한 연결을 확인하지 않습니다 (당신의 솔루션을 이해했다면).


MetaQuotes님, 이 문제는 중요한 문제이고 저만 겪는 것이 아니기 때문에 이 문제를 해결하기 위해 더 많은 노력을 해주시기 바랍니다.

그러나 이미 작업 중이라면 내 요청을 불쾌하게 여기지 마십시오.


좋은 안부,


다니엘.

 

오늘 저는 두 MT4 스테이션의 IsConnected () 상태를 알려주는 관찰자 스크립트를 가상 서버에 설치했습니다. 그 중 하나인 MIG Investment, MT4를 사용하면 실제로 연결되어 있어도 한두 번의 짧은 연결 끊김 후에 !isConnected() 상태를 유지합니다.

친애하는 MT4 개발자 팀, 여러 브로커의 MT4 스테이션으로 더 큰 테스트 설정을 만들고 isConnected() 상태를 방지할 수 있습니까? 조금만 노력하면 재현할 수 있을 거라 확신합니다!

사용 가능한 대부분의 스크립트와 EA는 올바른 연결 상태를 반환하는 IsConnected()에 의존하므로 MT4를 항상 다시 시작하는 것은 만족스러운 해결 방법이 아닙니다.

 

한 번 더. 이 문제를 확인하려면 간단한 전문가를 사용해야 합니다.

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

끝없는 루프가 있는 스크립트나 EA가 아닙니다!!!!!!!

스크립트에서 연결이 끊어졌다고 보고하지만 EA(위 참조)가 침묵을 유지한다면 인터넷에 글로벌 문제가 있는 것입니다(예: 인터넷 제공업체의 라스트 마일 문제).

EA가 "알람"을 인쇄하면 연결 루틴에 문제가 있는 것입니다.

 

응! Stringo가 다시 응답하고 있습니다. 감사합니다.

그러나 이것이 바로 이것입니다! 이런 종류의 간단한 루프가 없는 EA/스크립트로 시도했습니다.

Btw, 내 개인 네트워크와 가상 서버 에서 테스트되었기 때문에 내 인터넷에 문제가 없다고 확신합니다.

문제는 내가 거래할 수 있고 모든 것이 _is_ 괜찮아 보이지만 isConnected()는 여전히 FALSE를 반환한다는 것입니다.

 

무역 작업은 무역 서버와의 자체 연결을 초기화합니다.

IsConnected ()는 펌핑 데이터 연결 상태를 보여줍니다.

1. 연결 표시등(오른쪽 하단 모서리)이 빨간색이거나 어두운가요?

2. 어떤 브로커와 연결되어 있습니까?

3. 가상 서버에 어떤 운영 체제가 설치되어 있습니까?

 

빠른 회신에 감사드립니다. 여기 내 답변이 있습니다.

1. 평소와 같이 녹색-빨간색입니다.

2. MIG 투자

3. 내 가상 서버 에 Windows Server 2003이 설치되어 있습니다. 때때로 동일한 문제 WinXP를 표시하는 내 홈 데스크탑에서.

 
stringo :

한 번 더. 이 문제를 확인하려면 간단한 전문가를 사용해야 합니다.

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

끝없는 루프가 있는 스크립트나 EA가 아닙니다!!!!!!!

스크립트에서 연결이 끊어졌다고 보고하지만 EA(위 참조)가 침묵을 유지한다면 인터넷에 글로벌 문제가 있는 것입니다(예: 인터넷 제공업체의 라스트 마일 문제).

EA가 "알람"을 인쇄하면 연결 루틴에 문제가 있는 것입니다.

나는 다음을 시도했다:

무효 시작 ()
{

if ( IsConnected ()) Print ( "연결되었습니다 ! " ) ;
if ( ! IsConnected ()) Print ( " 알람!!! 연결이 끊어졌습니다! " ) ;
}

Connected는 연결이 있을 때 인쇄되지만 연결이 끊어지면 EA가 죽었습니다. 그 이유는 !IsConnected() 코드를 트리거하는 들어오는 틱이 더 이상 없기 때문에 연결 끊김을 감지하지 못하기 때문이라고 생각합니다!!!