Diskussion über "Wie man eine DLL für MQL5 schreibt und Daten in 10 Minuten austauscht".
Ein sehr interessanter Artikel. Er fehlt nur der Vollständigkeit halber:
1. Woher bekommen wir die Zitate, können sie aus hst-Dateien übernommen werden?
2. Wie kann man diese Bibliothek mit der Bibliothek in MateLab 2009a oder 2009b kompatibel machen? Es gibt dort auch C und C++, nicht wahr?
Eine sehr große Bitte.
- Die Zitate stammen aus dem Terminal - sie sind jetzt sowohl detailliert als auch tiefgehend (10 Jahre und mehr).
Auf keinen Fall sollten wir direkt in die Binärdateien der Terminalspeicher schauen - das führt nur zu schwerwiegenden Konflikten beim Datenzugriff. Auch wenn die Tests gezeigt haben, dass es funktioniert hat, gibt es einen Moment des gleichzeitigen Zugriffs auf diese Daten von Terminal und externem Programm, und jemand wird als Folge davon abstürzen. Die Menschen sind schon oft darüber gestolpert. - Das Andocken von Bibliotheken in MQL5 ist jetzt viel einfacher, dank der transparenten Unterstützung für stdcall / cdecl Konventionen bei DLL-Aufrufen.
Wenn jemand einen guten und detaillierten Artikel über die Verknüpfung von MetaTrader 4/5 und Matlab via DLL schreibt, wird er $200 oder mehr verdienen.
Die MQL4.community hat bereits Artikel über Matcad - MetaTrader 4 Bundle:
- www.mql5.com
Ich muss zwei Terminals miteinander verbinden, damit sie ihre Angebote in Echtzeit in Excel übersetzen.
In MT4 könnte man das mit DDE machen. In MT5 scheint es, dass durch DLL ist der einzige Weg aus.
Aber wenn jeder eingehende Tick an die DLL weitergeleitet wird... Ich denke, es wird etwas unvorstellbar Langsames sein. Natürlich habe ich noch nicht versucht, es zu implementieren... aber ehrlich gesagt, möchte ich es nicht ausprobieren. Es wird ein Alptraum sein.
Kurz gesagt, lassen Sie uns DDE zu MT5 zurückbringen. Es ist ein Anachronismus, aber manchmal kann man es brauchen.
P.S. Vielen Dank für diesen Artikel, er kommt genau zum richtigen Zeitpunkt. Ich habe genau so ein Material vermisst.
Renat, wie sieht es mit der Aufrufgeschwindigkeit der DLL aus?
Es ist sehr einfach, die Anrufgeschwindigkeit zu überprüfen. Eine grobe Berechnung kann zum Beispiel wie folgt durchgeführt werden:
_DLLAPI int __stdcall fnCalcSpeed(int var1,int var2,int var3) { return(0); } #import "MQL5DLLSamples.dll" int fnCalcSpeed(int var1,int var2,int var3); #import int calls=0; int ticks=GetTickCount(); while(GetTickCount()-ticks<1000) { for(int i=0;i<1000;i++) fnCalcSpeed(1,2,3); calls++; } Print(calls * 1000, "вызовов в секунду");
Ich habe 57.000 Anrufe pro Sekunde auf einem Quad Q9400 @2.66Ghz. Derselbe Code führt im MetaTrader 4 zu etwa 20.000.000 Aufrufen pro Sekunde, da es dort keine Kontrolle und kein Piping gibt.
Wir werden auf jeden Fall versuchen, die Verluste bei DLL-Aufrufen in MetaTrader 5 zu reduzieren.
Ah, nun, wenn es etwa 50.000 Anrufe pro Sekunde gibt, denke ich, dass es auch möglich ist, Zitate über die DLL zu übertragen. Es wird keine Verluste geben.
Vielen Dank für den Code.
Wenn es möglich ist, Kurse nur über eine DLL zu exportieren, bedeutet dies, dass für jedes zu exportierende Instrument ein Skript erstellt werden muss. Was ist, wenn es viele davon gibt? Zum Beispiel, 50?
Ich verstehe, dass es möglich ist, Kurse für viele Instrumente in einem Skript zu übergeben, aber es wird kein vollwertiger Ersatz für DDE sein, bei dem die Ticks nicht verloren gehen.
Der Punkt ist, dass es nicht unsere Aufgabe ist, eine "Angebotsschnittstelle" bereitzustellen.
Unser Ziel ist es, eine vollständige und autarke Umgebung für die Entwicklung analytischer Systeme zu schaffen. Eine solche Umgebung, so dass auch Programme von Drittanbietern nicht verwendet werden müssen.
- 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.
Veröffentlichter Artikel Wie schreibt man eine DLL für MQL5 in 10 Minuten und tauscht Daten aus?:
Autor: Renat Fatkhullin