테스터 보고서를 Open XML 형식으로 저장하려고 했습니다. 20분(펜티엄 4, 3.0GHz)을 기다리면 응용 프로그램이 응답하지 않습니다. 작업 관리자에서 terminal.exe 프로세스(프로세서의 약 50%)가 RAM(최대 약 250MB)을 소모하는 데 매우 활성화됩니다. 결과는 아무것도 아닙니다. MT5가 응답하고 따옴표만 오지 않습니다(회색 회전 원이 있는 연결 상태 표시기). 두 번째 시도도 동일합니다. 로그 2 항목의 "도구" 창에 "MemoryException 107878464 bytes not available"이 표시되며, 이는 OpenXML에서 보고서를 가져오려는 시간에 해당합니다. HTML 형식에서 파일은 거의 즉시 형성되었습니다(약 12MB). 오랜만에 뜨는데 MT5는 여기서 탓할게 아니라...
반복합니다. 모든 것이 동일하지만 빌드 358에서는 더 많은 시간이 걸립니다. 보고서 크기에 따라 다릅니다. 짧은 보고서는 문제 없이 처리됩니다.
이제 MT4와 달리 마침표는 마침표의 초 수를 의미하지 않습니다.
MT4에서도 초수는 보여주지 않았는데... 그런데 MT4에서는 분을 또렷이 보여줬다. 그러면 H1 차트에서 _Period는 무엇을 표시합니까? 제 생각에는 이것은 심각한 버그입니다.
더 자세히 읽으십시오. 저는 PeriodSeconds가 아니라 _Period에 대해 썼습니다. 페이지 인식 오류에 신경쓰지 마세요.
따라서 H1 = 16385는 넌센스가 아니라 ENUM_TIMEFRAMES 에서 H1의 숫자 표현입니다.
기간에 대한 도움말 읽기
기간
현재 차트의 기간 값을 반환합니다.
ENUM_TIMEFRAMES 마침표 ();
반환 값
현재 차트의 기간 값을 저장하는 _Period 변수의 내용입니다. 값은 ENUM_TIMEFRAMES 열거형 값 중 하나일 수 있습니다 .
추신
따라서 기간에 해당하는 분 수가 반환되는 것이 아니라(MT4에서와 같이) ENUM_TIMEFRAMES 열거 요소(또는 작업해야 하는 경우 숫자 표현)가 반환됩니다.
이미 수정되었습니다. 일반적인 의미는 PeriodSeconds 우리는 마침표에서 정확히 초를 얻은 다음 우리가 원하는 대로 수행합니다...
따라서 H1 = 16385는 넌센스가 아니라 ENUM_TIMEFRAMES 에서 H1의 숫자 표현입니다.
글쎄요, H1에 _Period를 요청하면 ENUM_TIMEFRAMES = 16385가 됩니다. 그러면 여기서 몇 분을 얻을 수 있습니까?
물론 PeriodSeconds() / 60을 나누는 것은 비용이 들지 않습니다. 그러나 동일하게 이러한 식별자는 무엇이며 어떻게 사용합니까?
글쎄요, H1에 _Period를 요청하면 ENUM_TIMEFRAMES = 16385가 됩니다. 그러면 여기서 몇 분을 얻을 수 있습니까?
11개월 동안 마이그레이션 라이브러리에서 이 기능을 사용해 왔지만 모든 것이 명확했습니다.
ANG3110 :
물론 PeriodSeconds() / 60을 나누는 것은 비용이 들지 않습니다. 그러나 모두 동일하게 이러한 식별자는 무엇이며 어떻게 사용합니까?
이 질문은 OOP의 기본에 기인할 수 있습니다. 식별자 및 열거(열거자)에 관한 것입니다. 도움말이나 C++ 프로그래밍에 대한 일반 책에서 자세히 읽을 수 있습니다.
이것은 이미 MQL4에 있었지만 그렇게 명확하지 않았습니다.
각 식별자(MQL5에 등록되었거나 사용자가 생성했는지 여부에 관계 없이)는 고유한 "대표 번호"를 가질 수 있습니다.
간단한 방법으로(최대한 설명하겠습니다) ...
이것은 외부 환경, 예를 들어 DLL 또는 다른 환경과의 호환성을 위한 것이라고 생각할 수 있습니다(MQL 또는 해당 식별자에 대해 전혀 모름).
따라서 MQL5 프로그램 내에서 마침표로 작업해야 하는 경우 ENUM_TIMEFRAMES 열거형의 PERIOD_H1 식별자를 사용하는 것이 가장 합리적입니다.
그러나 예를 들어 외부 환경(예: DLL)에 H1 기간으로 작업 중임을 알리고 싶다면 이 식별자의 숫자 표현을 사용하는 것이 더 편리합니다. 이 경우에는 16385 입니다.
글쎄요, H1에 _Period를 요청하면 ENUM_TIMEFRAMES = 16385가 됩니다. 그러면 여기서 몇 분을 얻을 수 있습니까?
물론 PeriodSeconds() / 60을 나누는 것은 비용이 들지 않습니다. 그러나 모두 동일하게 이러한 식별자는 무엇이며 어떻게 사용합니까?
이 정도
11개월 동안 마이그레이션 라이브러리에서 이 기능을 사용해 왔지만 모든 것이 명확했습니다.
이 정도
개발자.
1. 특정 조건에서 OHLC 라인이 윙크하기 시작합니다. 단일 코어 컴퓨터 에서 어드바이저를 테스트 할 때 밝혀졌습니다(아마도 CPU에 과부하가 걸렸을 것입니다)...
2. 델파이에서 하는 것과 유사하게 네비게이터에 클래스 목록과 그 기능(스터핑)을 배치할 수 있습니까?
테스터 보고서를 Open XML 형식으로 저장하려고 했습니다. 20분(펜티엄 4, 3.0GHz)을 기다리면 응용 프로그램이 응답하지 않습니다. 작업 관리자에서 terminal.exe 프로세스(프로세서의 약 50%)가 RAM(최대 약 250MB)을 소모하는 데 매우 활성화됩니다. 결과는 아무것도 아닙니다. MT5가 응답하고 따옴표만 오지 않습니다(회색 회전 원이 있는 연결 상태 표시기). 두 번째 시도도 동일합니다. 로그 2 항목의 "도구" 창에 "MemoryException 107878464 bytes not available"이 표시되며, 이는 OpenXML에서 보고서를 가져오려는 시간에 해당합니다.
HTML 형식에서 파일은 거의 즉시 형성되었습니다(약 12MB). 오랜만에 뜨는데 MT5는 여기서 탓할게 아니라...