mql5 언어의 특징, 미묘함 및 작업 방법 - 페이지 95

 
슬라바 :

전체 질문을 읽었습니까?

... GetMicrosecondsCount에 대한 두 호출 사이 ...

글쎄, 그게 내가 말하는거야. 첫 번째 호출은 동기화 전에 발생하고 두 번째 호출은 동기화 후에 발생합니다. 차이는 실제 마이크로초 수 + 타이밍 수정과 같습니다.

 
알렉세이 나보이코프 :

글쎄, 그게 내가 말하는거야. 첫 번째 호출은 동기화 전에 발생하고 두 번째 호출은 동기화 후에 발생합니다. 차이는 실제 마이크로초 수 + 타이밍 수정과 같습니다.

이제 GetMicrofsecondsCount에 대한 두 호출 사이의 시간 조정 확률을 알려주세요.

마이크로초를 실제로 측정하면 확률은 거의 0입니다.

초 또는 그 이상의 간격으로 마이크로초를 측정합니까? 무엇 때문에? 진공 속 구형?

 
알렉세이 나보이코프 :

당신은 잘못. 여기 에서는 특히 WinApi를 사용하여 코드를 생성했습니다. 실행하고 프로세스의 시계를 변경하고 결과를 보십시오.

귀하의 주장이 추측에 근거한 경우 귀하와 대화를 수행하는 방법이 명확하지 않습니다. 그리고 당신은 주제에 대한 토론 과정에 익숙해지는 것이 필요하다고 생각하지 않습니다.

제기된 문제에 대해 전혀 모릅니다.

내가 말했듯이, 시간이 예기치 않게 변경되면 사용되는 기능에 관계없이 정확한 시간 제어와 관련된 코드가 종료됩니다.
 
슬라바 :

이제 GetMicrofsecondsCount에 대한 두 호출 사이의 시간 조정 확률을 알려주세요.

마이크로초를 실제로 측정하면 확률은 거의 0입니다.

초 또는 그 이상의 간격으로 마이크로초를 측정합니까? 무엇 때문에? 진공 속 구형?

나는 이미 대답했습니다. 이 확률은 동기화 기간에 따라 다릅니다. 길이가 짧을수록 교대 근무가 더 자주 발생합니다. 더 높은 확률. 또한 인접한 측정 사이의 거리에서. 시간이 길수록 더 자주 교대 근무를 하게 됩니다. 저것들. 확률은 하늘의 손가락이 아니라 이 두 매개변수를 기반으로 계산됩니다.

그리고 왜 두 번째 간격에 대해 즉시 작성합니까? 밀리초는 어떻습니까? 예를 들어, 16ms 미만인 모든 것은 이 기능으로만 측정할 수 있습니다. 그리고 16-30밀리초도 이 기능으로 측정해야 합니다. 그렇지 않으면 오류가 너무 커질 것입니다.

이것이 사소한 일이고 무시할 수 있다고 생각되면 이것은 순전히 개인적인 의견입니다. 이전에 여기에서 시프트 없이 정상적으로 작동하는 일반 시스템 함수 QueryPerformanceCounter에 대해 이야기했습니다. 아마 그냥 발명한 것이 아닙니다. 그런데 여기 Renat는 어떤 이유로 이렇게 말했습니다.

이것이 마이크로초를 계산하는 방법입니다.

실제로는 그렇지 않지만. QueryPerformanceCounter에 관한 것이었습니다.

 
레나트 파트훌린 :
제기된 문제에 대해 전혀 모릅니다.

내가 말했듯이, 시간이 예기치 않게 변경되면 사용되는 기능에 관계없이 정확한 시간 제어와 관련된 코드가 종료됩니다.

QueryPerformanceCounter에는 시간 변경이 없습니다. 무슨 말을 하는 겁니까? 내가 당신에게 링크를 준 코드를 실행 했습니까?

 

MQL5 코드 실행 엔진을 확인한 후 GetMicrosecondCount에 하이브리드 측정 체계가 있는 것으로 나타났습니다.

  • Windows 8 이상에서는 시스템 시간에 따라 약간 더 빠른 GetSystemTimePreciseAsFileTime 함수가 사용되었습니다.
  • 다른 경우에는 QueryPerformanceFrequency + QueryPerformanceCounter
  • 두 경우 모두 GetMicrosecondCount는 프로그램 시작부터 마이크로초를 발행하는 기능을 수행했습니다.

이 코드는 시간 측정 호출 시 시스템 오버헤드를 줄이려는 시도로 인해 나타났습니다. 개발자 중 한 명이 그것을 과장했습니다.

개인적으로 Slava와 나는 순수한 QueryPerformanceCounter가 작동한다고 확신했습니다. 그리고 그런 코드가 있었습니다. 그러나 그들은 하이브리드 모델의 존재로 인해 실수를 저질렀습니다.

이제 QueryPerformanceFrequency + QueryPerformanceCounter만 작동합니다.

결론: 예, 우리는 GetMicrosecondCount 함수의 구현과 그 동작의 보호 모두를 망쳤습니다.

슬라바와 나는 사과한다!
 
이 주제와 관련이 없는 댓글은 " 버그, 버그, 질문 "으로 이동되었습니다.
 
레나트 파트훌린 :

명시적 또는 암시적 형태 로 "should"라는 문구의 사용에 대해 상기시켜 드립니다. "고려해주세요 " 대신 "메타따옴표"를 사용하는 것은 더 이상 허용되지 않습니다.

나는 당신이 가장 자주 행 사이를 읽는 것이 대담한 사람이 쓰는 것과 아무 관련이 없다는 가정의 가능성을 고려하도록 요청합니다.

포럼 도움말과 MQ 슬래밍이 있는 실제 버그 보고는 호환되지 않습니다. 끊임없이 신발을 증오하고 등으로 바꾸는 사람을 상상하기는 어렵습니다.

 
MT5 자체는 GetMicrosecondCount 를 사용하여 오랜 시간을 측정합니다.
 IS      0       13:32:55.239    Trades  '11391209': accepted exchange buy 1.00 AFKS at market
DM      0       13:33:07.896    Trades  '11391209': deal #265475900 buy 1.00 AFKS at 9.095 done (based on order #284425784)
OD      0       13:33:07.898    Trades  '11391209': order #284425784 buy 1.00 / 1.00 AFKS at 9.095 done in 12757.608 ms
 

친구 여러분, 누구에게 조언을 구해야 하는지 알려주실 수 있나요? - 다른 거래소에서 동일한 제품의 가격 차이를 어떻게 해결할 수 있는지 알고 싶습니다. 조언을 해주시면 감사하겠습니다. 다른 지점에 글을 써야 할까요?

나는 여러 외환에 접근할 수 있는 능력이 있지만 모든 것이 어떻게 작동하는지 이해하지 못합니다