에는 멀티스레딩과 관련된 잠재적인 버그가 포함되어 있습니다. 서로 다른 차트에서 실행 중인 동일한 프로그램이 라이브러리를 사용하려고 하면 템플릿 파일과 충돌이 발생하여 액세스 오류가 발생하거나 다른 템플릿이 사용되었음에도 불구하고 두 개의 동일한 템플릿 복사본이 조용히 실행될 수 있습니다.
가급적이면 __FILE__ 형식의 임시 이름을 생성해야 합니다(여기서는 "strike"가 html에서 작동하지 않음). MQL-프로그램 이름 + 타임스탬프 + 임의의 형식입니다.
또한 폴더를 어지럽히지 않도록 다음 호출 시(예: 1일 후) 타임아웃에 따라 이전 파일을 자동으로 삭제하는 것이 바람직합니다(타임스탬프의 일부를 분석하여).
PS. __FILE__은 소스 파일이고 이를 사용하는 모든 프로그램에서 항상 Expert.mqh와 같기 때문에 이 경우는 더욱 심각합니다! 이름으로 문장을 수정했습니다.
현재 방식에 대해 '찬성'하는 사람이 한 명도 떠오르지 않습니다. IMHO에서 더 올바른 방법을 제안했습니다.
장점은 실제 적용입니다. 저는 이전에 출시된 전문가 자문가와 함께 터미널을 시작 했는데, 처음에는 즉시 템플릿으로 이동했습니다. 그들은 완벽하게 작동했습니다. 나는 이론적 충돌을 재현 할 수 있다고 확신합니다. 그러나 제 경우에는 실제와는 거리가 멀다. 범용 솔루션을 만들기로 결정한 경우 여기에서 공유하십시오. 성경을 업데이트하겠습니다. 나는 스스로 할 준비가되지 않았습니다.
동기화 = true (기본값)인 경우 즉시 삭제하는 것이 합리적이지만 지금은 그런 식으로 구현되지 않고 파일이 남아 있습니다.
용 - 이것은 실용적인 응용 프로그램입니다. 저는 이전에 출시된 전문가 어드바이저와 함께 터미널을 시작 했는데, 처음에는 즉시 템플릿으로 이동했습니다. 그들은 완벽하게 작동했습니다. 나는 이론적 충돌을 재현 할 수 있다고 확신합니다. 그러나 제 경우에는 실제와는 거리가 멀다. 범용 솔루션을 만들기로 결정한 경우 여기에서 공유하십시오. 성경을 업데이트하겠습니다. 나는 그것을 스스로 할 준비가되지 않았습니다.
네, 일부러 삭제한 것은 아닙니다.
왜 템플릿을 생성하는 프로그램의 이름을 딴 템플릿보다 Expert.mqh.tpl이라는 상수 이름이 더 "실용적"(실용적?)인지 여전히 이해가 되지 않아요. bibla를 사용하는 프로그램 A.mq5와 B.mq5가 있다고 가정해 봅시다. 각각의 이름을 가진 템플릿을 생성하면 첫째, 각 프로그램의 마지막 '지문'을 서로 덮어쓰는 대신에 각 프로그램의 마지막 '지문'을 갖는 것이 더 실용적일 것입니다. 둘째, 이름으로 생성자가 누구인지 즉시 확인할 수 있습니다(특히 외국 프로그램인 경우 유용합니다). 이제는 Expert.mqh.tpl 파일에 들어가기 전까지는 알 수 없습니다. 제가 제시한 보편적인 해결책은 MQL-프로그램+타임스탬프+랜덤의 이름을 사용하는 것입니다. 그리고 파일을 동기화 = 참으로 남겨 둘 필요가 없다고 생각합니다. 나는 모든 것이 오래 전에 테스트되고 디버깅되었다고 생각합니다. 오류가 발생하고 디버깅이 필요한 경우 sync = false 옵션이 있습니다. 그런 다음 파일을 남겨 두어야합니다. 모든 것이 논리적이라고 생각합니다. 그리고 편집은 간단합니다.
나는 누군가가 여러 프로그램에서 비블리오를 병렬로 사용하지 않는 한 실제로 충돌이 거의 발생하지 않을 수 있다는 데 동의합니다. 나는 그것을 가지고 있지 않지만 방금 코드를 잠깐 살펴 보았고 파일 폴더의 Expert.mqh.tpl에 눈이 꽂혔습니다. 모든 것이 순전히 임호입니다.
MT4와 달리 MT5는 전문가용 어드바이저가 실행되거나 변경될 때 입력 매개변수를 기록하지 않습니다. 따라서 로그에서 터미널에서 무엇이 실행되었는지 확인할 수 없습니다.
유사한 기능으로 이러한 상황을 해결할 수 있습니다.
응용 프로그램
결과
안타깝게도 스크립트에서는 작동하지 않습니다. MT4는 스크립트의 입력 매개변수를 자체적으로 출력하지만 MT5는 그렇지 않습니다.
이 라이브러리를 사용하여 DLL을 사용하는 EA를 실행할 수 없습니다. 로그에서 DLL 로딩이 허용되지 않습니다. 이 문제를 해결할 수 있는 방법이 있나요?
작동 중입니다.
제가 걱정되는 것은 문자열에서 임시 템플릿의 이름으로 상수를 사용하는 원칙입니다:
에는 멀티스레딩과 관련된 잠재적인 버그가 포함되어 있습니다. 서로 다른 차트에서 실행 중인 동일한 프로그램이 라이브러리를 사용하려고 하면 템플릿 파일과 충돌이 발생하여 액세스 오류가 발생하거나 다른 템플릿이 사용되었음에도 불구하고 두 개의 동일한 템플릿 복사본이 조용히 실행될 수 있습니다.
가급적이면 __FILE__ 형식의 임시 이름을 생성해야 합니다(여기서는 "strike"가 html에서 작동하지 않음). MQL-프로그램 이름 + 타임스탬프 + 임의의 형식입니다.
또한 폴더를 어지럽히지 않도록 다음 호출 시(예: 1일 후) 타임아웃에 따라 이전 파일을 자동으로 삭제하는 것이 바람직합니다(타임스탬프의 일부를 분석하여).
PS. __FILE__은 소스 파일이고 이를 사용하는 모든 프로그램에서 항상 Expert.mqh와 같기 때문에 이 경우는 더욱 심각합니다! 이름으로 문장을 수정했습니다.이것은 모든 장단점을 고려하여 의식적으로 이루어졌습니다.
템플릿을 만든 후 하루에 한 번이 아니라 즉시 삭제하는 것이 좋습니다. 그러나 무슨 일이 일어나고 있는지 더 잘 분석하려면 항상 마지막으로 저장한 템플릿을 가지고 있는 것이 편리합니다.
장단점을 따져가며 신중하게 결정했습니다.
템플릿을 만든 후 하루에 한 번이 아니라 즉시 삭제하는 것이 좋습니다. 그러나 어떤 일이 일어나고 있는지 더 잘 분석하려면 항상 마지막으로 저장한 템플릿을 가지고 있는 것이 편리합니다.
현재 방식에 대한 장점은 딱히 꼽을 수 없습니다. IMHO는 더 정확한 방법을 제안했습니다.
동기화 = true(기본값)인 경우 한 번에 삭제하는 것이 합리적이지만 지금은 그런 식으로 구현되지 않고 파일이 남아 있습니다.
현재 방식에 대해 '찬성'하는 사람이 한 명도 떠오르지 않습니다. IMHO에서 더 올바른 방법을 제안했습니다.
장점은 실제 적용입니다. 저는 이전에 출시된 전문가 자문가와 함께 터미널을 시작 했는데, 처음에는 즉시 템플릿으로 이동했습니다. 그들은 완벽하게 작동했습니다. 나는 이론적 충돌을 재현 할 수 있다고 확신합니다. 그러나 제 경우에는 실제와는 거리가 멀다. 범용 솔루션을 만들기로 결정한 경우 여기에서 공유하십시오. 성경을 업데이트하겠습니다. 나는 스스로 할 준비가되지 않았습니다.
동기화 = true (기본값)인 경우 즉시 삭제하는 것이 합리적이지만 지금은 그런 식으로 구현되지 않고 파일이 남아 있습니다.
네, 일부러 삭제하지 않습니다.
용 - 이것은 실용적인 응용 프로그램입니다. 저는 이전에 출시된 전문가 어드바이저와 함께 터미널을 시작 했는데, 처음에는 즉시 템플릿으로 이동했습니다. 그들은 완벽하게 작동했습니다. 나는 이론적 충돌을 재현 할 수 있다고 확신합니다. 그러나 제 경우에는 실제와는 거리가 멀다. 범용 솔루션을 만들기로 결정한 경우 여기에서 공유하십시오. 성경을 업데이트하겠습니다. 나는 그것을 스스로 할 준비가되지 않았습니다.
네, 일부러 삭제한 것은 아닙니다.
왜 템플릿을 생성하는 프로그램의 이름을 딴 템플릿보다 Expert.mqh.tpl이라는 상수 이름이 더 "실용적"(실용적?)인지 여전히 이해가 되지 않아요. bibla를 사용하는 프로그램 A.mq5와 B.mq5가 있다고 가정해 봅시다. 각각의 이름을 가진 템플릿을 생성하면 첫째, 각 프로그램의 마지막 '지문'을 서로 덮어쓰는 대신에 각 프로그램의 마지막 '지문'을 갖는 것이 더 실용적일 것입니다. 둘째, 이름으로 생성자가 누구인지 즉시 확인할 수 있습니다(특히 외국 프로그램인 경우 유용합니다). 이제는 Expert.mqh.tpl 파일에 들어가기 전까지는 알 수 없습니다. 제가 제시한 보편적인 해결책은 MQL-프로그램+타임스탬프+랜덤의 이름을 사용하는 것입니다. 그리고 파일을 동기화 = 참으로 남겨 둘 필요가 없다고 생각합니다. 나는 모든 것이 오래 전에 테스트되고 디버깅되었다고 생각합니다. 오류가 발생하고 디버깅이 필요한 경우 sync = false 옵션이 있습니다. 그런 다음 파일을 남겨 두어야합니다. 모든 것이 논리적이라고 생각합니다. 그리고 편집은 간단합니다.
나는 누군가가 여러 프로그램에서 비블리오를 병렬로 사용하지 않는 한 실제로 충돌이 거의 발생하지 않을 수 있다는 데 동의합니다. 나는 그것을 가지고 있지 않지만 방금 코드를 잠깐 살펴 보았고 파일 폴더의 Expert.mqh.tpl에 눈이 꽂혔습니다. 모든 것이 순전히 임호입니다.