Fehler, Irrtümer, Fragen - Seite 2676
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
MT5 (Build 2347) Warum ist der Overhead so groß, wenn man ein Element nach dem anderen zu einem Array mit ArrayResize hinzufügt, wenn der Speicher für diese Elemente im Voraus reserviert wurde?
Bitte erwägen Sie die Verbesserung des internen Reservierungsalgorithmus mit ArrayResize.
Bei Klassen können wir zum Beispiel davon ausgehen, dass sie zusätzlich zum Konstruktoraufruf eine Art "internes Register in Listen" durchführen.
Und im Rahmen der Reservierung mit ArrayResize kann man neben der direkten Speicherzuweisung versuchen, den Prozess zu optimieren:
- Daten aus dem benachbarten erstellten Element übernehmen (z. B. Zeiger auf eine virtuelle Funktionstabelle);
- eine Vorabregistrierung oder eine Platzreservierung für die "interne Registrierung" von Klassen, die noch nicht erstellt wurden;
Vielen Dank für die Nachricht.
Der ArrayResize-Code ist davor geschützt, leer aufgerufen zu werden (wenn sich die Anzahl der Elemente nicht ändert), so dass der Funktionscode nicht funktioniert.
Eine echte Änderung der Anzahl der Elemente löst je nach Array den einen oder anderen Teil der ArrayResize-Funktion aus.
Dank des von Ihnen vorgestellten Codes konnte ich die Komplexität eines Teils von ArrayResize auf Null reduzieren, was die Funktion für Arrays von Objekten beschleunigen wird
Können Sie mir sagen, wie ich den Speicherverbrauch des Terminals reduzieren kann? Wenn ich einen EA laufen lasse, fordere ich ein paar Millionen Ticks an. Ich rechne mit ihnen und brauche sie nicht mehr. Ich verwende die Tick-Funktionen nur, um neue Ticks zu laden, damit es keine Lücken gibt.
Wegen dieser Millionen Ticks verbraucht das Terminal 500 Mb Speicher und hat es nicht eilig, diesen wieder freizugeben. Um genau zu sein, wird er einfach nicht frei. Ist es möglich, Terminal zu zwingen, alle Caches zu leeren, um den Verbrauch zu minimieren? Für einen VPS sind 0,5 GB pro Terminal zu viel.
Können Sie mir sagen, wie ich den Speicherverbrauch des Terminals reduzieren kann? Wenn ich einen EA laufen lasse, fordere ich ein paar Millionen Ticks an. Ich rechne mit ihnen und brauche sie nicht mehr. Ich verwende die Tick-Funktionen nur, um neue Ticks zu laden, damit es keine Lücken gibt.
Wegen dieser Millionen Ticks verbraucht das Terminal 500 Mb Speicher und hat es nicht eilig, diesen wieder freizugeben. Um genau zu sein, wird er einfach nicht frei. Ist es möglich, Terminal zu zwingen, alle Caches zu leeren, um den Verbrauch zu minimieren? Für VPS sind 0,5 GB pro Terminal zu viel.
ArrayFree
Wenn Ihr Programm Speicher in komplexen dynamischen Umgebungen verwalten muss, können Sie mit der Funktion ArrayFree() explizit und sofort Speicher freigeben, der von einem dynamischen Array belegt ist, das nicht mehr benötigt wird.
ArrayFree
Natürlich kostenlos. Das Terminal selbst speichert Ticks in seinem Cache, die ich im Betrieb nicht benötige.
Es ist besser für mich, diese Zecken wieder aufzuziehen, wenn mir kalt ist. Ich brauche einen Mechanismus zur "Abkühlung" des Terminals.
Hallo, bin auf das Problem gestoßen, dass CopyTicks und CopyTicksRange im Tester keine Daten von anderen Tools bekommen können... Nach dem Hinzufügen zum Diagramm funktioniert alles.
Build 2363 (und das gleiche war auf 2361)
Habe ich vielleicht einen Fehler gemacht? Bitte helfen Sie uns, danke!
Hallo, bin auf das Problem gestoßen, dass CopyTicks und CopyTicksRange im Tester keine Daten von anderen Tools bekommen können... Nach dem Hinzufügen zum Diagramm funktioniert alles.
Build 2363 (und das gleiche war auf 2361)
Habe ich vielleicht einen Fehler gemacht? Bitte helfen Sie uns, danke!
CopyTicks initiiert keinen Daten-Upload im Tester
Fordern Sie zunächst die CopyRates für das gewünschte Instrument an. Mindestens 1 bar. Dann wird gepumpt und eine Ticksequenz erzeugt.
Danach, leise Anfrage tickt
Vielen Dank für die Nachricht.
Dank des von Ihnen vorgestellten Codes ist es mir gelungen, die Komplexität eines Teils von ArrayResize auf Null zu reduzieren, was die Funktion für Arrays von Objekten beschleunigen wirdDer ArrayResize Code hat einen Schutz gegen einen leeren Aufruf (wenn es keine Änderung in der Anzahl der Elemente gibt), so dass der Funktionscode nicht funktioniert.
Eine echte Änderung der Anzahl der Elemente löst je nach Array den einen oder anderen Teil der ArrayResize-Funktion aus.
Guten Tag, ich danke Ihnen vielmals.
Ich habe den new-Operator bisher noch nicht verwendet, weil er logischerweise langsamer sein sollte als ArrayResize mit reserviertem Speicher.
Aber ich bin beeindruckt von den erzielten Ergebnissen, es stellt sich heraus, dass es umgekehrt ist, die native Array über neue Operator ist schneller.
MT5 (Build 2363):
CopyTicks initiiert keinen Daten-Upload im Tester
Fordern Sie zunächst die CopyRates für das gewünschte Instrument an. Mindestens 1 bar. Dann wird gepumpt und eine Ticksequenz erzeugt.
Danach, leise Anfrage tickt
Vielen Dank, das war sehr hilfreich. Ich konnte es in der Dokumentation nicht finden... Oder habe ich schlecht gesucht? Es wäre gut, dort darüber zu schreiben :)
Es wäre besser, automatische Uploads wie bei CopyRates durchzuführen.
Habe gestern die Liste der "alten" inaktiven Agenten in meinem Profil bereinigt
Einen Tag später rufe ich das Profil auf und sehe, dass die Liste der Bearbeiter wieder auf die gelöschten Einträge zurückgesetzt wurde.
Und das Erstellungsdatum und die Aktivität von Agenten wurde geändert