매우 유용한 기사입니다! 자세한 설명에 감사드립니다.
네, 감사합니다.
메타쿼트는 성능을 개선하고 바이트 코드에서 벗어나기 위해 노력했지만 여전히 모든 프로그램을 그 안에 집어넣고 있습니다! )))
작성자에게 질문: 순수 MQL5 프로그램, DLL 및 .NET 몬스터의 실행 시간 비교 테스트가 수행되었나요? 한번 살펴보는 것도 흥미로울 것 같습니다.
네, 감사합니다.
메타쿼트는 성능을 개선하고 바이트 코드에서 벗어나기 위해 노력했지만... 여전히 모든 프로그램을 그 안에 넣을 것입니다! )))
작성자에게 질문: 순수 MQL5 프로그램, DLL 및 .NET 몬스터의 실행 시간 비교 테스트가 수행된 적이 있나요? 그것들을 살펴보는 것은 흥미로울 것입니다.
나는 원칙적으로 매우 유용하다고 생각합니다 가능한 리소스를 열고이 기사가 매우 흥미 롭다는 것을 알게되었습니다. 하지만 저는 경험이 많은 프로그래머가 아니기 때문에몇 가지 질문이있습니다 .
제 관점에서는 관리되지 않는 코드는 의존하지 않고 플랫폼을 개발할 수 있는 가능성을 제공합니다. 그러나 누군가가 메타 트레이더를 사용하면 그는 정의 된 플랫폼을 얻었습니다.
일반적으로 관리되지 않는 코드와 MQL5와 함께 사용하면 어떤 이점이 있습니까 ? - 내가 뭔가 잘못 이해했다면 수정해주세요 !
안녕하세요,
나는 원칙적으로 매우 유용하다고 생각합니다 가능한 리소스를 열고이 기사가 매우 흥미 롭다는 것을 알게되었습니다. 하지만 저는 경험이 많은 프로그래머가 아니기 때문에몇 가지 질문이있습니다 .
제 관점에서는 관리되지 않는 코드는 의존하지 않고 플랫폼을 개발할 수 있는 가능성을 제공합니다. 하지만 메타트레이더를 사용하는 사람은 플랫폼이 정해져 있습니다.
일반적으로 관리되지 않는 코드와 MQL5와 함께 사용하면 어떤 이점이 있습니까 ? - 내가 뭔가 잘못 이해했다면 수정해주세요 !
안녕 스마트 워트,
장점은 거래 목적으로 사용할 수있는 C #에서 이미 개발 된 많은 양의 코드가 있다는 것입니다. 다음 글에서 더 자세히 설명해드리겠습니다.
Cheerz,
Investeo
정말 최고입니다! 저는 C#을 좋아하고 이 기능을 사용할 수 있는 가능성을 찾고 있었어요! 올해 최고의 소식입니다! MQL5로 EA를 작성했을 때가 마지막이었던 것 같아요. 모든 로직을 라이브러리에 배치하고 모든 EA에 하나의 템플릿 EA.mq5를 사용할 것입니다(다른 라이브러리와 연결될 뿐입니다).
감사합니다!
네, 감사합니다.
메타쿼트는 성능을 개선하고 바이트 코드에서 벗어나기 위해 노력했지만... 여전히 모든 프로그램을 그 안에 넣을 것입니다! )))
작성자에게 질문: 순수 MQL5 프로그램, DLL 및 .NET 몬스터의 실행 시간 비교 테스트가 수행된 적이 있나요? 그것들을 살펴보는 것도 흥미로울 것 같습니다.
어떤 바이트코드로부터 벗어났나요? 4에 있었나요? 최적화가 되지 않은 느린 컴파일러만 있었을 뿐입니다.
.NET에서는 바이트코드가 없으며 시작 시 모든 것이 특정 프로세서에 맞게 최적화되어 네이티브 기계어 코드로 컴파일됩니다. 첫 번째 컴파일 시간이 중요한 경우 ngen http://msdn.microsoft.com/ru-ru/library/6t9t5wcf.aspx 을 사용하세요 .
그리고 테스트 예... 테스트는 흥미로울 것입니다.
저는 개인적으로 설명 된 방법 중 2 개만 사용하고 다른 방법에 대해서만 들었습니다. COM-interop이 어떻게 도움이 될 수 있는지 이해하지 못했지만 이것은 아마도 그림의 완전성을위한 것입니다. 기사는 5입니다.

- msdn.microsoft.com
어떤 종류의 바이트 코드에서 벗어나고 있었나요? 4 버전에 있었나요? 최적화 없이 느린 컴파일러만 있었을 뿐입니다.
MQL4에는 바이트코드가 있었지만, MQL5는 바이트코드로 컴파일된 후 실행 전에 기본 x86 또는 x64로 사전 컴파일됩니다. MQL5는 .NET처럼 동작합니다.
언어로서의 MQL5는 더 개발될 예정이며(개발자들은 더 많은 기능과 C++와의 호환성을 요구하고 있음), 최적화 도구도 개선될 것입니다.
최신 빌드에서는 이제 #resource를 통해 리소스(.BMP 및 .WAV)를 EX5 파일에 직접 포함할 수 있어 자급자족 애플리케이션을 만들 수 있습니다. 이는 메타트레이더 5 플랫폼용 본격적인 애플리케이션 개발 및 판매를 위한 좋은 기반이 될 것입니다. MQL5 마켓의 베타 버전이 곧 출시될 예정이며, 모든 개발자는 엄격한 심사를 거쳐 애플리케이션을 판매할 수 있고 모든 트레이더는 이 상점에 직접 액세스할 수 있습니다.
VS C#에서 관리되지 않는 내보내기를 위한 템플릿을 컴파일할 수 없는 사람은 저뿐인가요?
나는 기사에서 템플릿을 가져 와서 (완전하지 않고 dll이 부족함) 여기에서 가져온 R. Giesecke의 라이브러리로 보완했습니다 . Giesecke 라이브러리는 여기에서 가져옴 http://sites.google.com/site/robertgiesecke/Home/uploads,
에서 원본 템플릿을 가져왔습니다. Giesecke, 또한 두 템플릿을 혼합하여 만들었으나 아무것도 나오지 않습니다.
원본 템플릿을 컴파일할 때 컴파일러는 다음을 제공합니다:
------ Построение начато: проект: UnmanagedExportLibrary8, Конфигурация: Debug Any CPU ------ Построение начато 15.03.2011 19:02:04. CoreCompile: C:\Windows\Microsoft.NET\Framework\v4.0.30319\Csc.exe /noconfig /nowarn:1701,1702 /nostdlib+ /errorreport:prompt /define:DEBUG;TRACE /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll" /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll /debug+ /debug:full /out:obj\Debug\UnmanagedExportLibrary8.dll /target:library DllExport\DllExportAttribute.cs UnmanagedExports.cs Properties\AssemblyInfo.cs CopyFilesToOutputDirectory: Копирование файла из "obj\Debug\UnmanagedExportLibrary8.dll" в "bin\Debug\UnmanagedExportLibrary8.dll". UnmanagedExportLibrary8 -> d:\Programming\Visual Studio 2010\Projects\UnmanagedExportLibrary8\UnmanagedExportLibrary8\bin\Debug\UnmanagedExportLibrary8.dll Копирование файла из "obj\Debug\UnmanagedExportLibrary8.pdb" в "bin\Debug\UnmanagedExportLibrary8.pdb". AfterBuild: ILDasm: calling 'C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\ildasm.exe' with /quoteallnames /unicode /nobar /linenum "/out:c:\Temp\tmpF417\UnmanagedExportLibrary8.il" "d:\Programming\Visual Studio 2010\Projects\UnmanagedExportLibrary8\UnmanagedExportLibrary8\bin\Debug\UnmanagedExportLibrary8.dll" ILDasm: ildasm 'C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\ildasm.exe' returned gracefully. d:\Programming\Visual Studio 2010\Projects\UnmanagedExportLibrary8\UnmanagedExportLibrary8\bin\Debug\UnmanagedExportLibrary8.dll : Export warning EXP0009: Platform is AnyCpu, creating binaries for each CPU platform in a separate subfolder... ILAsm: Found method: UnmanagedExportLibrary8.UnmanagedExports..method private hidebysig static float64 'AddDays'(float64 'dateValue', int32 'days') cil managed ILAsm: Removing RGiesecke.DllExport.DllExportAttribute from UnmanagedExportLibrary8.UnmanagedExports.AddDays ILAsm: Parsing 242 lines of IL took 66 ms. ILAsm: calling 'C:\Windows\Microsoft.NET\Framework\v2.0.50727\ILAsm.exe' with /nologo "/out:d:\Programming\Visual Studio 2010\Projects\UnmanagedExportLibrary8\UnmanagedExportLibrary8\bin\Debug\x86\UnmanagedExportLibrary8.dll" "c:\Temp\tmpF417\UnmanagedExportLibrary8.x86.il" /DLL "/resource=c:\Temp\tmpF417\UnmanagedExportLibrary8.res" /debug ILAsm: ILAsm 'C:\Windows\Microsoft.NET\Framework\v2.0.50727\ILAsm.exe' returned gracefully. d:\Programming\Visual Studio 2010\Projects\UnmanagedExportLibrary8\UnmanagedExportLibrary8\DllExport\RGiesecke.DllExport.targets(8,5): error : d:\Programming\Visual Studio 2010\Projects\UnmanagedExportLibrary8\UnmanagedExportLibrary8\DllExport\RGiesecke.DllExport.targets(8,5): error : Assembling 'c:\Temp\tmpF417\UnmanagedExportLibrary8.x86.il' to DLL --> 'd:\Programming\Visual Studio 2010\Projects\UnmanagedExportLibrary8\UnmanagedExportLibrary8\bin\Debug\x86\UnmanagedExportLibrary8.dll' d:\Programming\Visual Studio 2010\Projects\UnmanagedExportLibrary8\UnmanagedExportLibrary8\DllExport\RGiesecke.DllExport.targets(8,5): error : Source file is UNICODE d:\Programming\Visual Studio 2010\Projects\UnmanagedExportLibrary8\UnmanagedExportLibrary8\DllExport\RGiesecke.DllExport.targets(8,5): error : d:\Programming\Visual Studio 2010\Projects\UnmanagedExportLibrary8\UnmanagedExportLibrary8\DllExport\RGiesecke.DllExport.targets(8,5): error : Assembled method RGiesecke.DllExport.DllExportAttribute::.ctor d:\Programming\Visual Studio 2010\Projects\UnmanagedExportLibrary8\UnmanagedExportLibrary8\DllExport\RGiesecke.DllExport.targets(8,5): error : Assembled method RGiesecke.DllExport.DllExportAttribute::.ctor d:\Programming\Visual Studio 2010\Projects\UnmanagedExportLibrary8\UnmanagedExportLibrary8\DllExport\RGiesecke.DllExport.targets(8,5): error : Assembled method RGiesecke.DllExport.DllExportAttribute::.ctor d:\Programming\Visual Studio 2010\Projects\UnmanagedExportLibrary8\UnmanagedExportLibrary8\DllExport\RGiesecke.DllExport.targets(8,5): error : Assembled method RGiesecke.DllExport.DllExportAttribute::get_CallingConvention d:\Programming\Visual Studio 2010\Projects\UnmanagedExportLibrary8\UnmanagedExportLibrary8\DllExport\RGiesecke.DllExport.targets(8,5): error : Assembled method RGiesecke.DllExport.DllExportAttribute::set_CallingConvention d:\Programming\Visual Studio 2010\Projects\UnmanagedExportLibrary8\UnmanagedExportLibrary8\DllExport\RGiesecke.DllExport.targets(8,5): error : Assembled method RGiesecke.DllExport.DllExportAttribute::get_ExportName d:\Programming\Visual Studio 2010\Projects\UnmanagedExportLibrary8\UnmanagedExportLibrary8\DllExport\RGiesecke.DllExport.targets(8,5): error : Assembled method RGiesecke.DllExport.DllExportAttribute::set_ExportName d:\Programming\Visual Studio 2010\Projects\UnmanagedExportLibrary8\UnmanagedExportLibrary8\DllExport\RGiesecke.DllExport.targets(8,5): error : d:\Programming\Visual Studio 2010\Projects\UnmanagedExportLibrary8\UnmanagedExportLibrary8\DllExport\RGiesecke.DllExport.targets(8,5): error : ***** FAILURE ***** d:\Programming\Visual Studio 2010\Projects\UnmanagedExportLibrary8\UnmanagedExportLibrary8\DllExport\RGiesecke.DllExport.targets(8,5): error : в RGiesecke.DllExport.Parsing.IlParser.RunILTool(String installPath, String toolFileName, String requiredPaths, String workingDirectory, String settingsName, String arguments, String toolLoggingCode, String verboseLoggingCode, DllExportNotifier notifier, Int32 timeout) в RGiesecke.DllExport.Parsing.ILAsm.RunCore(CpuPlatform cpu, String fileName, String ressourceParam, String ilSuffix) в RGiesecke.DllExport.Parsing.ILAsm.Run(String outputFile, String ilSuffix, CpuPlatform cpu) в RGiesecke.DllExport.Parsing.ILAsm.ReassembleFile(String outputFile, String ilSuffix, CpuPlatform cpu) в RGiesecke.DllExport.DllExportWeaver.RunILAsm(ILAsm ilAsm) в RGiesecke.DllExport.DllExportWeaver.Run() в RGiesecke.DllExport.MSBuild.DllExportTask.Execute() СБОЙ построения. Затраченное время: 00:00:01.85 ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
다른 템플릿을 거의 동일하게 컴파일할 때.
시스템: W7 x64 SP1 홈 프렘 라이선스.
IDE: VS 2010.
Google이 도움이되지 않습니다 (.
프로젝트 dll을 수동으로 만들고 R의 권장 사항에 따라 보완했습니다. Giesecke, 결과도 없습니다.
조언을 도와주세요.
- sites.google.com
관리되지 않는 내보내기를 위한 템플릿을 VS C #으로 컴파일하지 않았나요?
기사에서 템플릿을 가져 와서 (완전하지 않고 dll이 부족하지 않음) R의 라이브러리에 추가합니다. Giesecke는 여기에서 가져온 http://sites.google.com/site/robertgiesecke/Home/uploads ,
두 템플릿을 혼합 한 것처럼 R. Giesecke에서 원본 템플릿을 가져 왔지만 작동하지 않습니다.
원본 템플릿을 컴파일할 때 컴파일러는 다음을 생성합니다:
다른 패턴을 거의 동일하게 컴파일할 때.
시스템: W7 x64 SP1 홈 프렘 라이선스.
IDE: VS 2010.
Google은 도움이 되지 않습니다 (.
Dll은 수동으로 프로젝트를 생성하고 R의 권장 사항에 따라 프로젝트를 보완합니다. Giesecke, 결과도 사용할 수 없습니다.
도움말 pliz 조언.
안녕하세요 kPVT,
Win7 - XP 이전 버전과의 호환성 모드가 있습니까? dll이 32 비트 모드에서 작동하는 경우 작동하려면 64 비트로 다시 컴파일해야 함을 의미합니다.
나는 stackoverflow.com에서 RGiesecke에게 직접 물어 보려고 노력할 것입니다.
감사합니다,
Investeo
새로운 기고글 관리되지 않는 내보내기를 사용하여 MQL5에 C# 코드 노출 가 게재되었습니다:
이 글에서는 MQL5 코드와 관리되는 C# 코드 간의 다양한 상호 작용 방법을 제시했습니다. 또한 C#에 대해 MQL5 구조를 마샬링하는 방법과 MQL5 스크립트에서 내보낸 DLL 함수를 호출하는 방법에 대한 몇 가지 예를 제공했습니다. 제공된 예제가 관리 코드에서 DLL을 작성하는 향후 연구의 기초가 될 수 있다고 생각합니다. 이 글은 또한 MetaTrader가 C#에서 이미 구현된 많은 라이브러리를 사용할 수 있는 기회를 제공합니다.
구성 요소 개체 모델(COM)은 90년대 초 Microsoft에서 도입한 바이너리 인터페이스 표준입니다. 이 기술의 핵심 아이디어는 내부 구현을 모른 채 다른 COM 개체에서 다른 프로그래밍 언어로 만든 개체를 사용할 수 있도록 하는 것입니다. 이러한 요구 사항은 구현과 완전히 분리된 엄격하고 잘 정의된 COM 인터페이스를 구현하도록 강제합니다.
사실 COM은 .NET 기술로 대체되었으며 Microsoft는 COM 대신 .NET을 사용하도록 밀어붙였습니다. 이전 코드와의 역호환성을 제공하기 위해 .NET은 COM과 양방향으로 협력할 수 있습니다. 즉, .NET은 COM 메소드를 호출할 수 있고 COM 개체는 .NET 관리 코드를 사용할 수 있습니다.
이 기능을 COM 상호 운용성 또는 COM 상호 운용성이라고 합니다. COM interop API는 관리형 System.Runtime.InteropServices 네임스페이스에 있습니다.
작성자: investeo