OnBookEvent에 대한 구독이 때때로 중단됩니다. 그런 일이 있습니까?

 

유리를 자세히 살펴보고 OnBookEvent에 가입한 여러 전문가 및 지표를 차트에 매달아 본 결과 일부는 특히 다른 기호에 대해 1명의 전문가와 1명의 지표가 자발적으로 떨어지는 것을 발견했습니다. 로그에 오류가 없습니다. 인용문은 계속 이어졌다. 다른 캐릭터는 계속 작업했습니다. 유휴 MQL 프로그램을 수동으로 다시 시작한 후 Depth of Market 이벤트가 다시 도착하기 시작했습니다.

이것을 관찰한 사람이 있습니까? 자신을 보호하는 방법? 지금까지는 탐지 측면에서 마지막 주문서 이벤트와 새 틱 사이의 시간 초과를 관찰하는 아이디어가 있습니다. 하지만 타임아웃이 초과되면 어떻게 될까요? MarketBookAdd 를 다시 호출하는 것으로 충분합니까?

 

이전에는 "좀비"라고 불렀고 아마도 검색에서 여전히 오래된 주제를 찾을 수 있을 것입니다.

이것은 전문가/지표가 구독하는 것보다 더 많이 주문장에서 구독을 취소할 때 발생합니다.

예를 들어 2명의 전문가가 있고 각각 1회 구독했습니다. 그런 다음 하나가 닫히고 두 번 구독을 취소했습니다. 계속 실행되었던 두 번째 Expert Advisor는 업데이트 수신을 중지합니다.

나는 이것을 여러 번 보았다.

전문가를 조정 한 후 문제가 사라졌고 1 년 이상 반복되지 않았습니다.

 
Ilya Baranov :

이전에는 "좀비"라고 불렀고 아마도 검색에서 여전히 오래된 주제를 찾을 수 있을 것입니다.

이것은 전문가/지표가 구독하는 것보다 더 많이 주문장에서 구독을 취소할 때 발생합니다.

엄밀히 말하면 맞지 않습니다. 내 구독은 init에서 한 번 완료되고 구독 취소는 deinit에서 수행됩니다. DeInit가 어떻게 든 OnInit보다 더 많이 호출될 가능성을 배제할 수는 없지만.

 
Stanislav Korotky :

엄밀히 말하면 맞지 않습니다. 내 구독은 init에서 한 번 완료되고 구독 취소는 deinite에서 완료됩니다. DeInit가 어떻게 든 OnInit보다 더 많이 호출될 가능성을 배제할 수는 없지만.

지표에 대해서는 스레드를 참조하십시오.

Последовательность выполнение Init() и DeInit()
Последовательность выполнение Init() и DeInit()
  • 2017.04.07
  • www.mql5.com
Всем привет ! Столкнулся с такой проблемой Написан индикатор или советник...
 
Sergey Savinkin :

지표에 대해서는 스레드를 참조하십시오.

예, 그런 주제가 있었고 심지어 그것에 참여했지만 분명히 문제가 남아있었습니다. 하지만 현재의 경우 Expert Advisor 1명의 가입도 사라졌다.

좋아, 탬버린으로 붐 어레인지 댄스.

 
Stanislav Korotky :

유리를 자세히 살펴보고 OnBookEvent에 가입한 여러 전문가 및 지표를 차트에 매달아 본 결과 일부는 특히 다른 기호에 대해 1명의 전문가와 1명의 지표가 자발적으로 떨어지는 것을 발견했습니다. 로그에 오류가 없습니다. 인용문은 계속 이어졌다. 다른 캐릭터는 계속 작업했습니다. 유휴 MQL 프로그램을 수동으로 다시 시작한 후 Depth of Market 이벤트가 다시 도착하기 시작했습니다.

이것을 관찰한 사람이 있습니까? 자신을 보호하는 방법? 지금까지는 탐지 측면에서 마지막 주문서 이벤트와 새 틱 사이의 시간 초과를 관찰하는 아이디어가 있습니다. 하지만 타임아웃이 초과되면 어떻게 될까요? MarketBookAdd를 다시 호출하는 것으로 충분합니까?

스위치에는 버튼과 스위치의 두 가지 유형이 있습니다. 첫 번째는 임펄스를 보내고 작업을 완료하고 두 번째는 작동 모드의 변경을 의미합니다. 첫 번째 예는 이벤트의 이상인 초인종입니다. 두 번째 예는 전등 스위치를 눌렀을 때 타는 것입니다. 이것은 이벤트가 아니라 그 이상입니다.

 
Алексей Тарабанов :

스위치에는 버튼과 스위치의 두 가지 유형이 있습니다. 첫 번째는 임펄스를 보내고 작업을 완료하고 두 번째는 작동 모드의 변경을 의미합니다. 첫 번째 예는 이벤트의 이상인 초인종입니다. 두 번째 예는 전등 스위치를 눌렀을 때 타는 것입니다. 이것은 이벤트가 아니라 그 이상입니다.

아니, 이해가 안 된다. 문서로 판단하면 구독하면 내부 카운터가 증가하고 구독 취소하면 1 감소합니다. 0에 도달하면 이벤트가 전송되지 않습니다.

지문을 넣었습니다. Expert Advisor와 지표가 같은 차트에 있는 경우 문제를 재현할 수 있었습니다. 각각은 OnInit에서 MarketBookAdd를 수행하고 OnDeinit에서 MarketBookRelease를 수행합니다. 따라서 차트에서 Expert Advisor를 제거한 후( MarketBookRelease에 대한 한 번의 호출 ) 표시기는 시장 깊이 수신을 중지합니다(이론적으로는 MarketBookAdd에 대한 자체 호출이 아직 취소되지 않았지만). 반대로 칠면조를 제거하면 Expert Advisor에서 구독이 손실됩니다. 물론 이미 이것을 감지하고 다시 구독하고 있지만 그렇게 작동해서는 안됩니다. IMHO.

 
Stanislav Korotky :

아니, 이해가 안 된다. 문서로 판단하면 구독하면 내부 카운터가 증가하고 구독 취소하면 1 감소합니다. 0에 도달하면 이벤트가 전송되지 않습니다.

지문을 넣었습니다. Expert Advisor와 지표가 같은 차트에 있는 경우 문제를 재현할 수 있었습니다. 각각은 OnInit에서 MarketBookAdd를 수행하고 OnDeinit에서 MarketBookRelease를 수행합니다. 따라서 차트에서 Expert Advisor를 제거한 후( MarketBookRelease에 대한 한 번의 호출 ) 표시기는 시장 깊이 수신을 중지합니다. 반대로 칠면조를 제거하면 Expert Advisor에서 구독이 손실됩니다. 물론 이미 이것을 감지하고 다시 구독하고 있지만 그렇게 작동해서는 안됩니다. IMHO.

이미 모든 것을 말했습니다. 조용히 할게요.

 
Stanislav Korotky :

아니, 이해가 안 된다. 문서로 판단하면 구독하면 내부 카운터가 증가하고 구독 취소하면 1 감소합니다. 0에 도달하면 이벤트가 전송되지 않습니다.

지문을 넣었습니다. Expert Advisor와 지표가 같은 차트에 있는 경우 문제를 재현할 수 있었습니다. 그들 각각은 OnInit에서 MarketBookAdd를 수행하고 OnDeinit에서 MarketBookRelease를 수행합니다. 따라서 차트에서 Expert Advisor를 제거한 후( MarketBookRelease에 대한 한 번의 호출 ) 표시기는 시장 깊이 수신을 중지합니다(이론적으로는 MarketBookAdd에 대한 자체 호출이 아직 취소되지 않았지만). 반대로 칠면조를 제거하면 Expert Advisor에서 구독이 손실됩니다. 물론 이미 이것을 감지하고 다시 구독하고 있지만 그렇게 작동해서는 안됩니다. IMHO.

BookEvent 이벤트가 브로드캐스트됩니다. 여기 에서 OnBookEvent에 대한 설명을 주의 깊게 읽으십시오.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
 
Stanislav Korotky :

유리를 자세히 살펴보고 OnBookEvent에 가입한 여러 전문가 및 지표를 차트에 매달아 본 결과 일부는 특히 다른 기호에 대해 1명의 전문가와 1명의 지표가 자발적으로 떨어지는 것을 발견했습니다. 로그에 오류가 없습니다. 인용문은 계속 이어졌다. 다른 캐릭터는 계속 작업했습니다. 유휴 MQL 프로그램을 수동으로 다시 시작한 후 Depth of Market 이벤트가 다시 도착하기 시작했습니다.

이것을 관찰한 사람이 있습니까? 자신을 보호하는 방법? 지금까지는 탐지 측면에서 마지막 주문서 이벤트와 새 틱 사이의 시간 초과를 관찰하는 아이디어가 있습니다. 하지만 타임아웃이 초과되면 어떻게 될까요? MarketBookAdd를 다시 호출하는 것으로 충분합니까?

이것을 읽으십시오

https://www.mql5.com/ru/forum/95131

invalid book transaction
invalid book transaction
  • 2016.09.06
  • www.mql5.com
Раньше не было, появилось сегодня (реал). Что это...
 

감사해요 ;-). 물론 설명서와 포럼을 읽었습니다. 내 질문에 대한 답변이 있다면 여기에 공식화하거나 강조 표시하는 것이 매우 친절할 것입니다.

특히 설명서에는 다음과 같은 매혹적인 문구가 있습니다.

В отличие от других событий, событие BookEvent является широковещательным. Это означает, что достаточно одному эксперту подписаться на получение события BookEvent с помощью функции MarketBookAdd, все остальные эксперты, имеющие обработчик OnBookEvent(), будут получать это событие.

그러나 가치가 있는지 여부는 추측해야 합니다. 유추하여 "다른 모든 전문가도 수신을 중지하므로 한 전문가가 이벤트 수신을 취소하는 것으로 충분합니다"라고 계속 말합니까? 나는 이것이 될 수 없으며 버그가 될 것이라고 믿습니다.

사유: