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

 
mql5 писал(а)  :

1) Welche Version des Terminals ist 32 oder 64 Bit?

2) Welche Version der DLL ist 32 oder 64 Bit?

1) Gibt es eine Wahlmöglichkeit? Ich denke, dass nur x86-Downloads von hier...

2) dll 32

 

Die Neuinstallation von MT5 führte zu folgendem Ergebnis. Beim Starten des Skripts erscheint die folgende Information im Protokoll Cannot find function fnCalculateSpeed in 'MQL5DLLSamples.dll'.

Ich hänge einen Screenshot der Bibliothek aus Dependency Walker an, nur für den Fall, dass Sie es nicht schaffen.

 
denkir:

Die Neuinstallation von MT5 führte zu folgendem Ergebnis. Beim Starten des Skripts erscheint die folgende Information im Protokoll Cannot find function fnCalculateSpeed in 'MQL5DLLSamples.dll'.

Ich hänge einen Screenshot der Bibliothek aus Dependency Walker an, nur für den Fall, dass Sie es nicht schaffen.

Wie lautet die Build-Nummer des neu installierten Terminals?
 
stringo:
Wie lautet die Build-Nummer des neu installierten Terminals?
Offensichtlich alt, nicht die neueste 240er Version.
 
Renat писал(а) :
Offensichtlich alt, eindeutig nicht der neueste 240er Build.

Ja, definitiv nicht der letzte...

Nach der Aktualisierung auf 240 bild funktionierte der erste Durchlauf des Skripts problemlos. Ich war aufgeregt. Die folgenden Versuche führten jedoch nur zu einem Absturz. MT 4 lief parallel dazu.

 

Nach einem Neustart scheint alles zu funktionieren! :-))

Ich habe die Funktion fnCrashTest(int arr) auskommentiert

Vielen Dank an alle, die geholfen haben!

 
Im Allgemeinen ist es mir nicht gelungen, die Berechnungsgeschwindigkeit mit dll um mehr als den Faktor 2,5 zu erhöhen. Dies zeigt die hohe Geschwindigkeit von MQL5, und für die meisten Handelsaufgaben macht es keinen Sinn, sich mit dll zu befassen, außer wenn es notwendig ist, den Code zu schützen und wenn "schwere" Berechnungen erforderlich sind.
 
joo:
Im Allgemeinen ist es mir nicht gelungen, die Berechnungsgeschwindigkeit mit dll um mehr als den Faktor 2,5 zu erhöhen. Dies zeigt die hohe Geschwindigkeit von MQL5. Für die meisten Handelsaufgaben gibt es keinen Grund, sich mit dll zu befassen, es sei denn, es ist notwendig, den Code zu schützen und wenn "schwere" Berechnungen erforderlich sind.

Die endgültige Registeroptimierung von MQL5 ist noch nicht aktiviert - die Ausführungsgeschwindigkeit wird sich noch erheblich erhöhen.
 

Renat, ich danke Ihnen für den Artikel. Ich denke, viele Menschen werden es mehr als einmal brauchen. Ich habe noch eine Frage zum Thema dll. (Terminal 249, Editor 248).

Beispiel

Wir haben eine libra demo.dll mit nur einer Funktion.

_DLLAPI void __stdcall demo(char *stream, char *buf){ buf=stream;}

Wir haben ein mql-Skript demo.mq5.

#property copyright "2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"

#import "demo.dll"
void demo(string s1, string &s2);
#import

void OnStart(){
   string a="TEST"; string b;
   demo(a,b);
   Print(b);    
}

Der Compiler zeigt keine Fehler oder Warnungen an.

Führen Sie es im Terminal aus und erhalten Sie folgendes Ergebnis

Bei der Überprüfung in der visuellen Fehlersuche habe ich auch herausgefunden, dass die Funktion demo.dll selbst ihr erstes Zeichen hat, nicht eine Zeichenkette.

Die Frage lautet

Wo liegt das Problem? Wie man die Zeichenfolge von MQL zu dll in einer menschlichen Weise übergeben?

 
wchar_t anstelle von char verwenden