MT5에 대한 소원 - 페이지 51

 
Yedelkin :

설명. Expert Advisor가 첨부된 기호에 대한 틱 처리를 제공하지 않는 경우 이 기호에 대한 NewTick 이벤트의 지속적인 생성은 이 Expert Advisor가 처리하는 이벤트 대기열의 과도한 오버플로로 이어집니다.


https://www.mql5.com/ru/docs/runtime/running

클라이언트 터미널은 발생하는 모든 이벤트를 공통 대기열에 추가합니다. 따라서 이벤트는 수신된 순서대로 차례로 처리됩니다. 예외는 NewTick 이벤트입니다. 대기열에 이미 그러한 이벤트가 있거나 이 이벤트가 처리 중인 경우 새 NewTick 이벤트가 대기열에 포함되지 않습니다.

이벤트 대기열의 크기는 제한되어 있습니다. 대기열이 가득 차면 새로 도착하는 이벤트를 위한 공간을 만들기 위해 처리 없이 오래된 이벤트가 제거됩니다. 따라서 효율적인 이벤트 처리기를 작성하는 것이 좋습니다. 무한 루프를 사용하지 않는 것이 좋습니다(단일 시작 이벤트를 처리하는 스크립트 제외).

Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Программы MQL5 / Выполнение программ - Документация по MQL5
 
Rosh :

https://www.mql5.com/ru/docs/runtime/running

클라이언트 터미널은 발생하는 모든 이벤트를 공통 대기열에 추가합니다. 따라서 이벤트는 수신된 순서대로 차례로 처리됩니다. 예외는 NewTick 이벤트입니다. 대기열에 이미 그러한 이벤트가 있거나 이 이벤트가 처리 중인 경우 새 NewTick 이벤트가 대기열에 포함되지 않습니다.

이벤트 대기열의 크기는 제한되어 있습니다. 대기열이 가득 차면 새로 도착하는 이벤트를 위한 공간을 만들기 위해 처리 없이 오래된 이벤트가 제거됩니다. 따라서 효율적인 이벤트 처리기를 작성하는 것이 좋습니다. 무한 루프를 사용하지 않는 것이 좋습니다(단일 시작 이벤트를 처리하는 스크립트 제외).

따라서 "전체 대기열에 대한 하나의 NewTick 이벤트" 규칙은 Expert Advisor의 OnTick() 함수의 유무에 관계없이 항상 유효합니다. 설명 감사합니다!

테스터에서 불필요한 틱을 생성하는 프로세스를 비활성화하는 것에 대한 질문이 남아 있습니다.

 

Yedelkin :

테스터에서 불필요한 틱을 생성하는 프로세스를 비활성화하는 것에 대한 질문이 남아 있습니다.

거기에서 처리하지 마십시오. 논리적으로 모든 것이 정상입니다.

 
Interesting :

거기에서 처리하지 마십시오. 논리적으로 모든 것이 정상입니다.

이것은 언뜻보기에 "모든 것이 괜찮을 것입니다." 테스터의 틱이 전체 테스트/최적화 기간 동안 강제로 생성된다는 사실에서 진행합니다. 동의하십니까? 그렇다면 Expert Advisor가 연결되어 있고 이 Expert Advisor에서 처리하지 않는 기호에 대해서도 눈금이 생성됩니다. 즉, 이 기호에 대한 처리 틱이 없음에도 불구하고(귀하의 제안) 테스터는 이를 생성하는 데 시간을 낭비할 것입니다. ... 내가 이해하지 못하는 것이 있으면 기꺼이 새로운 것을 배울 준비가 되어 있습니다.

 
Yedelkin :

다시 한 번 말씀드립니다. Expert Advisor는 부착된 기호와 전혀 작동하지 않습니다. 그리고 그는 이 특정 기호에 대해 SL 및 TP를 추적할 필요가 없습니다. 저것들. Expert Advisor는 이 기호에 틱이 전혀 필요하지 않습니다. 전문가는 필요할 때만 기호에 부착됩니다. 실행하려면 적어도 어딘가에 부착해야 하기 때문입니다.

에헴... 거래되지 않는 상품에 대해 Expert Advisor를 테스트하는 이유는 무엇입니까? 거래하려는 하나를 테스트하십시오.

그리고 전혀 거래할 필요가 없다면 테스트할 필요도 없습니다. 실시간으로 시작된 Expert Advisor의 견적 내역으로 작업하십시오.

 
Rosh :

클라이언트 터미널은 발생하는 모든 이벤트를 공통 대기열에 추가합니다. 따라서 이벤트는 수신된 순서대로 차례로 처리됩니다.

Rashid, EA/script/indicator에 의해 처리되지 않는 이벤트는 어떻게 됩니까? 질문은 바로 그것이었다.

이벤트 처리 가 켜져 있고 그에 대한 반응이 제공되는 경우에만 실제로 대기열에 넣고 제거됩니까?

아니면 모든 사람이 자신의 대기열을 갖고 처리해야 하는 이벤트만 거기에서 수집된다고 가정하는 것이 여전히 옳았습니까?

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
Yedelkin :

이것은 언뜻보기에 "모든 것이 괜찮을 것입니다." 테스터의 틱이 전체 테스트/최적화 기간 동안 강제로 생성된다는 사실에서 진행합니다. 동의하십니까? 그렇다면 Expert Advisor가 연결되어 있고 이 Expert Advisor에서 처리하지 않는 기호에 대해서도 눈금이 생성됩니다. 즉, 이 기호에 대한 처리 틱이 없음에도 불구하고(귀하의 제안) 테스터는 이를 생성하는 데 시간을 낭비할 것입니다. ... 내가 이해하지 못하는 것이 있으면 기꺼이 새로운 것을 배울 준비가 되어 있습니다.

"모든 틱" 모드에 대해 이야기해 보겠습니다.

1. 내가 이해하는 한, 그것들은 단지 강제로 생성되는 것이 아니라 Expert Advisor에서 선택되고 거래되는 모든 기호에 대해 적용됩니다(그것 없이는 어디에도 없음).

2. 프로그래머의 요청에 따라 테스터 설정(메인 심볼)에서 선택된 틱은 OnTick에서 처리될 수 있는지 여부(동시에 이러한 유형의 이벤트가 이미 처리되었거나 큐에 존재하는 경우 추가되지 않음).

적어도 개발자의 논리는 그렇게 이해했습니다.

3.설명한 작업을 기반으로 ChartEvent와 관련된 사용자 정의 이벤트 를 사용하여 추가 기호의 눈금에 대한 정보를 얻습니다. ChartEvent가 실패 없이 큐에 들어갈 때 실행되거나 오버플로 시 삭제됩니다.

앞서 말한 내용을 바탕으로 "추가 기호"(Expert Advisor의 경우 외부)의 틱 처리가 비효율적이면 문제가 되고 이벤트 대기열의 전체 스택을 흩뜨리는 것은 ChartEvent 처리라는 것이 분명해집니다.

귀하의 Expert Advisor의 전체 논리를 완전히 이해하지 못할 수도 있지만 이러한 조건에서 타이머의 추가 기호에 대한 기타 중요한 정보 및 모든 기호의 가격에 대한 정보를 수집하기 위한 블록을 배치할 것입니다. 그리고 ChartEvent의 도움으로 새로운 막대의 발생에 대한 정보만 전송했습니다.

MT4에서와 같이 OnTick 블록(사용되는 경우)의 다른 기호에 대한 정보를 처리할 수도 있습니다. 그러나 타이머는 주기적으로 처리되고 초당 한 번만 처리되기 때문에 여기에서 이점이 있습니다.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - Документация по MQL5
 
komposter :

Rashid, EA/script/indicator에 의해 처리되지 않는 이벤트는 어떻게 됩니까? 질문은 바로 그것이었다.

이벤트 처리 가 켜져 있고 그에 대한 반응이 제공되는 경우에만 실제로 대기열에 넣고 제거됩니까?

아니면 모든 사람이 자신의 대기열을 갖고 처리해야 하는 이벤트만 거기에서 수집된다고 가정하는 것이 여전히 옳았습니까?

내가 이해하는 한, 처리가 없을 때 대기열의 이벤트는 새 이벤트가 도착하는 순간(대기열이 가득 찬 경우) "버려집니다".
 
komposter :

Rashid, EA/script/indicator에 의해 처리되지 않는 이벤트는 어떻게 됩니까? 질문은 바로 그것이었다.

이벤트 처리 가 켜져 있고 그에 대한 반응이 제공되는 경우에만 실제로 대기열에 넣고 제거됩니까?

아니면 모든 사람이 자신의 대기열을 갖고 처리해야 하는 이벤트만 거기에서 수집된다고 가정하는 것이 여전히 옳았습니까?

개발자 응답:

각 EA/스크립트/인디케이터에는 자체 대기열이 있습니다. 당연히 처리기가 갑자기 없으면 대기열에 아무 것도 중단되지 않습니다. 글쎄요, 아니요-빼고 건너 뜁니다.

 
komposter :

에헴... 거래되지 않는 상품에 대해 Expert Advisor를 테스트하는 이유는 무엇입니까?

당신은 아마도 일의 원칙이 이미 명시된 내 메시지를 매우주의 깊게 읽지 않았을 것입니다. 나는 이것에 대한 주제를 끝낼 것을 제안합니다.

그러나 어쨌든 - 감사합니다. 당신의 도움 없이는 많은 것을 배울 수 있었습니다.