Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 130
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
Ich danke Ihnen. Die Verwendung der Funktion ArraySwap wäre mir nicht in den Sinn gekommen.
Ich verstehe, dass Ihre Funktion sowohl für die Erhöhung als auch für die Verringerung der Größe, d.h. als ein volles Analogon von ArrayResize funktionieren wird.
Ist es nicht besser, einfach die Standardfunktion ArrayResize aufzurufen, wenn ein Array vergrößert wird, anstatt die drei FunktionenArraySwap,ArrayResize,ArrayCopy aufzurufen?
p.s. Ich habe Ihre Version und meine mit zwei Kopien getestet, als ich das Array MqlTick von 1.000.000 auf 500.0000 reduziert habe. Ihre Version schafft es in 22 Millisekunden. Meiner macht das in 37-38.Ist es nicht besser, einfach die Standardfunktion ArrayResize aufzurufen, wenn ein Array vergrößert wird, anstatt die drei FunktionenArraySwap,ArrayResize,ArrayCopy
Ich habe darüber nachgedacht, es aber nicht getan, weil es tatsächlich mehr Feinheiten gibt. Deshalb habe ich mich für die lakonische Version entschieden.
Eine der Feinheiten ist die folgende. Wenn Sie ein Array von Strukturen mit Konstruktoren/Destruktoren nehmen, wird ArrayResize sie in beiden Richtungen in einer Menge aufrufen, die der Differenz der Werte entspricht.
Aber die Anwendung von ArrayCopy ruft alle Konstruktoren auf. Das Entfernen von ArrayTmp ist ein Aufruf an alle Destruktoren. ArrayResize2 ist also nicht wirklich ArrayResize.
Nach der Optimierung werden Sie Folgendes sehen
Wenn Sie den Expert Advisor im Frame-Modus ausschalten und ihn im Standardmodus ausführen, zeigt er die gleichen Daten an, die er während der Optimierung erhalten hat.
Auf diese Weise können Sie immer wieder auf die Optimierungsergebnisse zurückgreifen.
SZY Auf dem Chart, der im Terminal für den Frame-Modus geöffnet ist, können Sie keinen Expert Advisor ausführen. Wenn Sie es also im Standardmodus ausführen möchten, sollten Sie es auf einem Diagramm ausführen, das nicht für Frames geöffnet wurde.
fxsaber:
extern теперь является жестко заданным макросом
Daher wird es nicht immer möglich sein, den MT5 mq4-Code ohne Änderungen zum Laufen zu bringen.
In der Dokumentation gibt es keine Änderungen. Können Sie dies näher erläutern?
In der Dokumentation gibt es keine Änderungen. Können Sie dies näher erläutern?
Ein solcher Code
wird immer eine Warnung ausgeben. Das Wort "unmöglich" ist etwas hart ausgedrückt. Es ist möglich, dies zu überschreiben, so dass in solchen Situationen immer nur eine Warnung angezeigt wird.
Eine der Nuancen ist die folgende. Wenn Sie ein Array von Strukturen mit Konstruktoren/Destruktoren nehmen, dann ruft ArrayResize in beiden Richtungen eine Anzahl auf, die der Differenz der Werte entspricht.
Aber die Anwendung von ArrayCopy ruft alle Konstruktoren auf. Das Entfernen von ArrayTmp ist ein Aufruf an alle Destruktoren. ArrayResize2 ist also nicht wirklich ArrayResize.
Dann wäre es wahrscheinlich korrekter, es ArrayReallocate zu nennen, obwohl ich keinen Sinn in einer solchen erzwungenen Umkopierung sehe. Unnötiges Bremsen.
DieFreigabe von Speicherplatz ist der einzige Grund.