[해결됨] 다른 작업 시간 프레임의 표시기에서 호출/생성될 때 표시기가 올바르게 인스턴스화되지 않습니다. - 페이지 2

 
Alain Verleyen :

"인스턴스화 실패"를 반복하고 있지만 정확하지 않습니다. 표시기는 모든 경우에 인스턴스화됩니다.

문제는 데이터를 동기적으로 사용할 수 없다는 것입니다. 처리해야 합니다. MT5 버그가 아니라 기능입니다.

나는 토론을 중단하고 SD 응답을 기다릴 것을 제안합니다.

아마도 나는 얼마나 많은 루프와 대기 있더라도 (*edit) OnCalculate();

나는 내가 틀릴 수 있다는 점을 기꺼이 받아들일 의향이 있습니다. 그래서 당신이 달리 증명할 수 있다면 10달러의 현상금을 가집니다. 제발... 제가 틀렸다는 걸 증명해 주세요. 이 어리석은 버그에 대한 해결 방법이 필요합니다. 죄송합니다. "기능"을 의미합니다.

 
nicholishen :

아마도 나는 얼마나 많은 루프와 대기 있더라도 (*edit) OnCalculate();

나는 내가 틀릴 수 있다는 점을 기꺼이 받아들일 의향이 있습니다. 그래서 당신이 달리 증명할 수 있다면 10달러의 현상금을 가집니다. 제발... 제가 틀렸다는 걸 증명해 주세요. 이 멍청한 버그에 대한 해결 방법이 필요합니다. 죄송합니다. "기능"을 의미합니다.

첫 번째 "패스"에서 왜 필요합니까? 필요한 데이터를 사용할 수 없는 경우 사용할 수 있을 때까지 기다리면 됩니다.
 
Alain Verleyen :
첫 번째 "패스"에서 왜 필요합니까? 필요한 데이터를 사용할 수 없는 경우 사용할 수 있을 때까지 기다리면 됩니다.

다른 시간 프레임에서 동일한 표시기(동일한 기호)의 데이터에 액세스해야 하는 표시기를 개발 중이기 때문입니다. 두 번째 틱이 끝날 때까지 처리되지 않기 때문에 표시기 가 오프라인으로 작동하지 않고 두 번째 틱이 들어올 때만 작동함을 의미합니다.

왜 이 버그 때문에 타협해야 합니까? 당신이 그것을 맹렬히 옹호하는 데 무엇이 있습니까?

 
nicholishen :

다른 시간 프레임에서 동일한 표시기(동일한 기호)의 데이터에 액세스해야 하는 표시기를 개발 중이기 때문입니다. 두 번째 틱이 끝날 때까지 처리되지 않기 때문에 표시기 가 오프라인으로 작동하지 않고 두 번째 틱이 들어올 때만 작동함을 의미합니다.

왜 이 버그 때문에 타협해야 합니까? 당신이 그것을 맹렬히 옹호하는 데 무엇이 있습니까?

???

나는 아무것도 변호하지 않으며 확실히 "격렬하게" 변호하지도 않습니다. 냉정하게 지내세요.

 
Alain Verleyen :

???

나는 아무것도 변호하지 않으며 확실히 "격렬하게" 변호하지도 않습니다. 냉정하게 지내세요.

ServiceDesk에 글을 쓰라고 제안할 수만 있으며 여기에서 답변을 보고해 주십시오.


확인.

누군가가 그것에 균열을 가하는 데 관심이 있는 경우를 대비하여 이 작업을 게시했습니다.

https://www.mql5.com/en/job/57516

 
nicholishen :

즉, 데이터가 스크립트나 EA에서 즉시 사용 가능하면 Indicator에서도 동일하게 사용할 수 있습니다(여기에서는 데이터 가용성 문제 가 아님). 표시기는 OnCalculate()의 두 번째 패스(첫 번째 틱이라고도 함) 전에 단순히 인스턴스화에 실패합니다.

"가용성"이라는 단어를 너무 문자 그대로 이해하고 있습니다. 일부 데이터가 터미널 메모리에 존재할 수 있지만 터미널 자체에는 기본 데이터가 하나(아마도 다른) 타임프레임에 대해 확인되는 동안 모든 타임프레임에 대한 업데이트를 차단하는 일부 동기화 논리가 포함될 수 있습니다. 또는 자체 생성이 완료될 때까지 표시기의 데이터 요청을 차단할 수 있으며(표시기는 소위 핸들로 관리되지만 전문가와 스크립트는 관리하지 않음을 기억하십시오) 이것은 나에게 논리적입니다. 이것은 MQ 개발자의 관점에서 만든 추측일 뿐입니다. 서비스 데스크를 통해 직접 요청할 수 있습니다.

포인트 3으로 인해 귀하의 작업을 수행할 수 없습니다.

3. 초기화 시 버퍼에 접근해야 함

이것은 터미널 아키텍처 및 문서 에 대한 것입니다.

지표 데이터를 생성한 직후에는 지표 값을 계산하는 데 약간의 시간이 필요하므로 지표 데이터를 바로 참조할 수 없습니다.

또한 CopyBuffer 기능에 대해 읽어보십시오.

메모

표시기에서 데이터를 요청할 때 요청한 시계열이 아직 구축되지 않았거나 서버에서 다운로드해야 하는 경우 함수는 즉시 -1을 반환 하지만 다운로드/구축 프로세스가 시작됩니다.

Expert Advisor 또는 스크립트에서 데이터를 요청할 때 터미널에 이러한 데이터가 로컬에 없으면 서버에서 다운로드 가 시작되고, 로컬 히스토리에서 데이터를 구축할 수 있지만 그렇지 않은 경우 필요한 시계열 구축이 시작됩니다. 아직 준비되었습니다. 이 함수는 시간 초과 만료 시점까지 준비될 데이터의 양을 반환합니다 .

따라서 전문가와 스크립트는 사전 정의된 시간 초과까지 동기적으로 처리되지만 표시기는 비동기적으로 처리됩니다.

Documentation on MQL5: Technical Indicators
Documentation on MQL5: Technical Indicators
  • www.mql5.com
Technical Indicators - Reference on algorithmic/automated trading language for MetaTrader 5
 
특정 작업은 다른 방법으로 쉽게 수행할 수 있습니다. 지표에 지표 를 구축하고 오프라인에서 작동하기를 원하는 첫 번째 사람은 아닙니다. 타이머를 사용합니다.
 
Stanislav Korotky :
특정 작업은 다른 방법으로 쉽게 수행할 수 있습니다. 지표에 지표를 구축하고 오프라인에서 작동하기를 원하는 첫 번째 사람은 아닙니다. 타이머를 사용합니다.
그것을 시도했다. 작동하지 않았습니다.
 
nicholishen :
그것을 시도했다. 작동하지 않았습니다.
샘플 코드로 더 구체적인 질문을 게시하세요. 버그가 있을 수 있습니다. 접근 방식은 저에게 효과적입니다.
 
Stanislav Korotky :
샘플 코드로 더 구체적인 질문을 게시하세요. 버그가 있을 수 있습니다. 접근 방식은 저에게 효과적입니다.
내가 이미 가지고 있는 것보다 더 구체적일 수 있다는 것이 이해가 되지 않습니다...

어떤 타이머나 루프도 Oncalculate가 최소한 한 번은 반환될 때까지 표시기가 인스턴스화되지 않는다는 사실을 극복할 수 없습니다. 재귀도 작동하지 않습니다.