Diskussion über "Wie man eine DLL für MQL5 schreibt und Daten in 10 Minuten austauscht". - Seite 2

 
Ich habe nicht eine Sache mit der Übergabe von Zeichenfolgen an dll in MQL5 noch
getestet.

Ich habe ein solches Problem mit Stringübergabe in MQL4-DLL bemerkt. Im MQL4-Code rufe ich die Funktion in der DLL auf und übergebe den String:

#import "MyDll.dll"
 void passSymbol(string symb);






void start() {

    passSymbol(Symbol());

}

und in der DLL erhalte ich diese Zeichenfolge mit einem Toolnamen.

_DLLAPI int __stdcall passSymbol(char* symbol) {
   указатель symbol в какой-то момент не содержит имени инструмента а левые символы вообще.
}


Zu einem bestimmten Zeitpunkt (es kann einen halben Tag lang gut funktionieren) empfängt die DLL plötzlich eine linksläufige Zeichenfolge mit unklaren Zeichen anstelle des Instrumentennamens.
Vielleicht können Sie einen ähnlichen Code in mql5 überprüfen? Der Speicherzeiger scheint in MQL4 nicht korrekt zu sein, oder es gibt manchmal einen Konflikt beim Zugriff auf die Stromlinien innerhalb des Terminals.

Die Double-Arrays und int-Variablen werden ohne Probleme korrekt durchlaufen.

Ich werde einen Test für MQL5-DLL schreiben, sobald die Zeit dafür da ist. Aber wenn Sie auch dieses Zeug testen, schreiben Sie einen solchen Test, um die Stabilität der Stringübergabe an die DLL zu überprüfen, indem Sie den Prozess bei jedem Tick für eine lange Zeitspanne wiederholen.

 
GarF1eld:

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.

Renat:

Es geht darum, dass wir nicht die Aufgabe haben, "die Schnittstelle für die Abgabe von Angeboten bereitzustellen".

Unsere Aufgabe 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üssten.

Die Antwort ist sicherlich interessant. Unter der Überschrift "How to write a DLL for MQL5 and exchange data in 10 minutes" lohnt es sich, den Artikel "Data transfer between indicators - a simple solution of a painful problem " zu lesen und mit dem oben genannten Problem zu vergleichen (kursiv gedruckt).
 
Renat:

Der Punkt ist, dass es nicht unsere Aufgabe ist, "eine Schnittstelle für die Abgabe von Angeboten bereitzustellen".

Unsere Aufgabe ist es, eine vollständige und autarke Umgebung für die Entwicklung von Analysesystemen zu schaffen. Eine solche Umgebung, so dass auch Programme von Drittanbietern nicht viel brauchen, um verwendet werden.


Die GUI ist sehr schwach - es dauerte 2 Tage, um die Logik zu schreiben, und einen ganzen Tag, um die berechneten Informationen in irgendeiner Weise anzuzeigen

Daraufhin habe ich alles deaktiviert - ich habe den Datentransport aufgebaut(https://www.mql5.com/ru/forum/382) und bin jetzt zufrieden.

Sind die Ziele der Entwickler nicht zu hoch gesteckt?

Und warum das Rad neu erfinden, wenn alles schon vor langer Zeit gemacht wurde (C, Delphi, ...)?

 
yu-sha:

Die GUI ist sehr schwach - ich habe 2 Tage gebraucht, um die Logik zu schreiben, und einen ganzen Tag, um die berechneten Informationen in irgendeiner Weise anzuzeigen

Am Ende habe ich alles aufgegeben - ich habe den Datentransport(https://www.mql5.com/ru/forum/382) gebaut und genieße mein Leben

Sind die Ziele der Entwickler nicht zu hoch gesteckt?

Und warum sollte man das Rad neu erfinden, wenn alles schon vor langer Zeit gemacht wurde (C, Delphi, ...)?

IMHO begann das Problem mit MT5 schon bei seiner Einführung: das Fehlen einer klaren Vorstellung davon, was dieses Produkt lösen soll. Entweder handelt es sich um eine aktualisierte und auf MT4 basierende, aber in Bezug auf Geschwindigkeit und erweiterte Funktionen auf eine neue Version angehobene Handelsplattform oder um eine neue moderne Handelsplattform mit einer gut durchdachten Struktur und Erweiterbarkeit (d. h. mit Geschäftsklassen oder einem Handelsrahmen zur Durchführung klar definierter spezifischer Aufgabenklassen und basierend auf einer modernen Programmiersprache/-umgebung mit ihrer allgemeinen Funktionalität und weithin verfügbaren Software-Support-Tools). Dieses Dilemma zu lösen, indem man versucht, Gegensätze zu kombinieren, indem man sozusagen eine Art Kompott braut, durch die Methode des "Stegreifspiels der talentiertesten Solisten", scheint nicht ganz gelungen zu sein.

Wenn es scheint, jemand reinen Unsinn ohne einen Schatten der konstruktiven, zum zweiten Mal zu einem Badehaus führen, oder schießen ihn für immer :)

 

2Pisara

Gehen Sie der Sache auf den Grund.

MQL ist eher für Händler mit geringen Programmierkenntnissen geeignet. A la Basic für Dummies.

Ich habe nichts gegen eine solche Position - auch dafür danke ich Ihnen.

Aber die Positionierung von MQL5 als"eine vollständige und autarke Umgebung für die Entwicklung von Analysesystemen. Dies ist die Art von Umgebung, in der selbst Programme von Drittanbietern nicht angewendet werden müssen."Dies ist eine ernsthafte Bitte. Es wird Jahre der Arbeit erfordern, nicht nur von einzelnen Enthusiasten, sondern von einem Team professioneller Programmierer unter der Leitung eines guten Architekten, um den Kern mit einer verdaulichen Suppe zu "verbinden". Zu Budget und Management kann ich nichts sagen - das ist eine andere Ebene des Projekts.

Ich möchte die Mitarbeiter des Unternehmens bei ihrer harten Arbeit unterstützen. Ich möchte ihnen für ihre harte Arbeit danken. Aber seien wir ehrlich - MQL5 ist nur eine Etappe auf dem Weg zum Ziel.

P.S. Moskau wurde nicht an einem Tag erbaut

 
Ja, es ist beängstigend, daran zu denken oder sich zu erinnern, wie viele unnötige Dinge jeder von uns getan hat, tut und weiterhin tun wird!
 
Renat:

Es ist sehr einfach, die Anrufgeschwindigkeit zu überprüfen. Sie können ihn zum Beispiel grob wie folgt berechnen:

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 keine Kontrolle und kein Piping gibt.

Wir werden auf jeden Fall versuchen, die Verluste bei DLL-Aufrufen in MetaTrader 5 zu reduzieren.

Es wäre gut, dem Compiler eine spezielle Anweisung zu geben, die standardmäßig aktiviert ist und die diese Wrapper in die DLL-Aufrufe einfügt. Wenn sie deaktiviert sind, ist es eine gute Idee, diese Wrapper nicht einzufügen. Wie Debug- und Release-Modus. Doch manchmal sind 57 000 Euro nicht genug. Die gleiche Zeit wird durch die Laufzeit der DLL aufgezehrt.
 
HideYourRichess:
Es ist eine gute Idee, eine spezielle Compiler-Direktive zu erstellen, die standardmäßig aktiviert ist und die diese Wrapper in die DLL-Aufrufe einfügt. Wenn sie deaktiviert sind, ist es ratsam, diese Umhüllungen nicht einzufügen. Wie Debug- und Release-Modus. Doch manchmal sind 57 000 Euro nicht genug. Die gleiche Zeit wird von der Laufzeit der DLL in Anspruch genommen.
Mit dem 240er Build wurden die Wrapper vereinfacht, jetzt liegt die Anrufrate bei 19.911.000 Anrufen pro Sekunde.
 
Zur MQL / MQL2 / MQL4 / MQL5-Diskussion: Offenbar kennen Sie unsere Geschichte nicht sehr gut. Gehen Sie zumindest auf die Website des Unternehmens und lesen Sie sie.


Wir haben seit 2001 methodisch 4 Generationen von Handelssprachen mit einer großen Gemeinschaft von Händlern entwickelt. Die Konkurrenten starben, ihre Kontrollsprachen entwickelten sich nicht, während wir arbeiteten, arbeiten und weiter arbeiten werden.

 

Renat: 

und wir haben gearbeitet, arbeiten und werden weiter arbeiten.

Wie der Urgroßvater Lenin vermacht hat.

;)

Ich weiß nicht mehr, ich glaube, ich habe schon mal gefragt...
Ist es möglich, einfache DLLs mit den µl5-Tools zu erstellen?
es einfach in Unitor schreiben und kompilieren...?
Grund der Beschwerde: