Fehler, Irrtümer, Fragen - Seite 427

 
uncleVic:

Liefert EMPTY_VALUE, wie wir es zurückgeben, wenn die Datei nicht geöffnet ist. Wenn es bequemer ist, 0,0 zu erhalten, geben Sie 0,0 zurück.

Und ich muss etwas zurückgeben. Das Lesen einer Datei, die nicht geöffnet wurde, ist nicht gut.

Über offene Fehler. Schreiben Sie das so:

Hier ist ein Bildschirmfoto des Testers. Ist es im Terminal dasselbe?


Ja im Terminal ist das gleiche und der Fehler Dies ist, was es sagt:

Die Datei ist 20 MB groß und enthält etwa 2,5 Millionen Werte.

gleich zu Beginn des Tests 20 Mal während der Öffnung gelang es

Zu Beginn des Tests, als ich die Datei etwa 20 Mal öffnete, gelang es mir, die gewünschten Werte zu erhalten, dann kam immer wieder die Fehlermeldung 5004 - Datei konnte nicht geöffnet werden,

Ich habe es mit 2 mb von etwa 400k Werten versucht - es öffnet sich, aber niemand will mehr, ich habe mir die Daten angesehen

Task-Manager, 2,5 gb RAM ist genug. (weitere 500 mb frei!)

 

Der CODE POLTERGHEIST ist in meinem Computer gestartet, wenn er vorher eine Datei von 20 mb nicht geöffnet hat.

Zurzeit gibt es einen Test mit einer offenen Datei von 38 MB mit 5,5 Millionen Werten (Daten aus dem Jahr 2005),

aber seit 2001 - ca. 10 Mio. Werte und mit einer Größe unter 65 MB, lässt es sich nicht öffnen. Es ist interessant - und es ist nicht klar, warum?

Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
Файловые операции / FileOpen - Документация по MQL5
 
Renat:
Leider hilft die angegebene Karte nicht mehr. Wenn es sich um einen Laptop handelt, ist die Situation hoffnungslos. Andernfalls können Sie für 1000-1500 Rubel eine anständig leistungsstarke Grafikkarte kaufen, die alle Leistungsprobleme beseitigen wird.


So sagen Sie mir mt4 \ mt5 durch DirectX 2D-Beschleunigung funktioniert oder was ... ?


Welche der oben genannten Parameter sind für die Vektorgrafik-Beschleunigung wichtig ... oder alle?

Es gibt noch eine andere Frage ... Treiber für HD2000 im Prozessor eingebettet, unterstützen offiziell nicht Windows Server 2008 r2 SP1 64bit, -

aber nur vista und 7ka 64 bit ....


diese unvollständige Kompatibilität könnte eine gewisse Wirkung haben ... ?

(obwohl die Treiber auf sind, laufen auch in HD Spiele...)


2. Was ist mit mt4/mt5-Plattformen mit 2D-Video-Hardware-Kompatibilität auf Windows Server 2008 r2 SP1 64bit ?


Welcher Hersteller ist am besten geeignet ... Radionik ... nVidia ?


Geschwindigkeits- und Adapterkompatibilitätstests für mt4/mt5 durchgeführt .... ?


danke.

 
Im_hungry:

Ja im Terminal das gleiche und der Fehler Dies ist, was es sagt:

Dateigröße 20 mb, etwa 2,5 Millionen Werte

Zu Beginn des Tests war es etwa 20 Mal möglich, während des Öffnens

Zu Beginn des Tests war das Öffnen der Datei etwa 20 Mal erfolgreich, dann kam immer wieder die Fehlermeldung 5004 - die Datei konnte nicht geöffnet werden,

Ich habe versucht, mit 2 mb. etwa 400 Tausend Werte - es öffnet, aber es wird nicht größer öffnen, sah ich die Daten

Task-Manager, 2,5 gb RAM ist genug (weitere 500 mb frei ! (weitere 500 mb frei!)

Ich habe nicht viel gelesen, aber der hervorgehobene Text ist mir aufgefallen... Werden Sie die Datei schließen?

Wird der Deskriptor überhaupt richtig behandelt?

 
AlexSTAL:

Ich habe nicht viel gelesen, aber der hervorgehobene Text ist mir aufgefallen... Werden Sie die Datei schließen?

In der Regel richtig behandeln seine Deskriptor?

Die Logik (nach den angegebenen Codes zu urteilen) ist fast korrekt. Abgesehen von der Tatsache, dass es nach der Überprüfung des Handles liest und schreibt (und dann auch die Datei schließt).

Ich denke, das Problem ist hier ein anderes:

1. Der Indikator öffnet bei jedem Tick die Datei, schreibt Daten und schließt die Datei.

2. Der Expert Advisor (ich glaube, bei jedem Tick) öffnet die Datei, liest Daten und schließt die Datei.

Je größer die Datei ist, desto wahrscheinlicher ist es, dass die geöffnete Datei vom Indikator geöffnet wird, da dies in verschiedenen Strömen geschieht. Und da das Open-FlagFILE_SHARE_READ nicht verwendet wird, hat das Konsequenzen.

Meiner Meinung nach kann das Problem wie folgt behandelt werden:

1) Öffnen Sie die Datei (sowohl im Indikator als auch im Expert Advisor) in OnInit mit dem Flag FILE_SHARE_READ.

2. Rufen Sie FileFlush(handle) im Indikator nach dem Schreiben auf .

3. Schließen Sie die Datei in OnDeinit.

Zum Beispiel so.


Документация по MQL5: Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов - Документация по MQL5
 
tester_el_pro:


So sagen Sie mir mt4 \ mt5 durch DirectX 2D-Beschleunigung funktioniert oder was ... ?


Das Terminal verwendet das normale Windows-GDI, das einen 2D-Beschleuniger benötigt.

Wenn Sie sich für eine Karte entscheiden, holen Sie sich eine beliebige externe 3D-Karte, selbst die niedrigste Preisklasse - sie wird ausreichen.
Und Sie müssen nicht die grundlegenden Leistungsmerkmale von Grafikkarten vergleichen.

 
uncleVic:

Die Logik ist (nach den angegebenen Codes zu urteilen) fast korrekt. Abgesehen von der Tatsache, dass es nach der Überprüfung des Handles liest und schreibt (und dann auch die Datei schließt).

Meiner Meinung nach könnte eine Lösung des Problems folgendermaßen aussehen:

1. Öffnen Sie die Datei (sowohl im Indikator als auch im Expert Advisor) in OnInit mit dem Flag FILE_SHARE_READ.

2. Rufen Sie FileFlush(handle) im Indikator nach dem Schreiben auf .

3. Schließen Sie die Datei in OnDeinit.

Zum Beispiel so.


Danke dafür, wenn Sie es in Zukunft in Echtzeit verwenden

Ich werde Ihren Rat in Zukunft nutzen, um mit der Datei von Expert Advisor und Indikator zu arbeiten.

 
AlexSTAL:

Ich habe nicht viel gelesen, aber der hervorgehobene Text ist mir aufgefallen... Schließen Sie die Datei?

Behandeln Sie den Deskriptor überhaupt richtig?

Ja, natürlich - er sieht die Datei, will sie aber wegen des Öffnungsfehlers 5004 nicht lesen
 
uncleVic:

Die Logik ist (nach den angegebenen Codes zu urteilen) fast korrekt. Abgesehen von der Tatsache, dass es nach der Überprüfung des Handles liest und schreibt (und dann auch die Datei schließt).

Ich denke, das Problem ist hier ein anderes:

1. Der Indikator öffnet bei jedem Tick die Datei, schreibt Daten und schließt die Datei.

2. Der Expert Advisor (ich glaube, bei jedem Tick) öffnet die Datei, liest Daten und schließt die Datei.

Je größer die Datei ist, desto wahrscheinlicher ist es, dass die geöffnete Datei vom Indikator geöffnet wird, da dies in verschiedenen Strömen geschieht. Und da das Open-FlagFILE_SHARE_READ nicht verwendet wird, hat das Konsequenzen.

Meiner Meinung nach kann das Problem wie folgt behandelt werden:

1) Öffnen Sie die Datei (sowohl im Indikator als auch im Expert Advisor) in OnInit mit dem Flag FILE_SHARE_READ.

2. Rufen Sie FileFlush(handle) im Indikator nach dem Schreiben auf .

3. Schließen Sie die Datei in OnDeinit.

Ungefähr so.



Es tut mir leid, die Arbeit des Indikators ist anders,

1. vor dem Test im Terminal führe ich den Indikator aus

2. Es speichert die Taktzeit und ihren Korrelationswert für jeden Takt

3. ich habe die Datei in den Tester-Ordner gelegt, wo sie unter C:{Programme\MetaTrader 5\tester\Agent-127.0.0.1-3000\MQL5\Files liegen sollte.

4. ich starte einen Expert Advisor, der durch das Öffnen von Balken funktioniert - und seit 2005 liest er alle aufgezeichneten Daten

Er liest (38 Mb), aber seit 2002 liest er nicht mehr (67 Mb)

 

Ich habe versucht, dasselbe mit demselben Tool aufzuzeichnen, aber in mt4

Ich habe die bin-Datei in den mt5-Tester-Ordner übertragen - keine der Dateien

es öffnet sich nicht - Fehler 5004, in MT5 öffnet es sich noch etwas.


Ich habe das Datenlogging im MT4-Indikator (alle Daten werden korrekt geschrieben) wie folgt implementiert:

      Corr = GetCorrelation();
      Pos = iBarShift(Symbol(), Period(), Times[CurrPos]);
      Buffer[Pos] = NormalizeDouble(Corr,3);
//------
      datetime bar2 = iTime(Symbol1, 0, Pos);
      Print("Buffer[Pos]...",Buffer[Pos],"...bar2...",bar2);
      handle= FileOpen("kor.bin", FILE_BIN|FILE_READ|FILE_WRITE, ";");
      if(handle<1) Print("can't open file error-",GetLastError());
      if (handle>=1)
       {
        FileSeek(handle,0,SEEK_END);
        FileWriteDouble(handle,bar2,DOUBLE_VALUE); 
        FileSeek(handle,0,SEEK_END);
        FileWriteDouble(handle,Buffer[Pos],DOUBLE_VALUE); 
        FileClose(handle);
       }
//------
      CurrPos++;

Aber das Lesen in mt5 durch einen EA bleibt gleich:

double proverka()
{
 if (FileIsExist("kor.bin",0)==true) Print("ФАЙЛ ОБНАРУЖЕН = ...");
 handle= FileOpen("kor.bin", FILE_BIN|FILE_READ);
 if(handle < 0) Print("-----Неоткрывается :- Почему? Потому что произошла ошибка ",GetLastError());
 ulong file=FileSize(handle);
 ulong N = 0.0;
 double kor = 0.0;
 datetime bar[1];
 CopyTime(Symbol_1,NULL,0,1,bar);
 ulong New = (ulong) bar[0];
 while (N < file)
  {
   kor=FileReadDouble(handle); 
   N = FileTell(handle);
   //Print("1...kor=",kor,"N=",N,"file=",file,"New=",New);
   if (kor == New) 
    {
     double ss = FileReadDouble(handle);
     FileClose(handle);
     Print("2...ss=",ss);
     return (ss);
     break;
    }
   if (New < kor)
    {
     Print ("New=",New,"kor=",kor);
     return (0.0);
     break;
    }
  } 
 Print("ВСЕЕЕЕЕЕ",kor);
 FileClose(handle);
 return (kor);
}
//=

Ist es möglich, dass ein EA in mt5 eine in mt4 erstellte Datei öffnen kann?

Grund der Beschwerde: