mt5 ObjectDelete에 버그가 있습니까? - 페이지 2

 

이것은 버그라기보다는 의미론적일 수 있습니다.

ObjectDelete의 목적은 "지정된 이름을 가진 개체를 제거"하는 것입니다.

함수 실행이 끝나면 차트에 "존재하지 않는 개체"라는 개체가 여전히 있습니까? 아니..그래서 이게 성공이야?

다른 방식으로 보면 ObjectDelete가 "존재하지 않는 개체"라는 개체를 제거 했습니까? 아니... 역시 실패인가요?

결과나 취한 조치로 성공을 측정합니까?

함수 를 실행한 후 명명된 개체가 차트에 남아 있으면 false가 예상될 수 있습니다. 그렇지 않으면 성공했습니다.

 
Farzin Sadeghi :
네 쓰겠습니다. 당신의 확인을 기다리고 있었습니다. 감사해요.

서비스 데스크에 보고하려고 했지만 "데이터 저장 오류"라는 내 메시지를 수락하지 않습니다.

다른 위치, PC 및 브라우저( 내 VPS 사용)에서도 시도했지만 동일한 일이 발생했습니다.

당신은 당신의 끝에서 그것을보고 할 수 있었습니까?

 
honest_knave :

이것은 버그라기보다는 의미론적일 수 있습니다.

ObjectDelete의 목적은 "지정된 이름을 가진 개체를 제거"하는 것입니다.

함수 실행이 끝나면 차트에 "존재하지 않는 개체"라는 개체가 여전히 있습니까? 아니..그래서 이게 성공이야?

다른 방식으로 보면 ObjectDelete가 "존재하지 않는 개체"라는 개체를 제거했습니까? 아니... 역시 실패인가요?

결과나 취한 조치로 성공을 측정합니까?

함수 를 실행한 후 명명된 개체가 차트에 남아 있으면 false가 예상될 수 있습니다. 그렇지 않으면 성공했습니다.

이 경우 MQL4와 MQL5의 기능 차이는 문서에서 보고되거나 설명되지 않습니다!
 
Fernando Carreiro :
이 경우 MQL4와 MQL5의 기능 차이는 문서에서 보고되거나 설명되지 않습니다!

동의. 나는 "그들"이 어느 것이 옳다고 말할지 궁금합니다 :-)

개인적으로, 나는 사실로 반환하는 것이 더 낫다고 생각합니다. 그렇지 않으면 4202 오류가 발생한 개체가 있는지 확인하기 위해 추가 코드를 추가해야 합니다.

 
honest_knave :

동의. 나는 "그들"이 어느 것이 옳다고 말할지 궁금합니다 :-)

개인적으로, 나는 사실로 반환하는 것이 더 낫다고 생각합니다. 그렇지 않으면 4202 오류가 발생한 개체가 있는지 확인하기 위해 추가 코드를 추가해야 합니다.

제 생각에는 두 경우 모두 "올바른" 버전에 관계없이 삭제하기 전에 개체의 존재를 확인 해야 합니다.

편집: 그러나 MQL4와 동일한 방식으로 작동하도록 "수정"되기를 바랍니다. 그렇지 않으면 두 버전 모두에서 컴파일하도록 만들어진 코드에 조건부 컴파일을 배치해야 하는 기능상 의 또 다른 차이점이 있습니다.

 
Fernando Carreiro :
제 생각에는 두 경우 모두 "올바른" 버전에 관계없이 삭제하기 전에 개체의 존재를 확인해야 합니다.

흥미로운! 사라지길 원한다면 왜 존재하는지 확인 해야 합니까?

존재하지 않는 개체가 존재하는지 확인하는 데 걸리는 시간은 MT4에서 존재하지 않는 개체를 삭제하려고 시도하는 것과 거의 비슷하므로(MT5에서 피상적으로 검사한 결과 속도가 상당히 느림) 가시적인 성능 이점을 볼 수 없습니다. 검사를 실행하여. 그러나 코드에 더 많은 줄이 추가됩니다.

 
Fernando Carreiro :

편집: 그러나 MQL4와 동일한 방식으로 작동하도록 "수정"되기를 바랍니다. 그렇지 않으면 두 버전 모두에서 컴파일하도록 만들어진 코드에 조건부 컴파일을 배치해야 하는 기능상 의 또 다른 차이점이 있습니다.

아마도 좌절을 통해 우리를 MT5로 강요하려는 계획의 일부일 것입니다!
 
honest_knave :

흥미로운! 사라지길 원한다면 왜 존재하는지 확인해야 합니까?

존재하지 않는 개체가 존재하는지 확인하는 데 걸리는 시간은 MT4에서 존재하지 않는 개체를 삭제하려고 시도하는 것과 거의 비슷하므로(MT5에서 피상적으로 검사한 결과 속도가 상당히 느림) 가시적인 성능 이점을 볼 수 없습니다. 검사를 실행하여. 그러나 코드에 더 많은 줄이 추가됩니다.

사용자가 실수로 삭제하여 다시 만들어야 하는지 여부를 감지하려는 경우. 나는 이것을 한 번만 삭제 하는 기능 이 아닌 일반적인 "가정 관리"로 의미했습니다.

그러나 예, "OnDeinit()" 기능 의 경우 먼저 테스트할 필요가 없다는 데 동의합니다.

 
Fernando Carreiro :

사용자가 실수로 삭제하여 다시 만들어야 하는지 여부를 감지하려는 경우. 나는 이것을 한 번만 삭제 하는 기능 이 아닌 일반적인 "가정 관리"로 의미했습니다.

그러나 예, "OnDeinit()" 기능 의 경우 먼저 테스트할 필요가 없다는 데 동의합니다.

아 알겠습니다.

참고로:

#property strict

void OnStart ()
  {
   string name = "MysteryObject" ;
   ulong begin;

   begin = GetMicrosecondCount ();
   for ( int i= 0 ; i< 1000 ; i++) int result =  ObjectFind ( 0 ,name);
   printf ( "ObjectFind took %i μs" , GetMicrosecondCount ()-begin);

   begin = GetMicrosecondCount ();
   for ( int i= 0 ; i< 1000 ; i++) bool result =  ObjectDelete ( 0 ,name);
   printf ( "ObjectDelete took %i μs" , GetMicrosecondCount ()-begin);
  }

MT4에서 실행하면 별로 없습니다.

MT5에서 실행하면 50배 이상 느립니다.

누구든지 이유에 대한 통찰력이 있습니까?

 
honest_knave : 아 알겠습니다.

참고로:

MT4에서 실행하면 별로 없습니다.

MT5에서 실행하면 50배 이상 느립니다.

누구든지 이유에 대한 통찰력이 있습니까?

어떤 빌드를 사용하셨나요? "ObjectDelete()" 함수 가 있는 최신 빌드에 가능한 버그가 있는 것 같기 때문에 "ObjectFind()"에도 문제가 있을 수 있습니다!