Fehler, Irrtümer, Fragen - Seite 1593
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Magische Schrift dreht die Zeit um ;-)
Das Smartphone erhält eine Meldung über eine Produktbewertung, aber nicht auf dem LC oder oben auf der mcl Website.
Kein Fehler, aber ich kann nicht anders als teilen
Schreiben
Compiler gibt eine Warnung aus
ungültiges Datum *****.mq4 115 46
Es wird auch auf gültige Datumsstrings geprüft, ich bin schockiert) (30 Tage im Juni)
Offensichtlich interessiert das niemanden, aber ich werde es noch einmal schreiben.
Die eigentliche Aufgabe besteht darin, Arrays mit einer Gesamtgröße von etwa 100 % des freien Speichers zu erstellen, sie schnell mit Zahlen zu füllen, Berechnungen durchzuführen und sie wieder freizugeben.
Ich versuche, die freie Speichergröße mit
Ergebnis: 23987 MB, mein physischer Speicher ist 12141 MB, also halb so viel.
Ich weiß, dass diese Zahl für Marsmenschen gilt, aber ich glaube sie trotzdem und schreibe ein Skript, um sie zu testen:
Ich erhalte ein logisches Ergebnis - es ist unmöglich, array3 zuzuweisen, weil der Speicher aufgebraucht ist.
Dann entkommentiere ich die Zeile, in der ich angebe, wie viel Speicherplatz jetzt zur Verfügung steht:
Danach wird das Skript erfolgreich ausgeführt.
Ich möchte den Entwicklern nicht zur Last fallen, aber es ist wichtig zu wissen, wie viel Speicherplatz verfügbar ist.
Bitte machen Sie es möglich, es durch TerminalInfoInteger zu wissen.
Ist Ihnen bewusst, dass Sie in den meisten Fällen nicht den gesamten verfügbaren Speicher abrufen können?
Es gibt so etwas wie eine Speicherfragmentierung. Sie haben beschlossen, den gesamten Speicher in 5 Fragmente aufzuteilen - und das System verfügt über kein einziges ununterbrochenes Speicherfragment in der von Ihnen benötigten Größe.
Ist Ihnen bewusst, dass Sie in den meisten Fällen nicht den gesamten verfügbaren Speicher abrufen können?
Es gibt einen solchen Begriff - die Speicherfragmentierung. Sie haben beschlossen, den gesamten Speicher in 5 Fragmente aufzuteilen - aber das System verfügt nicht über ein einziges zusammenhängendes Stück Speicher in der von Ihnen benötigten Größe.
1. Können Sie zunächst herausfinden, was der Parameter TERMINAL_MEMORY_AVAILABLE physisch bedeutet?
2. Was die Fragmente betrifft, so sollte dies meiner Meinung nach vom Windows-Speichermanager gehandhabt werden, nicht vom Programmierer.
Ich muss wissen, wie viel ich zu einem bestimmten Zeitpunkt nutzen kann, z. B. möchte ich 50 % des verfügbaren Speichers nutzen.
Eine weitere echte Aufgabe ist die CopyTicks-Anfrage. Wenn Sie mehr Ticks anfordern, als Speicherplatz zur Verfügung steht, erhalten Sie "out of memory".
Eine weitere echte Herausforderung ist die CopyTicks-Anfrage. Wenn Sie mehr Ticks anfordern, als Speicherplatz zur Verfügung steht, erhalten Sie "out of memory".
Alternativ können Sie die Daten in eine Datei hochladen und von dort die gewünschten Segmente übernehmen
Das ist zu langsam für mich. Ich möchte alles aus dem Gedächtnis machen. Eigentlich wird es jetzt gemacht, aber ich muss GlobalMemoryStatusEx aufrufen, um die Größe des verfügbaren Speichers zu erfahren.
Dieses Problem ist besonders akut, wenn man auf Cloud-Agenten optimiert, über deren Fähigkeiten man von Anfang an nichts weiß. Es ist unmöglich, die tatsächliche Menge an verfügbarem Speicher dort zu bestimmen, weder durch MQL noch durch WinApi (weil dll-Aufrufe verboten sind).
Es ist wirklich unklar, welchen praktischen Sinn TERMINAL_MEMORY_AVAILABLE dann noch hat. Warum sollten wir es einführen, wenn es uns weder glücklich noch unglücklich macht?