1) nur der server hat das recht, den speicher zu verändern. die clients lesen ihn.
2)- schauen Sie sich Pipe an. Dort sind die "Ereignisse" der Datenankunft selbsterklärend implementiert - Sie haben Daten, wir nehmen sie, wir warten auf sie.
3)- ja, Sie müssen einen Server schreiben oder von MSDN kopieren, aber fertige Clients können direkt in MQL5 verwendet werden.
4) leider kann man dieses Problem nicht mit der Polling-Periodizität lösen. Sleep(1) sollte auch bei der Arbeit mit dem Speicher keine Geräusche machen. Man sollte das Timing der Funktionen überprüfen, vielleicht gibt es irgendwo zusätzliche Durchläufe und Last.
1 - nur ein Server (von mir aus Ihrer Arbeit geschrieben)
2 - interessant, ich werde nur schauen, ich habe eine Aufgabe "so zeitnah wie möglich", um Daten 4(8) Bytes zu übertragen, d.h. den ganzen Zyklus (muss sehr oft durchgeführt werden)
3 - ich denke, in Analogie zu dem Artikel werde ich meine eigene machen, aber bisher funktioniert das Problem auch das Testbeispiel nicht.
4 - ja, ich habe einige Dinge umgeschrieben, den Code optimiert, es scheint besser zu sein.
2013.04.01 00:03:49 _tradeBuySell_mt4 GBPCHF,H1: -unknow err(0) h=0
2013.04.01 00:03:49 _tradeBuySell_mt4 GBPCHF,H1: function 'MemOpen' call from dll 'MemMap32.dll' critical error c0000005 at 666013E6.
Hier ist der Code
#include <stdlib.mqh>#define modeOpen 0// Flagge öffnen#define modeCreate 1// Erstellungskennzeichen#import "MemMap32.dll"int MemOpen(string path,int size,int mode,int &err); // Datei im Speicher öffnen/erstellen, Handle holenvoid MemClose(int hmem); // Schließen der Datei im Speicherint MemGrows(int hmem,string path,int newsize,int &err); // die Größe der Datei im Speicher erhöhenint MemWrite(int hmem,int &v[], int pos, int sz, int &err); // int(4) Vektor v ab der angegebenen Position pos, Größe sz in den Speicher schreibenint MemRead(int hmem, int &v[], int pos, int sz, int &err); // Lesen des Vektors v ab der angegebenen Position pos mit der Größe sz#importint hmem,err; // string file; // Dateiname im Speicherint init()
{
file="Local\\123"; // Dateiname im Speicher
hmem=MemOpen(file,-1,modeOpen,err); // Öffnen einer vorhandenen Dateiif(hmem>0) // wenn geöffnet
{
Print("open OK h="+hmem);
}
elseif(err==-2) // wenn nicht geöffnet,
{
Print("-err("+err+") memfile not found.");
}
else
{
Print("-unknow err("+err+") h="+hmem);
return(0);
}
Print("OK ("+err+") h="+hmem);
return(0);
}
OK 1 01:10:31 tradeBuySell 'D:\MT5******\MQL5\Libraries\MemMap32.dll' is not 64-bit version
JF 1 01:10:37 tradeBuySell (GBPUSD,H1) Cannot load 'D:\******\MQL5\Libraries\MemMap32.dll'
Die x64-Version von terminal mt5 wird automatisch auf dem Server installiert.
Ich habe Win7x64 auf meinem Laptop, aber ich habe eine normale 32-Bit-Version von Terminal und es versucht nicht, selbst auf x64 zu aktualisieren.
1) nur der server hat das recht, den speicher zu verändern. die clients lesen ihn.
2)- schauen Sie sich Pipe an. Dort sind die "Ereignisse" der Datenankunft selbsterklärend implementiert - Sie haben Daten, wir nehmen sie, wir warten auf sie.
3)- ja, Sie müssen einen Server schreiben oder von MSDN kopieren, aber fertige Clients können direkt in MQL5 verwendet werden.
4) leider kann man dieses Problem nicht mit der Polling-Periodizität lösen. Sleep(1) sollte auch bei der Arbeit mit dem Speicher keine Geräusche machen. Man sollte das Timing der Funktionen überprüfen, vielleicht gibt es irgendwo zusätzliche Durchläufe und Last.
1 - nur ein Server (von mir aus Ihrer Arbeit geschrieben)
2 - interessant, ich werde nur schauen, ich habe eine Aufgabe "so zeitnah wie möglich", um Daten 4(8) Bytes zu übertragen, d.h. den ganzen Zyklus (muss sehr oft durchgeführt werden)
3 - ich denke, in Analogie zu dem Artikel werde ich meine eigene machen, aber bisher funktioniert das Problem auch das Testbeispiel nicht.
4 - ja, ich habe einige Dinge umgeschrieben, den Code optimiert, es scheint besser zu sein.
Ich habe versucht, Ihre dll zu mt4 hinzuzufügen.
Hier ist der Codeden Schraubendreher nach rechts drehen
den Schraubenzieher richtig drehen
Ihr Beispiel im Link verwendet MemMap.dll
Sie ist nicht da, es ist MEmMap32.dll.
In mt5 funktioniert es, aber in mt4 findet es die Datei nicht.
Ursprünglich falsch deklarierter err hätte ein Array sein sollen, danke dafür
Die x64-Version von terminal mt5 wird automatisch auf dem Server installiert.
Ich habe Win7x64 auf meinem Laptop, aber ich habe eine normale 32-Bit-Version von Terminal und es versucht nicht, selbst auf x64 zu aktualisieren.