시간제 노동자

 

실제로, 질문 - 타이머가 초 단위로 측정되는 이유는 무엇입니까?

솔직히 네이티브 타이머가 있다는 소식을 들었을 때 시간의 원자 단위가 밀리초가 아닌 1초가 될 거라고는 생각조차 하지 못했습니다...

나는 그것을 사용하고 싶었을 때 최근에 그다지 유쾌하지 않은 (자신에게) 발견을했습니다.


전제 조건은 매우 간단합니다. 타이머는 일반적으로 동기화(데이터 계산 대기) 또는 관찰(타이머에 의해 반복되는 전문가, IMHO가 훨씬 더 적합함)에 사용됩니다. 그리고 그 경우와 그 경우에 1초는 조금 너무 많습니다. 다시 IMHO지만 타이머에서 밀리초를 보고 싶습니다.

다시 말하지만, 이것은 칠면조의 절전 기능에 대한 훌륭한 대체품이며 다시 한 번 말씀드리지만 1초는 약간 많습니다.

개발자가 요청을 방치하지 않기를 바랍니다. 필요한 경우 서비스 데스크에 요청을 보내겠습니다.

토론을 위해 주제가 열렸습니다. 어떻게 생각하나요?

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
TheXpert :

실제로, 질문 - 타이머가 초 단위로 측정되는 이유는 무엇입니까?

솔직히 네이티브 타이머가 있다는 소식을 들었을 때 시간의 원자 단위가 밀리초가 아닌 1초가 될 거라고는 생각조차 하지 못했습니다...

나는 그것을 사용하고 싶었을 때 최근에 그다지 유쾌하지 않은 (자신에게) 발견을했습니다.


전제 조건은 매우 간단합니다. 타이머는 일반적으로 동기화(데이터 계산 대기) 또는 관찰(타이머에 의해 반복되는 전문가, IMHO가 훨씬 더 적합함)에 사용됩니다. 그리고 그 경우와 그 경우에 1초는 조금 너무 많습니다. 다시 IMHO지만 타이머에서 밀리초를 보고 싶습니다.

다시 말하지만, 이것은 칠면조의 절전 기능에 대한 훌륭한 대체품이며 다시 한 번 말씀드리지만 1초는 약간 많습니다.

개발자가 요청을 방치하지 않기를 바랍니다. 필요한 경우 서비스 데스크에 요청을 보내겠습니다.

토론을 위해 주제가 열렸습니다. 어떻게 생각하나요?

내 말을 믿으십시오. 현재 거래 터미널의 구현과 그 안에 MQ 초를 사용한 스트림 작업을 위한 알고리즘의 경우 매우 적합한 솔루션입니다.

또한 테스터의 시간은 분 차트(내가 이해하는 대로)를 기반으로 생성되므로 더 작은 시간 척도는 단순히 거기에서 작동하지 않습니다.

추신

물론 개발자가 더 자세한 답변을 할 수 있지만 Expert Advisor에 대한 단일 타이머(클래스에 대해 별도의 타이머가 아닌)와 작업을 위한 현재 알고리즘이 있는 경우 이해하기에 충분합니다. Expert Advisor와 터미널 자체의 스레드에서 시간 간격은 1초 미만이거나 전혀 가능하지 않거나 단순히 전문가의 작업에 불일치를 야기합니다.

그러한 결정의 결과를 상상하려면 타이머가 예를 들어 타이머 처리에 1분이 걸리는 동안 타이머가 500밀리초마다 호출되는 경우 Expert Advisor에 어떤 일이 발생하는지 이해해야 합니다....

 

Interesting :

또한 테스터의 시간은 분 차트(내가 이해하는 대로)를 기반으로 생성되므로 더 작은 시간 척도는 단순히 거기에서 작동하지 않습니다.

테스터는 어떻습니까?

... 1초 미만의 시간 간격은 전혀 가능하지 않거나 단순히 Expert Advisor의 작업에 불일치를 야기합니다.

어떻게? 왜 불가능합니까?

그러한 결정의 결과를 상상하려면 타이머가 500밀리초마다 호출되고 타이머 처리에 1분이 걸리는 경우 Expert Advisor에게 어떤 일이 발생하는지 이해해야 합니다....

그리고 무슨 일이 일어날까요? 그리고 타이머가 1초라면 얼마나 더 나쁠까요?

댓글을 작성할 때도 머리를 맞대나요?
 
TheXpert :

실제로, 질문 - 타이머가 초 단위로 측정되는 이유는 무엇입니까?

솔직히 네이티브 타이머가 있다는 소식을 들었을 때 시간의 원자 단위가 밀리초가 아닌 1초가 될 거라고는 생각조차 하지 못했습니다...

나는 그것을 사용하고 싶었을 때 최근에 그다지 유쾌하지 않은 (자신에게) 발견을했습니다.


전제 조건은 매우 간단합니다. 타이머는 일반적으로 동기화(데이터 계산 대기) 또는 관찰(타이머에 의해 반복되는 전문가, IMHO가 훨씬 더 적합함)에 사용됩니다. 그리고 그 경우와 그 경우에 1초는 조금 너무 많습니다. 다시 IMHO지만 타이머에서 밀리초를 보고 싶습니다.

다시 말하지만, 이것은 칠면조의 절전 기능에 대한 훌륭한 대체품이며 다시 한 번 말씀드리지만 1초는 약간 많습니다.

개발자가 요청을 방치하지 않기를 바랍니다. 필요한 경우 서비스 데스크에 요청을 보내겠습니다.

토론을 위해 주제가 열렸습니다. 어떻게 생각하나요?

초 단위의 타이머는 우리의 의식적인 결정입니다. 타이머는 틱이 없을 때 Expert Advisors가 작동할 수 있도록 주로 제공됩니다.

동기화를 원하는 경우 사용자 정의 메시지를 서로 보내는 여러 기기에서 여러 Expert Advisor를 사용하십시오.

또는 예상되는 이벤트가 발생할 때 주요 전문가에게 메시지를 보내는 50밀리초 슬립과 같이 반복되는 일종의 감시 장치를 작성하십시오. 이 경우 메시지 전달이 보장됩니다(물론 대기열이 오버플로되지 않는 경우 제외).

 
stringo :

초 단위의 타이머는 우리의 의식적인 결정입니다. 타이머는 기본적으로 전문가가 진드기 없이 작업할 수 있도록 제공됩니다.

이것은 타이머 없이도 할 수 있으며 치질이 없어도 자신에게 이벤트를 보내십시오. 그렇다면 기능을 확장하지 않는 이유는 무엇입니까?

동기화를 원하는 경우 사용자 정의 메시지를 서로 보내는 여러 기기에서 여러 Expert Advisor를 사용하십시오.

데이터와 동기화할 수 있습니다. 예를 들어 내장 표시기. 표시기에서 이러한 동기화를 해결하는 방법은 무엇입니까? 나는 고문에 대해 묻지 않고 모든 것이 문제없이 해결됩니다. 그리고 절전 표시기에서 이것은 전체 스레드의 유휴 시간이므로 다른 모든 표시기의 유휴 시간입니다. 그리고 이것은 동기화 중 치질을 의미합니다.

또는 예상되는 이벤트가 발생할 때 주요 전문가에게 메시지를 보내는 50밀리초 슬립과 같이 반복되는 일종의 감시 장치를 작성하십시오. 이 경우 메시지 전달이 보장됩니다(물론 대기열이 오버플로되지 않는 경우 제외).

아무 변화가 없다면 나는 할 것입니다 ...
 
TheXpert :

테스터는 어떻습니까?

어떻게? 왜 불가능합니까?

그리고 무슨 일이 일어날까요? 그리고 타이머가 1초라면 얼마나 더 나쁠까요?

댓글을 쓸 때도 머리를 연결합니까?

원자 시간 단위에 대해 알고 있다면 OS와 나머지 소프트웨어에서 프로세스와 스레드가 어떻게 구성되어 있는지 알 수 있을 것입니다.

그러나 내가 당신에게 상기시켜 드리겠습니다 (모르는 사람들이있을 수 있습니다) 주요 사항 - 시스템에서 발생하는 모든 것은 프로세스와 스레드로 나뉘며 각 프로세스는 하나의 스레드에서 여러 스레드까지 가질 수 있습니다. 대략적으로 말하면 시스템에서 실행되는 모든 실행 파일은 프로세스입니다. 각 프로세스에는 고유한 우선 순위가 있으며 이 프로세스의 각 스레드에도 고유한 우선 순위가 있습니다.

이러한 우선 순위에 따라 시스템은 각 프로세스(또는 특정 프로세스의 스레드)에 CPU 시간을 할당합니다.

따라서 클라이언트 터미널의 아키텍처는 각 차트(알다시피)에서 하나의 Expert Advisor와 여러 지표만 실행할 수 있도록 되어 있습니다. 이 경우 하나의 스레드가 전문가에게 할당되지만 각 지표는 전문가로부터 자체(완전히 독립적인) 스레드를 받습니다.

모든 것이 괜찮지 만 전문가 자체 또는 표시기는 자체 스레드에서만자를 수 있습니다. 코드 라인 중 하나가 전체 스레드를 차지하고 이 스레드의 다른 작업은 불가능합니다(물론 틱 처리에 대한 의구심이 있지만 큰 그림에 속할 가능성이 큽니다).

동시에 각 차트에 대해 고유한 이벤트 스트림이 형성되어 시스템에서 순차적으로 처리됩니다.

따라서 상대적으로 타이머의 선행 처리가 완료될 때까지 타이머 처리를 호출할 수 없습니다. 또는 더 간단히 말하면 OnTimer()는 이를 처리해야 하는 스레드가 사용 중일 때까지 실행할 권한을 얻지 못합니다.

두 번째 스레드에서 타이머 처리를 시작하는 것이 불가능함을 설명하기 위해 다음 예제를 사용할 수 있습니다(어리석지만 명확하게).

 int OnInit ()
{
//----------------------------------------------------------------------------//
//Work variables
//----------------------------------------------------------------------------//
EventSetTimer ( 1 );
//----------------------------------------------------------------------------//
return ( 0 );
//----------------------------------------------------------------------------//
}

void OnTimer ()
{
//----------------------------------------------------------------------------//
//Work variables
//----------------------------------------------------------------------------//
Print ( TimeLocal ());
Sleep ( 2000 );
//----------------------------------------------------------------------------//
}

추신

전략 테스터 에 관해서는 - 그리고 거기에서 시간을 형성하기 위해 어떻게 제안합니까?

 

Interesting :

따라서 클라이언트 터미널의 아키텍처는 각 차트(알다시피)에서 하나의 Expert Advisor와 여러 지표만 실행할 수 있도록 되어 있습니다. 이 경우 하나의 스레드가 전문가에게 할당되지만 각 지표는 전문가로부터 자체(완전히 독립적인) 스레드를 받습니다.

언제부터? 스크립트와 어드바이저에는 전혀 문제가 없다고 봅니다. 그들은 각각의 스레드에서 작동합니다.

그리고 표시기는 모두 하나의 스레드에서 작동하며, 이는 칠면조에서 타이머를 구성하는 작업을 크게 복잡하게 만듭니다. 그리고 때때로 당신은 정말로 원합니다.

두 번째 스레드에서 타이머 처리를 시작하는 것이 불가능함을 설명하기 위해 다음 예제를 사용할 수 있습니다(어리석지만 명확하게).

작업 예. 특히 게시물의 맥락에서 이전의 생각의 수준을 어리석고 명확하게 보여줍니다.

다시는 제 글에 답글을 달지 말아주세요. 안그러면 머뭇거리지 않고 욕해서 차단하겠습니다.

그러나, 당신이 원한다면, 나는 프로그래밍과 관련된 모든 주제에 대해 글을 게시하게 되어 기쁘게 생각합니다.

전략 테스터에 관해서는 - 그리고 거기에서 시간을 형성하기 위해 어떻게 제안합니까?
아니요, 지금까지는 만족합니다.
 
TheXpert :

언제부터? 스크립트와 어드바이저에는 전혀 문제가 없다고 봅니다. 그들은 각각의 스레드에서 작동합니다.

그리고 표시기는 모두 하나의 스레드에서 작동하며, 이는 칠면조에서 타이머를 구성하는 작업을 크게 복잡하게 만듭니다. 그리고 때때로 당신은 정말로 원합니다.


대답하고 싶지만 저항할 수 없었다

스크립트는 이 문제에 관심이 없지만 조언자는 별도의 스레드(각각 자체적으로)에서 작동하지 않는다고 말한 부분을 이해하지 못합니다. 본문에서 제가 반대로 말한 곳을 지적해 주세요....

나는 지표에 대해 잘 모릅니다. 지표와 많이 일하지 않았기 때문입니다(이 문제는 아마도 포럼에서 제기되었을 것이며, 개발자가 문제가 발생하면 수정할 것입니다). 그러나 나는 각 칠면조에 대해 자신의 타이머를 처방할 수 있다는 것을 확실히 알고 있습니다(전문가에 의존하지 않음). 저는 이미 이 기회를 사용했습니다.

아마도 칠면조에 대해 말했어야 하는 것.

더엑스퍼트 :

작업 예. 특히 게시물의 맥락에서 이전의 생각의 수준을 어리석고 명확하게 보여줍니다.

그리고 누가 그것이 작동하는지 의심할 것입니다. 초기화 블록에 표시된 선언된 1 대신 타이머(감염)만 2초마다 실행됩니다.

특히 당신을 위해 타이머 호출 문제가 이미 표시되었지만 전문가에게 코딩했습니다 (명확성을 위해 모든 것이 더 편리하고 그림으로 전달하기가 더 쉽다고 가정합니다) ...

이제 OnTime 처리 시간이 1초(예제에서는 각각 1초 및 2초)가 걸리는 경우 OnTimer가 500밀리초마다 어떻게 호출되는지 알아내는 일만 남았습니다.

더엑스퍼트 :

다시는 제 글에 답글을 달지 말아주세요. 안그러면 머뭇거리지 않고 욕해서 차단하겠습니다.

그러나, 당신이 원한다면, 나는 프로그래밍과 관련된 모든 주제에 대해 글을 게시하게 되어 기쁘게 생각합니다.

네, 답변을 드릴 수 없습니다...
 
논쟁에서만 진실을 찾을 수 있으며, 두 논쟁자의 타당성이있는 경우 하나는 자신의 의견 (정확함)을 유지하고 두 번째는 자신의 의견 (틀림)을 첫 번째 의견으로 변경합니다.

따라서 대담자를 보내지 말고 그가 무엇에 대해 잘못 알고 있는지 설명하거나 "당신이 틀렸습니다. Google에서 정보를 찾으십시오."라고 쓰십시오.

포럼이 서로에게 유익한 대화라는 것을 아는 한 개발자에게만 질문이 있으면 서비스 데스크로 이동하십시오.

흥미로운

저는 MQL5 속도를 실험해 보았으므로 이렇게 말할 것입니다. 대부분의 Expert Advisors는 0.1초 이내에 OnTick 기능을 실행합니다.


더엑스퍼트에게

어디가 그렇게 급해?
그러나 나는 1초 미만의 타이머를 갖는 것이 요점이라고 생각하지 않습니다. 두 개의 전자가 충돌할 때 우리는 무엇을 기대합니까?
그렇다면 루프 진행하고 Sleep().

 

mrProF :

흥미로운

저는 MQL5 속도를 실험해 보았으므로 이렇게 말할 것입니다. 대부분의 Expert Advisors는 0.1초 이내에 OnTick 기능을 실행합니다.

거기에 무엇을 넣고 처리할 데이터의 양에 따라 다르며 MQL5가 충분히 빠르다고 주장하지 않습니다...
 

한 번만 더... 한 시간 동안 형제가 아니야?

mrProF :

그러나 나는 1초 미만의 타이머를 갖는 것이 요점이라고 생각하지 않습니다.

존재하지 않는다는 의미는 아닙니다. 모든 사람의 임무는 다릅니다.

그렇다면 루프 진행하고 Sleep().

항해 ... 읽을 수 있습니까? 칠면조를 위해 어떻게 하는지 보여주세요.