Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 167
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
dachten Sie nicht, dass Sie Probleme haben würden, den Kurzcode zu lesen, dann lesen Sie die Hilfehttps://www.mql5.com/ru/docs/trading/ordercalcmargin
Danke, ich habe es schon herausgefunden)
Ich habe gerade angefangen, MQL5 zu lernen. Ich muss meine Frage an einer falschen Stelle gestellt haben.
Plattformübergreifender Unterschied ArrayCopy.
Um keinen Unterschied zu machen, müssen Sie natürlich schreiben
entweder
oder alle Standardwerte in diesem Zusammenhang
Um keinen Unterschied zu machen, müssen Sie natürlich schreiben
entweder
oder alle Standardwerte in diesem Zusammenhang
Hier ist das Problem.
Wenn die Funktion Null zurückgibt, haben MQL4 und MQL5 unterschiedliche Ergebnisse.
Hier liegt das Problem.
Wenn die Funktion Null zurückgibt, werden MQL4 und MQL5 unterschiedliche Ergebnisse liefern.
GetAmountToCopy() löst also dieses Problem, falls die Funktion Null zurückgeben sollte.
Zum Beispiel:
Hier liegt das Problem.
Wenn die Funktion Null zurückgibt, werden MQL4 und MQL5 unterschiedliche Ergebnisse liefern.
Es ist nicht ganz klar, was Sie da ausrechnen. Es kann mehrere Varianten der Rückgabe von GetAmountToCopy() geben.
Wenn 0 bedeutet, dass nichts kopiert wird (das ist die Bedingung, die meiner Meinung nach das Problem verursacht) und -1 bedeutet, dass das gesamte Array kopiert wird, sollten Sie natürlich andere Rückgabewerte als 0 und -1 angeben, falls Sie nichts kopieren wollen. Zum Beispiel: EMPTY_VALUE zurückgeben. In diesem Fall sollten wir wahrscheinlich die Funktion ArrayCopy() überladen, die zunächst prüft, was ihr von GetAmountToCopy() übergeben wurde. Wenn es EMPTY_VALUE ist, wird die Funktion verlassen. Im Übrigen wird bei Verwendung der Konstante WHOLE_ARRAY die Größe der zu kopierenden Daten sowohl in MQL5 als auch in MQL4 korrekt ausgewählt.
Es ist nicht ganz klar, was Sie da ausrechnen.
Es ist mir nicht ganz klar, warum Sie über mögliche Implementierungen von MQL4/5-Unterschieden schreiben. Ich habe diese Unterschiede nur für diejenigen festgestellt, die plattformübergreifenden Code schreiben.
Die Unterschiede haben sich bereits zu einem Artikel verdichtet. Jemand sollte es schreiben.
Ich bin mir nicht ganz sicher, warum Sie über mögliche Umgehungen der MQL4/5-Unterschiede schreiben. Ich habe diese Unterschiede nur für diejenigen festgestellt, die plattformübergreifenden Code schreiben.
Die Unterschiede haben sich bereits zu einem Artikel verdichtet. Jemand sollte es schreiben.
Ich dachte, es sei eine Frage. Gut. Ich kann meine Nachrichten löschen.
Bisher nur vermutet, jetzt bestätigt. Bei der Arbeit mit Ressourcen kann es leicht zu Speicherlecks kommen.
Beispiel.
Ein Skript über SB gibt einen Graphen eines numerischen Arrays in einem Diagramm aus. Sie können dieses Diagramm (Objekt) dann manuell löschen, aber die diesem Diagramm zugewiesene Ressource bleibt für immer im Speicher im Nur-Lese-Modus hängen. Sie kann nicht gelöscht werden, da nur das Eigentümer-Skript sie löschen kann (siehe die hervorgehobene Zeile).
Es gibt keine Funktion in MQL, um so belegten Speicher freizugeben. Seien Sie damit auf VPS besonders vorsichtig.
Bisher nur vermutet, jetzt bestätigt. Bei der Arbeit mit Ressourcen kann es leicht zu Speicherlecks kommen.
Beispiel.
Ein Skript über SB gibt einen Graphen eines numerischen Arrays in einem Diagramm aus. Sie können dieses Diagramm (Objekt) dann manuell löschen, aber die diesem Diagramm zugewiesene Ressource bleibt für immer im Speicher im Nur-Lese-Modus hängen. Sie kann nicht gelöscht werden, da nur das Eigentümer-Skript sie löschen kann (siehe die hervorgehobene Zeile).
Es gibt keine Funktion in MQL, um so belegten Speicher freizugeben. Seien Sie bei VPS besonders vorsichtig.
Wenn Sie eine Meldung über ein Speicherleck erhalten, bedeutet dies, dass es keinen expliziten Befehl zur Freigabe dieses Speichers gab.
Wenn ein Programm beendet wird (das ist der Zeitpunkt, an dem Sie diese Meldungen erhalten), gibt es den gesamten Speicher frei, einschließlich des ausgelaufenen Speichers.