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 sollte also so sein, dass die Rolle des Kopierkonstruktors von einem überladenen Zuweisungsoperator übernommen wird?
Der Bildschirm zeigt 1 an, d.h. der Kopierkonstruktor wird ausgeführt.
Ich denke, es ist dies: "2) das Entkommentieren eines Stopps mit einem überladenen Zuweisungsoperator" soll nicht helfen.
Ich weiß nicht, was richtig ist, aber der Zuweisungsoperator in VS übernimmt nicht die Rolle des Kopierkonstruktors.
1 wird angezeigt, d.h. der Kopierkonstruktor wird ausgeführt.
Ich denke Folgendes: "2) das Auskommentieren eines Stopps mit einem überladenen Zuweisungsoperator" sollte nicht helfen.
Der Kopierkonstruktor wird hier ausgeführt
nicht innerhalb der Funktion fn().Der Kopierkonstruktor wird hier ausgeführt
und nicht innerhalb der Funktion fn().In dieser Variante:
Die Zeile "Assignment constructor is executed" wird nicht ausgegeben.Und so wird es hergeleitet:
WWer, wenn Sie in Analogie zu VS auf die konkrete Situation eingehen müssen, geben Sie ein konkretes Beispiel für das Kopieren/Zuordnen. Was ausgeführt wird, wird an Ort und Stelle entschieden.Warum sollte sie initialisiert werden? Es ist eine Instanz einer Klasse, die einen Konstruktor für genau diesen Zweck hat.
Und wie schreibt man einen korrekten Kopierkonstruktor für diesen Zweck?
Ihre Funktion getCopy(), die versucht, das Objekt zurückzugeben, ist ganz korrekt geschrieben. Nachdem die Zuweisung überschrieben wurde, gibt sie bereits einen Zeiger zurück, und der Fehler verschwindet.
--
Die Verwirrung kann hier durch die Tatsache verursacht werden, dass die Sprache einen gewissen "Syntax-Backlash" hat, der mit der gleichen syntaktischen Darstellung des Zugriffs auf die Felder eines statischen und eines dynamischen Objekts verbunden ist (mit einem Punkt anstelle eines Pfeils, was übrigens sehr praktisch ist). Dies ist sehr verbreitet und kann die Unterscheidung zwischen Objekten und Objektzeigern etwas verwischen, was wiederum zu einigen Illusionen führen kann, z. B. dass etwas einer statischen (oder automatischen) Objektvariablen zugewiesen werden kann. Ganz im Gegenteil, eine Objektvariable links von einer Zuweisung ist immer ein Zeiger, wenn der Kopierkonstruktor nicht definiert ist.
C++ konstruiert das q2-Objekt innerhalb der Funktion fn() im Rücklauf, deshalb funktioniert der Kopierkonstruktor.
In MQL5 wird das Objekt von außen konstruiert, daher gibt es Unterschiede. Wir sollten sie eliminieren.
Für diejenigen, die es interessiert: Es heißt Rücklaufwertoptimierung
Liebe Kolleginnen und Kollegen, guten Tag!
Können Sie mir sagen, wie ich Kurswerte für verschiedene Finanzinstrumentesynchronisieren kann? Ich meine damit zum Beispiel die Schlusskurse von Barren zu einem bestimmten Zeitpunkt in der Vergangenheit für verschiedene Instrumente. Die Verwendung der CopyClose-Funktion und das Abrufen der Werte über den Index der Balken ist nicht ganz korrekt, da bei verschiedenen Instrumenten einige Balken fehlen können. Soweit ich mich erinnere, hat mql4 die BarShift-Funktion nach Zeit, gibt es ein Analogon auf mql5?
Wenn Sie die Uhrzeit kennen, können Sie diese Funktion nutzen.
Adressierung nach Startdatum und Anzahl der benötigten Artikel
intCopyClose(
stringsymbol_name,// Symbolname
ENUM_TIMEFRAMESZeitrahmen,// Zeitraum
datetimestart_time,// ab derDatum
intcount,// wie viele wir kopieren
doubleclose_array[]// Array zum Kopieren der Schlusskurse
);
Wenn Sie die Uhrzeit kennen, können Sie diese Funktion nutzen.
Beziehen Sie sich auf das Startdatum und die Anzahl der benötigten Artikel
intCopyClose(
stringsymbol_name,// Name des Symbols
ENUM_TIMEFRAMEStimeframe,// Zeitraum
datetimestart_time,//ab welchem Datum
intcount,// wie viele wir kopieren
doubleclose_array[]// Array zum Kopieren der Schlusskurse
);
Angenommen, ich möchte das Verhältnis von close[i] EUR/USD und close[i] GBP/USD ermitteln, aber wenn ich den Index i verwende, können die Balken zeitlich ohnehin unterschiedlich sein, weil einige Balken fehlen.
Mit anderen Worten, ich muss CopyClose(Symbol, 0, date_of_current_bar, 1, array) in Zyklen für jeden Balken verwenden?
Ich habe den Eindruck, dass Bars von älteren TF selten "verschwinden".
Eine andere Variante besteht darin, die Zeit dieses Taktes gleichzeitig durch CopyTime() zu erhalten.
Und die dritte Möglichkeit (wahrscheinlich die einfachste) ist die gleichzeitige Verwendung von CopyRates in der Struktur.