Fehler, Irrtümer, Fragen - Seite 2296
![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
Es gibt kein Problem... Es liegt ein Fehler vor. Ich verstehe auch nicht, warum Sie versuchen, sich die Erklärung aus dem Kopf zu schlagen. Der Standarddruck hat die folgende Signatur:
Und sie kann auch mit anderen Funktionen kollidieren (falls erforderlich)
Die Drucksignatur liegt außerhalb des Bereichs der MQL5-Sprache. Wenn MQL5 das Überladen von Print überhaupt verbietet, ist das kein Fehler.
Ich hoffe, dass dieser "Fehler" Sie nicht daran hindert, TS zu erstellen, und dass Sie keine Schreibkrücken benötigen.
Ich habe die Leistung des Testers gemessen. Zu diesem Zweck habe ich bei jedem Tick eine Position eröffnet und geschlossen. Ich habe die Ausführungszeit von 100 Ticks gemessen. Ich habe 100 000 Ticks durchlaufen lassen. Ich habe insgesamt 1000 Ticks gemessen. Ich habe diese Tabelle
Es gibt Spitzen der Verlangsamung in fast gleichen Abständen zwischen ihnen. Ich habe sie im Optimierungsmodus gemessen. Wenn ich diese Spitzen ignoriere, schwankt die Leistung des Testers um 25 % anstelle des konstanten Wertes. Vielleicht liegt es wieder an den Tricks der Windows-Geschwindigkeitsmessung.
ZZZ Derselbe Code läuft auch auf MT4
Im Durchschnitt benötigt der MT4 Tester 1,5-2 mal weniger Zeit für die Verarbeitung eines Ticks als der MT5.
Möglicherweise durch den Einsatz eines genetischen Optimierungsalgorithmus.
Im Durchschnitt benötigt MT4-Tester 1,5-2 mal weniger Zeit für die Verarbeitung eines Ticks als MT5.
Möglicherweise durch den Einsatz eines genetischen Optimierungsalgorithmus.
Keine GA. Optimierung von zwei Durchgängen an einem Agenten.
Und dies ist bereits reine Manipulation und Irreführung.
Der Quellcode ist vorhanden.
Im einen Fall eine Warnung, im anderen ein Fehler
Was ist der grundlegende Unterschied? In C++, zum Beispiel, gibt es in beiden Fällen einen Fehler
Ich bitte um Hilfe von sachkundigen Personen, um das Problem von Zeigern auf Klasseninstanzen zu verstehen. Ich kann das nicht verstehen.
Hier ist ein Beispiel für das Skript:
Bei der Ausführung haben wir, wie erwartet:
wenn eine Instanz einer Klasse als deklariert ist:
A *a= new A;
dann haben wir bei der Ausführung:
d.h. der Destruktor wird nicht einmal gestartet und daher wird der Speicher nicht freigegeben.
Aber wenn eine Instanz einer Klasse deklariert ist als:
A a= new A;
der Konstruktor wird zweimal gestartet, der Destruktor einmal, aber der Speicher wird nicht freigegeben und wir haben den ObjektzeigertypPOINTER_AUTOMATIC, obwohl er eigentlichPOINTER_DYNAMIC sein sollte
Wie man den Destruktor immer ausführt und das Löschen korrekt ausführt
Как добиться всегда выполнения деструктора и правильного выполнения delete.
Sehen Sie sich in C++ das Thema Smart Pointer an und passen Sie es für MQL an(https://habr.com/post/140222/).
Vielleicht gibt es etwas in kodobase...
Sehen Sie sich in C++ das Thema Smart Pointer an und passen Sie es für MQL an(https://habr.com/post/140222/).
Vielleicht gibt es etwas in kodobase...
danke, aber ich habe dort keine Antworten auf meine Fragen gefunden.
Ich verstehe nicht, warum der Destruktor nicht aufgerufen wird, wennA *a= new A;
Danke, aber ich habe dort keine Antworten auf meine Fragen gefunden.
Ich verstehe nicht, warum der Destruktor nicht aufgerufen wird, wennA *a= new A;
Ergebnis:
1:ZEIGER_AUTOMATISCH
1:ZEIGER_DYNAMISCH
2:ZEIGER_DYNAMISCH
2:ZEIGER_AUTOMATISCH
Danke, aber ich habe dort keine Antworten auf meine Fragen gefunden.
Ich verstehe nicht, warum der Destruktor nicht aufgerufen wird, wennA *a= new A;
Anlegen mit Neu und Löschen mit Löschen