Diskussion zum Artikel "Datenaustausch: Erstellen einer DLL für MQL5 in 10 Minuten" - Seite 2

 
LEHayes:

...

Es ist schön und gut, dass Sie es ansprechen, aber es nützt niemandem, sich darüber zu beschweren, wenn er nicht bereit ist, Lösungen oder gar Vorschläge zu unterbreiten, wie man das Ziel erreichen kann.

...

Eigentlich ist es gut, dass pfx es angesprochen und sich darüber beschwert hat, und MetaQuotes sollte dieses Problem lösen, denn sie kennen MetaTrader besser als der Rest von uns (übrigens ist Renat Fatkhullin, der Autor dieses Artikels, auch CEO von MetaQuotes). Nur weil jemand das Thema anspricht, heißt das nicht, dass er/sie eine Lösung für das Problem hat.

Und ich stimme zu, dass es keinen Sinn macht, zu sagen"Es ist besser, seltene Aufrufe zu machen", wenn die .dll tatsächlich bei jedem Tick aufgerufen wird. Und es ist gut, das vom CEO von MetaQuotes zu hören, Ehrlichkeit ist heutzutage eine gute Abwechslung.

@ pfx, es sieht so aus, als hätten sie den von Ihnen zitierten Absatz geändert ...

5. DLL-Aufrufe Wrapper und Geschwindigkeitsverluste bei Aufrufen

Wie bereits oben beschrieben, wird jeder Aufruf von DLL-Funktionen in einen speziellen Wrapper verpackt, um die Sicherheit zu gewährleisten.

Diese Bindung maskiert den Basiscode, ersetzt den Stack, unterstützt stdcall / cdecl Vereinbarungen und überwacht Ausnahmen innerhalb der aufgerufenen Funktionen.

Diese Arbeit führt unweigerlich zu einer Verzögerung der aufrufenden Funktion.

Daher ist es nicht empfehlenswert, sehr häufige DLL-Funktionsaufrufe (Hunderte oder Tausende von Malen pro Sekunde) für kleine Operationen durchzuführen.

Es ist besser, seltene Aufrufe zu machen.

...zu diesem ...

5. DLL-Aufrufe Wrapper und Geschwindigkeitsverluste bei Aufrufen

Wie bereits oben beschrieben, wird jeder Aufruf von DLL-Funktionen in einen speziellen Wrapper verpackt, um die Sicherheit zu gewährleisten. Diese Bindung maskiert den Basiscode, ersetzt den Stack, unterstützt stdcall / cdecl Vereinbarungen und überwacht Exceptions innerhalb der aufgerufenen Funktionen.

Dieser Arbeitsaufwand führt nicht zu einer signifikanten Verzögerung des Funktionsaufrufs.

Ich hoffe, dass sie dieses Problem der Geschwindigkeit von .dll-Aufrufen wirklich lösen und nicht nur einige Absätze des Artikels ändern, um Fragen zu vermeiden.

Apropos Fragen, ich hoffe, dass Renat Fatkhullin die Frage von pfx " Ich meine ernsthaft, was ist das für eine Aussage?" beantworten möchte, denn Renat schrieb in der letzten Zeile des Artikels: "Danke für Ihr Interesse! Ich bin bereit, alle Fragen zu beantworten", oder zumindest die Änderung des Absatzes.

Wir sind auch an Ihrer Antwort interessiert :).

Ich werde mehr darüber schreiben, wenn ich Zeit habe.

 

Ich weiß nicht, wann Renat diesen Artikel geschrieben hat, aber Microsoft bietet Visual Studio 2005 nicht mehr an. Sie bieten Visual Studio 2010 und 2011 Beta an und es sieht so aus, als ob sie 2008 wegschmeißen wollen.

Klicken Sie hier für Microsoft Visual Studio 2010 , und klicken Sie hier für die 2008. Der Installer ist Web-Installer, die ärgerlich ist, wenn Sie langsame Internetverbindung haben,. Sie bieten Offline-Installer als ISO-Image, aber das enthält auch Visual Studio C# und Visual Basic. Nach der Installation benötigen beide Studios einige Updates, die auch in MB-Größe groß sind.

Für diejenigen, die Visual Studio nicht installieren möchten, gibt es andere Alternativen, die Sie sich unter https://en.wikipedia.org/wiki/Comparison_of_integrated_development_environments ansehen können . Meine Favoriten sind NetBeans und Code::Block. NetBeans wird von Oracle unterstützt und ist die Basis für deren Oracle Solaris Studio. NetBeans wird jedoch nicht mit einem Compiler ausgeliefert, so dass man sich mit dem Cygwin oder MinGW Compiler behelfen muss, was für einen Neuling vielleicht lästig ist. Die letzte stabile Version des berühmten DevC++ war vor 7 Jahren, jetzt ist die Website voll von toten Links, es sieht so aus, als ob sich niemand mehr darum kümmert, also würde ich es nicht empfehlen.

Es ist besser, Visual Studio zu verwenden, weil es viele Optionen gibt, mit denen man spielen kann - wenn man weiß, wie.

Download Overview
  • www.microsoft.com
Download free 90-day trials of Visual Studio products, free Visual Studio Express products, and additional Visual Studio software.
 
onewithzachy:

Apropos Fragen, ich hoffe, Renat Fatkhullin, möchte pfx Frage zu beantworten " Ich meine ernsthaft, welche Art von Aussage ist das ", denn Renat schrieb in der letzten Zeile des Artikels, "Vielen Dank für Ihr Interesse! Ich bin bereit, alle Fragen zu beantworten", oder zumindest die Änderung des Absatzes.
Es gibt keine Verlangsamung bei DLL-Aufrufen.
 
Weiß jemand, wie man eine 64-Bit-DLL erstellt oder MQL5 erlaubt, eine 32-Bit-DLL zu laden? MQ5 lädt mein Testskript nicht, weil meine DLL "nicht 64-Bit" ist. Danke!
 
Das ist gut, danke
 

Sehr gutes Tutorial!

Muss ich Dateien Referenz erstellen?

 

Ich muss Fann2MQl.dll (dokumentiert in http://fann2mql.wordpress.com) ändern, weil es in MT5 nicht funktioniert. Der Grund ist, dass in MT5 können Sie nicht öffnen Sie Dateien, wo Sie wollen. Sie müssen an 2 Standardorten geöffnet werden (für den Vorwärtsmodus und den Testmodus).

Die Frage ist also, welche Funktion man anstelle von fopen aufrufen und welche Header-Datei man einbinden sollte? Denn es scheint, dass die Dateien von MT5 aus geöffnet werden müssen. Jeder Versuch, eine Datei unter Umgehung von terminal.exe zu öffnen (wie es bei der Verwendung von fopen aus einer DLL geschieht), wird automatisch entweder an das Installationsverzeichnis oder an den Desktop weitergeleitet, je nachdem, wie terminal.exe gestartet wird (durch Klicken auf das Symbol oder über die Befehlszeile mit dem Parameter /portable).

Diese Weiterleitung ist außerdem bizarr, weil der Name der Datei nur im ersten Buchstaben des Pfades zu ihr steht.

About
  • fann2mql.wordpress.com
Fann2MQL is a Neural Network processing package for MetaTrader4. It enables you to write your own Expert Adviser or Indicator taking advantage of Fast Artificial Neural Network Library. It’s very simple and efficient. You can use up to 1024 network simultaneously without recompiling it and in case you need more power it lets you perform...
 
RyanLeland:

Weiß jemand, wie man eine 64-Bit-DLL erstellt oder MQL5 erlaubt, eine 32-Bit-DLL zu laden? MQ5 lädt mein Testskript nicht, weil meine DLL "nicht 64-Bit" ist. Danke!

Dies kann behoben werden, Anweisungen hier: Projektmappen-Explorer -> Rechtsklick auf die Projektmappe -> Konfigurationsmanager -> Dropdown-Menü der aktiven Projektmappenplattform -> x64 auswählen -> Schließen -> Projektmappe neu erstellen

Hoffentlich hilft das.

Viel Glück!

 

Hallo,

Dies funktioniert nicht mit DLL von Microsoft Visual Studio 2013 Express Edition produziert, siehe beigefügt.

Es scheint nicht die Bibliothek MSVCR120D_APP.DLL und ein Problem mit KERNEL_32 als gut zu finden.

Hat jemand ein ähnliches Problem? Wie kann ich das Problem bitte umgehen?

Vielen Dank für Ihre Hilfe.

 

Unterstützt mql5 den Import von DLLs, die Callback-Funktionen enthalten?

zum Beispiel:

Es gibt eine DLL namens tclient.dll, die folgende Funktion enthält:

typedef TCLIENT_API void(*call_back)(Tick* p);

TCLIENT_API int sub_tick(CTX ctx, const char* insId, call_back f);

Wie sollte ich dann sub_tick in mql5 deklarieren und aufrufen?

#import "tclient.dll"

//Wie deklariere ich die Funktion "sub_tick"?

#import

void ontick(Tick &ticks[])

{}

int OnInit()

{

//Wie ruft man die Funktion "sub_tick" auf?

}