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
Wenn ich meine Funktion aufrufe, sollte ich das Array per Referenz, per Zeiger oder auf andere Weise übergeben?
Lesen Sie den Abschnitt über die Übergabe von Parametern per Wert und per Referenz:
MQL5 Referenz / Grundlagen der Sprache / Funktionen / Parameterübergabe
Lesen Sie den Abschnitt im Referenzhandbuch über die Übergabe von Parametern per Wert und per Referenz:
MQL5 Referenz / Grundlagen der Sprache / Funktionen / Parameterübergabe
Ich komme gerade von dort und die Kompilierungsfehler, die ich in meiner vorherigen Nachricht erwähnt habe, sind nach dem Lesen des obigen Abschnitts aufgetreten.
Jetzt habe ich es noch einmal genau gelesen - es geht nur um den Inhalt und darum, wo man ihn unterbringt.
Danke, ich habe es herausgefunden.
InOnCalculate kann ich einfach Array-Elemente wie high by indexverwenden. Ist es auch möglich, in ExtFunc auf die Indexelemente dieses Arrays zuzugreifen? Wenn ich meine Funktion aufrufe, sollte ich das Array-Argument per Referenz, per Zeiger oder auf andere Weise übergeben? Bisher ist es mir gelungen, die Fehlermeldungen zu minimieren: "'high' - parameter conversion is not allowed" und "'high' - constant variable cannot be passed as reference" bezüglich der gleichen Zeile meines Funktionsaufrufs mit dem Array-Argument von OnCalculate. Ist es hoffnungslos oder gibt es eine Lösung?
Bisher habe ich in OnCalculate auf das Kopieren von high in ein anderes Array zurückgegriffen:
und dann CopyOfHigh in ExtFunc verwenden, anstatt high-array direkt zu verwenden.Sie müssen das Array nur per Referenz an Ihre Funktion übergeben
Grüße an alle!
Was bedeutet die Warnung?
möglicher Datenverlust durch die Typkonvertierung expert.mq5
wenn ich es kompiliere? Sie lautet wie folgt:
Was ist los?
Übergeben Sie das Array einfach per Referenz an Ihre Funktion
Nicht ganz:
Grüße an alle!
Was bedeutet die Warnung?
möglicher Datenverlust durch die Typkonvertierung expert.mq5
beim Kompilieren? Sie lautet wie folgt:
Was ist los?
Was die Warnung bedeutet:
möglicher Datenverlust aufgrund von Typumwandlung
Die Bedeutung dieser Nachricht variiert je nach dem Kontext, in dem sie betrachtet wird.
Zum Beispiel:
1. "Machen Sie eine explizite Typkonvertierung!"
2. "Mögliche Datenzuckungen bei impliziter Typkonvertierung" // Dies ist eine wörtliche Übersetzung.
Dies ist verständlich, da der von der Funktion zurückgegebene Long-Typ einen größeren Umfang hat und einen größeren Wertebereich abdeckt.
Eine weitere Option, die mir in letzter Zeit am häufigsten in den Sinn kommt:
3. "Die Mitarbeiter von MetaQuotes verstehen nicht, wie cool, attraktiv und effektiv es wäre zu lernen, wenn Fehlermeldungen und mql5-Compilerwarnungen in der Muttersprache des Benutzers angezeigt würden."
... wie cool, attraktiv und effektiv es wäre, zu lernen, wenn die Fehlermeldungen und Warnungen des mql5-Compilers in der Muttersprache des Benutzers angezeigt würden".
Ich habe den Verdacht, dass, wenn der Indikator über iCustom aktiviert wird, er bei jedem Tick berechnet wird. Und es hängt nicht von den Aufrufen durch den CopyBuffer ab. Ist das richtig?
Wenn dies richtig ist, ist es dann möglich, die Berechnung des Indikators zu deaktivieren und ihn nur vor dem Aufruf des CopyBuffer zu aktivieren?
Ich habe den Verdacht, dass, wenn der Indikator über iCustom aktiviert wird, er bei jedem Tick berechnet wird. Und es hängt nicht von den Aufrufen durch den CopyBuffer ab. Ist das richtig?
Dies hängt von der Logik des benutzerdefinierten Indikators ab. Tatsächlich kann er seine Werte einmal am Tag neu berechnen und dabei alle anderen Ticks überspringen. Sozusagen nach dem Willen des Autors.
Wenn ja, ist es möglich, die Neuberechnung des Indikators zu deaktivieren und nur vor dem Aufruf des CopyBuffer zu aktivieren?
Im Grunde versuchen einige Leute, diesen Monsteransatz zu verwenden: eine Kopie des Indikators über iCustom erstellen, die erforderlichen Daten kopieren, die Kopie des Indikators löschen. Das Verfahren wird nach Bedarf wiederholt.
Es gibt auch die Funktion OnTimer(), mit der ich selbst noch nicht gearbeitet habe, aber vielleicht können Sie sie an Ihre Aufgabe anpassen.