Sehr nützlicher Artikel! Ich danke Ihnen für die ausführliche Darstellung.
Ja, ich danke Ihnen.
Eh, Metaquotes hat versucht, die Leistung zu verbessern, um vom Byte-Code wegzukommen... und wir stecken immer noch alle Programme darin! )))
Frage an den Autor: Wurden vergleichende Tests der Ausführungszeit von reinen MQL5-Programmen, DLLs und .NET-Monstern durchgeführt? Es wäre interessant, einen Blick darauf zu werfen.
Ja, danke.
Eh, Metaquotes hat versucht, die Leistung zu verbessern, um vom Byte-Code wegzukommen... und wir werden immer noch alle Programme da reinstopfen! )))
Frage an den Autor: Wurden vergleichende Tests der Ausführungszeit von reinen MQL5-Programmen, DLLs und .NET-Monstern durchgeführt? Es wäre interessant, einen Blick darauf zu werfen.
Ich denke, dass es im Prinzip sehr nützlich ist , mögliche Ressourcen zu erschließen und finde diesen Artikel sehr interessant. Allerdings bin ich kein sehr erfahrener Programmierer und habe dahereinige Fragen.
Aus meiner Sicht gibt mir unmanaged Code die Möglichkeit, die Plattform unabhängig zu entwickeln. Aber wenn jemand Metatrader benutzt, hat er eine definierte Plattform.
Was ist der Vorteil mit unmanaged Code im Allgemeinen und in Kombination mit MQL5 ? - Bitte korrigieren Sie mich , wenn ich etwas missverstanden habe!
Hallo,
Ich denke, dass es im Prinzip sehr nützlich ist , mögliche Ressourcen zu erschließen und finde diesen Artikel sehr interessant. Allerdings bin ich kein sehr erfahrener Programmierer und habe dahereinige Fragen.
Aus meiner Sicht gibt mir unmanaged Code die Möglichkeit, die Plattform unabhängig zu entwickeln. Aber wenn jemand Metatrader benutzt, hat er eine definierte Plattform.
Was ist der Vorteil mit unmanaged code im Allgemeinen und in Kombination mit MQL5 ? - Bitte korrigieren Sie mich , wenn ich etwas missverstanden habe!
Hallo smartwart,
Der Vorteil ist, dass es eine große Menge an bereits entwickeltem Code in C# gibt, den Sie für Handelszwecke verwenden können. In meinem nächsten Artikel werden Sie mehr darüber lesen.
cheerz,
Investeo
Das ist die beste Sache überhaupt! Ich liebe C# und ich habe nach jeder Möglichkeit gesucht, es zum Laufen zu bringen! Die beste Nachricht des Jahres! Ich glaube, das war das letzte Mal, als ich EA in MQL5 geschrieben habe. Ich werde die gesamte Logik in Bibliotheken unterbringen und eine Vorlage EA.mq5 für alle meine EAs verwenden (nur werden sie mit verschiedenen Bibliotheken verlinkt sein).
Ich danke Ihnen!
Ja, danke.
Eh, Metaquotes hat versucht, die Leistung zu verbessern, um vom Byte-Code wegzukommen... und wir werden immer noch alle Programme da reinstopfen! )))
Frage an den Autor: Wurden vergleichende Tests der Ausführungszeit von reinen MQL5-Programmen, DLLs und .NET-Monstern durchgeführt? Es wäre interessant, einen Blick darauf zu werfen.
Von welchem Bytecode sind sie weggekommen? Hatten sie ihn in 4? Dort gab es nur einen langsamen Compiler ohne Optimierung.
Unter .NET gibt es keinen Bytecode, beim Start wird alles in nativen Maschinencode kompiliert, mit Optimierung für einen bestimmten Prozessor. Wenn die Zeit für die erste Kompilierung entscheidend ist, verwenden Sie ngen http://msdn.microsoft.com/ru-ru/library/6t9t5wcf.aspx.
Und Tests ja... wären interessant
Ich persönlich benutze nur 2 der beschriebenen Methoden, von den anderen habe ich nur gehört. Habe wirklich nicht verstanden, wie COM-interop helfen kann, naja es war wohl der Vollständigkeit halber. Der Artikel ist 5.
- msdn.microsoft.com
Von welcher Art von Bytecode sind sie abgekommen? Hatten sie ihn in 4? Es gab nur einen langsamen Compiler ohne Optimierung.
MQL4 hatte Bytecode, während MQL5 in Bytecode kompiliert wird mit anschließender Vorkompilierung in native x86 oder x64 vor der Ausführung. MQL5 verhält sich wie .NET
MQL5 wird als Sprache weiterentwickelt (Entwickler fordern mehr Funktionalität und bessere Kompatibilität mit C++), und sein Optimierer wird verbessert.
In den neuesten Builds ist es nun möglich, Ressourcen (.BMP und .WAV) über #resource direkt in EX5-Dateien einzubinden, wodurch Sie autarke Anwendungen erstellen können. Dies ist eine gute Grundlage für die Entwicklung und den Verkauf vollwertiger Anwendungen für die MetaTrader 5 Plattform. Die Beta-Version des MQL5-Marktes wird bald veröffentlicht werden, wo jeder Entwickler seine Anwendungen verkaufen kann (nach strenger Moderation), und alle Händler werden direkten Zugang zu diesem Shop haben.
Bin ich der einzige, der nicht kompilieren können Vorlagen für unmanaged Export für VS C#?
Ich habe die Vorlage aus dem Artikel genommen (sie ist nicht vollständig, es fehlt dll) und sie mit Bibliotheken von R. Giesecke ergänzt, die hier entnommen wurden. Giesecke Bibliotheken genommen hier http://sites.google.com/site/robertgiesecke/Home/uploads,
habe die Originalvorlage von R. Giesecke, habe auch eine Mischung aus den beiden Vorlagen gemacht, da kommt nichts raus.
Beim Kompilieren der Originalvorlage gibt der Compiler folgendes aus:
------ Построение начато: проект: 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 ==========
Beim Kompilieren anderer Templates etwa das gleiche.
System: W7 x64 SP1 Home Prem Lic.
IDE: VS 2010.
Google hilft nicht (.
Ich habe die Projekt-dll manuell erstellt und nach den Empfehlungen von R. Giesecke, auch kein Ergebnis.
Bitte helfen Sie mit Ratschlägen.
- sites.google.com
Ich habe nicht kompiliert eine Vorlage für die unmanaged Export zu VS C #?
Habe eine Vorlage aus dem Artikel (es ist nicht vollständig, nicht fehlende dll) zu den Bibliotheken von R. Giesecke entnommen , hier http://sites.google.com/site/robertgiesecke/Home/uploads ,
nahm die ursprüngliche Vorlage von R. Giesecke, wie eine Mischung aus zwei Vorlagen, es funktioniert nicht.
Beim Kompilieren der Originalvorlage erzeugt der Compiler das Folgende:
Beim Kompilieren anderer Vorlagen etwa das gleiche.
System: W7 x64 SP1 Home Prem Lic.
IDE: VS 2010.
Google hilft nicht (.
Dll erstellt manuell ein Projekt und ergänzt es gemäß den Empfehlungen von R. Giesecke, das Ergebnis ist auch nicht verfügbar.
Hilfe pliz Beratung.
Hallo kPVT,
Gibt es etwas Windows7 - XP Abwärtskompatibilitätsmodus ind Win7? Wenn die dll im 32-Bit-Modus funktioniert, muss sie auf 64 Bit rekompiliert werden, damit sie funktioniert.
Ich werde versuchen, RGiesecke selbst auf stackoverflow.com zu fragen.
Mit besten Grüßen,
Investeo
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Neuer Artikel Offenlegen von C#-Code in MQL5 mithilfe nicht gemanagter Exporte :
In diesem Beitrag stelle ich verschiedene Interaktionsmethoden zwischen MQL5-Code und gemanagtem C#-Code vor. Ich habe auch mehrere Beispiele dafür bereitgestellt, wie MQL5-Strukturen gegen C# angeordnet werden können und wie sich exportierte DLL-Funktionen in MQL5-Scripts aufrufen lassen. Ich bin überzeugt, dass die hier bereitgestellten Beispiele als Basis für zukünftige Forschungen zum Schreiben von DLLs in gemanagtem Code dienen können. Dieser Beitrag bereitet auch Wege für die Nutzung bereits in C# implementierter Bibliotheken in MetaTrader.
Autor: investeo