잘했어! 더 이상 할 말이 없네요. 안타깝게도 MQL5 - .NET 연결에는 여전히 중개자가 필요하기 때문에 전체 구성이 너무 번거롭습니다.
안타깝게도 MQL5 - .NET 통신에는 여전히 중개자가 필요하므로 전체 구성이 너무 번거롭습니다.
저도 동의합니다. 그건 그렇고, 간단한 상호 작용의 경우 중개자없이 상호 작용하는 역 P / 호출이라는 훌륭한 기능이 있습니다.
또한 ILMerge를 사용하여 3 개의 어셈블리를 모두 QExportWrapper.dll로 병합하려고 시도했지만 작동하지 않았거나 오히려 작동했지만 mql5에서 병합 한 후에는 내 보낸 함수가 표시되지 않습니다.
안녕하세요!
소스 파일을 복사하고 실행하도록 다시 컴파일했습니다.
하지만 MT5가 충돌했습니다.
이 문제를 어떻게 디버그/해결할 수 있나요?
고마워요!
1. 먼저 bin.rar아카이브에 있는 컴파일된 파일을 사용해보십시오 .
예를 들어, 메타트레이더5 클라이언트 터미널의 디렉토리는 "C:\프로그램 파일\MetaTrader 5\"입니다.
"C:\Program Files\MetaTrader 5\MQL5\Experts\" 폴더에 전문가용 QExporter.mq5 (예:"QE") 폴더를 새로 만들어 보겠습니다.
C:\Program Files\MetaTrader 5\MQL5\Experts\QE\QExporter.mq5 (1615 bytes)
C:\Program Files\MetaTrader 5\MQL5\Experts\QE\QService.mqh (4380 bytes)
C:\Program Files\MetaTrader 5\MQL5\Libraries\QExport.dll (5632 bytes)
C:\Program Files\MetaTrader 5\MQL5\Libraries\QExport.Service.dll (7168 bytes)
C:\Program Files\MetaTrader 5\MQL5\Libraries\QExportWrapper.dll (27648 bytes)
C:\Program Files\MetaTrader 5\WindowsClient\QExport.Client.dll (6656 bytes)
C:\Program Files\MetaTrader 5\WindowsClient\QExport.dll (5632 bytes)
C:\Program Files\MetaTrader 5\WindowsClient\WindowsClient.exe (12288 bytes)
그러면 QExporter.mq5를 컴파일한 후 컴파일된 파일 QExporter.ex5가 디렉터리에 나타납니다:
C:\프로그램 파일\메타트레이더 5\MQL5\전문가\QE\QExporter.ex5 (6706 바이트)
EURUSD,H1 차트에 첨부하고 WindowsClient.exe를 실행하면 다음과 같은 그림이 나타납니다:
불드 249(2월 18일)에서 테스트했습니다.
소스 파일을 복사하고 다시 컴파일하여 실행했습니다.
하지만 MT5가 충돌했습니다.
이 문제를 어떻게 디버그/해결할 수 있나요?
안녕하세요,
우선, 오류를 일으키는 함수를 찾기 위해 mql5 소스를 디버깅하여 모든 dll 함수가 호출되기 전에 중단 점을 설정하려고합니다. 불행히도 터미널이 충돌했기 때문에 디버깅을 위해 terminal.exe에 dll을 첨부 할 수 없습니다. 어쩌면 새로운 빌드에서 가능할 수도 있습니다.
또한 어떤 OS를 사용하는지 알고 싶습니다. 32 비트 OS를 사용하고 있으므로 64 비트 시스템에서 확인할 수 없었습니다.
그리고 컴파일 된 파일을 실행 해 보셨습니까?
그리고 한 가지 더, 솔루션에서 콘솔 서비스 및 콘솔 클라이언트를 실행 해보십시오. 어쩌면 문제가 mql 또는 래퍼 라이브러리와 관련이 없을 수도 있습니다.
터미널.exe.config 파일을 생성(또는 복사)하는 것을 잊으셨을 수도 있습니다. 시도해 보세요.
MQL5가 NET의 랩 dll을 사용할 수 있다는 것은 좋은 소식입니다.
왜 Mql4는 이러한 모드를 사용하여 Net wrapped DLL과 통신할 수 없나요?
게시된 예제에 대해 대단히 감사합니다. 일주일 동안 (저녁에) .net과 mql5 간의 데이터 교환을 위한 라이브러리를 만드는 데 고심하고 있습니다.
저는 C++에 능숙하지 않아 서 이 게시물이 매우 유용했습니다.
한 가지 문제가 있습니다. x64에서 컴파일한 후 서비스 초기화 시 오류가 발생합니다.
ExportService^ service = gcnew ExportService(serverName); // <- ServiceManaged.cpp
프로세스가 아무런 설명 없이 그냥 "종료"됩니다.
추가 분석을 위해 이 오류를 로그에 출력하려면 어떻게 해야 하나요? 아니면 이미 이 문제가 발생했고 해결 방법이 ????.
새로운 기고글 WCF 서비스를 통해 MetaTrader5에서 .NET 애플리케이션으로 인용문 내보내기 가 게재되었습니다:
MetaTrader5에서 다른 애플리케이션으로 인용문을 내보내고 싶으신가요? MQL5와 DLL이 함께라면 문제 없어요! 이 글은 MetaTrader5에서 .NET 애플리케이션으로 인용문을 내보내는 방법에 대한 설명입니다. 개인적으로는 .NET 플랫폼을 이용하는 게 훨씬 재밌고, 합리적이고, 간편하네요. 안타깝게도 MetaTrader5는 아직 .NET 형식을 지원하지 않기 때문에 예전과 같이 .NET 형식을 지원하는 win32 dll을 중간층으로 사용하겠습니다.
서비스를 이용하는 틱 테이블의 예제를 만들었는데요. 해당 프로젝트는 아카이브에 WindowsClient라는 이름으로 추가되어 있습니다. 아래는 예제 실행 결과입니다.
작성자: Alexander