MQL의 비동기 및 다중 스레드 프로그래밍 - 페이지 26

 
Vladimir Simakov :
동기화는 프로그래머의 작업입니다. 방법을 모르고 멀티스레딩을 사용하지 않습니다. 제작자의 임무는 도구를 제공하는 것이며 이미 자신에게 모든 사악한 피노키오가 있습니다. 동일한 la mutex 자체는 구현하는 데 전혀 문제가 되지 않습니다.

불행히도 이것은 사실이 아닙니다. MQL의 대상 고객은 누구입니까? (IMHO, 프로그래밍의 기초를 아는 응용 프로그래머)

그리고 우리는 여전히 MQL5에 대해 이야기할 것입니다(개발자들은 더 이상 MQL4 업데이트가 없을 것이라고 반복해서 말했습니다)

MQL5 자체는 이미 초기에 비동기 모드에서 작동합니다. 예를 들어 기록 데이터를 요청하는 경우(데이터를 반환하거나 백그라운드에서 페이징을 시작하고 오류를 반환함) 이것이 터미널과 MQL 간의 데이터 교환과 같이 모든 것이 작동하는 방식입니다. 프로그램,

그리고 이제 이러한 순간은 이미 값을 반환 하는 대신 데이터의 준비 상태를 지속적으로 확인해야 하므로 다른 시간에 .... MQL4에서 전환할 때 끔찍할 정도로 불편합니다.


여기에 또 다른 주제가 있습니다. 이제 MQL 프로그램의 간단한 구조를 취하고 비동기적으로 다른 이벤트를 입력할 것이라고 합니다. 누구를 위한 것입니까? - 이러한 필수 기능의 최종 사용자는 누구입니까?

;)

 
Andrey Barinov :

GUI는 기본 Expert Advisor에서 실행되어야 하고 다른 모든 것은 별도의 Expert Advisor에서 실행되어야 합니다. 이 별도의 슬레이브 EA는 보이지 않는 OBJ_CHART 에 배치되고 기본 EventSendCustom() 경로와 상호 작용합니다.

지금은 어떤지 모르겠습니다. 이전에는 OBJ_CHART에서 스크립트만 실행되었던 것 같습니다. 입력 매개변수에는 다른 기능이 있었습니다.

Market Watch의 모든 기호에서 막대를 요청하려고 했습니다. 업로드된 모든 기록. 1루프 통과 수십초! 간단히 말해서 MT5를 좋아하지 않았습니다.
 
fxsaber :

지금은 어떤지 모르겠습니다. 이전에는 OBJ_CHART에서 스크립트만 실행되었던 것 같습니다. 입력 매개변수에는 다른 기능이 있었습니다.

Market Watch의 모든 기호에서 막대를 요청하려고 했습니다. 업로드된 모든 기록. 수십 초 한 루프 통과! 간단히 말해서 MT5를 좋아하지 않았습니다.

Expert Advisors가 실행되지만 틱이나 타이머가 작동하지 않습니다. OnChartEvent에 의해서만 모든 것을 시작할 수 있습니다(그리고 메인 Expert Advisor에서 틱과 타이머를 브로드캐스트).

나는 다른 제한 사항을 눈치 채지 못했습니다. 모든 것이 작동합니다.

그러나 동일한 원칙에 따라 일반 차트에서 수행할 수 있습니다. (MT4에서는 OBJ_CHART 가 없기 때문에 이렇습니다.)
 
Andrey Barinov :

Expert Advisors가 실행되지만 틱이나 타이머가 작동하지 않습니다. OnChartEvent에 의해서만 모든 것을 시작할 수 있습니다(그리고 메인 Expert Advisor에서 틱과 타이머를 브로드캐스트).

나는 다른 제한 사항을 눈치 채지 못했습니다. 모든 것이 작동합니다.

시원한. 이 가능성에 대해 몰랐습니다. GUI를 표시기에 넣고 리소스를 통해 상호 작용하지 않는 이유는 무엇입니까? 나는 그렇게있다. EventChartCustom() 은 한 번에 하나의 double 및 long으로 최대 128자를 전송하고 OnChartEvent()에 대기열에 들어가며 원하는 만큼의 문자와 공용체를 통해 모든 유형의 값을 리소스에 넣을 수 있습니다. 그리고 줄을 서지 마세요. 필요할 때 가져가세요.
 
Реter Konow :
시원한. 이 가능성에 대해 몰랐습니다. GUI를 표시기에 넣고 리소스를 통해 상호 작용하지 않는 이유는 무엇입니까? 나는 그렇게있다. EventChartCustom()은 한 번에 하나의 double 및 long으로 최대 128자를 전송하고 OnChartEvent()에 대기열에 들어가며 원하는 만큼의 문자와 공용체를 통해 모든 유형의 값을 리소스에 넣을 수 있습니다. 그리고 줄을 서지 마세요. 필요할 때 가져가세요.

감사합니다. OnChartEvent 에 대해 몰랐습니다. 동기화는 사용자 지정 이벤트를 통해 수행됩니까? 데이터 교환?

 
Реter Konow :
시원한. 이 가능성에 대해 몰랐습니다. GUI를 표시기에 넣고 리소스를 통해 상호 작용하지 않는 이유는 무엇입니까? 나는 그렇게있다. EventChartCustom()은 한 번에 하나의 double 및 long으로 최대 128자를 전송하고 OnChartEvent()에 대기열에 들어가며 원하는 만큼의 문자와 공용체를 통해 모든 유형의 값을 리소스에 넣을 수 있습니다. 그리고 줄을 서지 마세요. 필요할 때 가져가세요.

OnChartEvent를 통해 데이터를 보내지 않습니다. 이벤트 전용. 그렇지 않으면 에이전트 어드바이저에 단일 이벤트가 없으며, 그렇지 않으면 ONTIMER_BEAT 및 ONTICK_BEAT를 수신 합니다.

또한 작업에 따라 파일 또는 리소스를 통해 데이터를 교환할 수 있습니다. 나는 파일을 더 자주 사용하기 때문에 터미널을 다시 시작한 후 GUI 및 기타 모든 것을 복원하는 데에도 사용됩니다.

GUI가 터미널을 다시 시작한 후 모양을 기억하고 복원할 수 있습니까?

 
fxsaber :

감사합니다. OnChartEvent에 대해 몰랐습니다. 동기화는 사용자 지정 이벤트를 통해 수행됩니까? 데이터 교환?

각 당사자의 각 메시지에는 일련 번호가 있습니다. 당사자 A가 당사자 B에게 메시지를 보낼 때 먼저 이전 메시지를 읽었는지 확인합니다. 그렇지 않은 경우 새 항목이 전송되지 않습니다. 당사자 B가 당사자 A에게 메시지를 보낼 때 이전 메시지를 읽었는지 여부도 확인합니다.
 
Andrey Barinov :

OnChartEvent를 통해 데이터를 보내지 않습니다. 이벤트 전용. 그렇지 않으면 에이전트 어드바이저에 이벤트가 없고, 그렇지 않으면 ONTIMER_BEAT 및 ONTICK_BEAT를 수신합니다.

또한 작업에 따라 파일 또는 리소스를 통해 데이터를 교환할 수 있습니다. 나는 파일을 더 자주 사용하기 때문에 터미널을 다시 시작한 후 GUI 및 기타 모든 것을 복원하는 데에도 사용됩니다.

GUI가 터미널을 다시 시작한 후 모양을 기억하고 복원할 수 있습니까?

때때로 제동을 일으킬 수 있는 대기열 때문에 정확히 EventChartCustom() 을 완전히 포기하는 것이 좋습니다. 타이머 주파수에서 양방향 요청을 만들어 리소스를 통해 상호 작용합니다. 예를 들어, A 측이 많이 로드된 OnChartEvent()를 가지고 있고 B 측에서 취소 버튼 클릭 이벤트를 보내는 경우 A 측에서 이 이벤트를 로드하는 말도 안되는 소리로 인해 이 이벤트를 늦게 수신할 수 있습니다.

예, 커널을 파일에 저장하고 파일에서 로드합니다. 이 경우 모든 설정과 모양은 다시 시작한 후 마지막 보기로 돌아갑니다. 하지만 보통 재시작 후에는 시작 설정이 필요하므로 이 기능을 사용하지 않습니다.

 
Реter Konow :

때때로 제동을 유발할 수 있는 대기열 때문에 정확히 EventChartCustom()을 완전히 포기하는 것이 좋습니다. 타이머의 빈도로 양방향 요청을 만들어 리소스를 통해 상호 작용합니다. 예를 들어, A 측이 많이 로드된 OnChartEvent()를 가지고 있고 B 측에서 취소 버튼 클릭 이벤트를 보내는 경우 A 측에서 이 이벤트를 로드하는 말도 안되는 소리로 인해 이 이벤트를 늦게 수신할 수 있습니다.

타이머는 OBJ_CHART 에 있는 EA에서 작동하지 않습니다. 이벤트가 없습니다(OnChartEvent 제외). 따라서 모든 이벤트(OnTick, OnTimer 등)는 기본 EA에서 전송되어야 합니다.

또한 버튼 누름을 앞뒤로 보내지 않습니다. 쓸모 없다.
 
Andrey Barinov :

타이머는 OBJ_CHART 에 있는 EA에서 작동하지 않습니다. 이벤트가 없습니다(OnChartEvent 제외). 따라서 모든 이벤트(OnTick, OnTimer 등)는 기본 EA에서 전송되어야 합니다.

또한 버튼 누름을 앞뒤로 보내지 않습니다. 쓸모 없다.

지표를 GUI 캐리어로 사용하고 고문과 통신할 수 있는 리소스를 제안합니다. 또한 MT4에서는 패널을 사용하여 일반 차트에서 테스터의 어드바이저를 관리할 수 있습니다. 버튼뿐만 아니라 모든 컨트롤이 작동합니다. 테스트를 거친 조언자에게 텍스트 및 일반적인 모든 것을 보낼 수 있습니다. 나는 이미 그것을 확인했다. 모든 것이 작동합니다.

추신. 테스트를 거친 Expert Advisor는 다른 데이터를 일반 차트로 보냅니다.