Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 361
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
Die Frage ist, ob ich den Indikatorcode 900 Mal pro Tick (3 Zeitrahmen mit 300 Balken zum Beispiel) oder 3 Mal berechnen sollte. Es ist klar, dass icustom weniger Aufwand ist, ich setze es in die Schleife und es ist fertig. Als Option sah ich eine Adresse eines Arrays von Indikatorwerten, die an einen EA mit dll übergeben werden, aber ich möchte den Indikator nicht in einem Satz nehmen
Auch hier liegt ein Fehler in der Problemstellung vor. Warum brauchen Sie 900 Balken in Ihrem Expert Advisor? Wenn Sie wirklich so viele Daten im Indikator benötigen, 900 Balken, dann arbeiten Sie mit ihnen im Indikator selbst, warum ziehen Sie sie in den Expert Advisor? Die richtige Aufgabe macht 50% des Erfolgs aus
Die Problemstellung ist wieder falsch... Warum brauchen Sie 900 Balken in Ihrem EA? Wenn Sie wirklich so viele Daten im Indikator benötigen, 900 davon, dann arbeiten Sie mit ihnen im Indikator selbst, warum ziehen Sie sie in den Expert Advisor? Die richtige Aufgabe ist 50% des Erfolgs
Ich brauche, um die minimalen und maximalen Spitzen des Indikators auf 3 Zeitrahmen zum Beispiel 5min 15min und 30min zu vergleichen, um die Trends zu bestimmen, werde ich nicht in der Lage sein, die Spitzen zu erraten, das heißt, zu haben, um sich über die gesamte Geschichte zu nehmen. Ich habe 300 Barren der Geschichte als Beispiel genommen.
Die Verwendung von icustom ist immer noch zu ressourcenintensiv.
Ich brauche, um die minimale und maximale Spitzen Indikator für 3 Zeitrahmen zum Beispiel 5min 15min und 30min zu vergleichen, um die Trends zu bestimmen, werde ich nicht in der Lage sein, die Spitzen zu erraten, das ist zu haben, um durch die gesamte Geschichte aussehen. Ich habe 300 Barren der Geschichte als Beispiel genommen.
Es ist immer noch zu ressourcenintensiv, icustom zu verwenden.
Die Frage bleibt in ontick offen, die Funktion IndicatorCounted() in der ersten Berechnung ergibt -1, wie kann sie in einem Expert Advisor ersetzt werden?
"You don't need to change it" - d.h. es funktioniert sowohl mit onTick im Expert Advisor als auch mit onCalculate im Indikator?
Nein, ich meinte, dass sie dort überhaupt nicht gebraucht wird.
Nein, ich meinte, dass es dort überhaupt nicht nötig ist.
Ich habehttps://www.mql5.com/ru/articles/1456 ausgegrabenund werde es mir ansehen, aber ich dachte, es gäbe eine einfachere Möglichkeit.
Die Frage bleibt offen, in der ontick Funktion IndicatorCounted() bei der ersten Prüfung, wie es in der Expert Advisor ersetzen?
Sie müssen nicht bei jeder Zecke die Oberteile durchsehen, sie ändern sich nicht.
Überprüfen Sie im EA den Zyklus bei der Eröffnung der Bar und verlassen Sie den Zyklus, sobald das Top gefunden ist.
Die Funktion IndicatorCounted() wurde früher in Indikatoren mit der Funktion start() verwendet. Die neuen Indikatoren mit OnCalculate() verwenden stattdessen den zweiten Parameter prev_calculated. Ich habe sie speziell analysiert und festgestellt, dass sie sich um 1. Der Unterschied ist gering und sie zeigen an, wie viele Balken bereits berechnet wurden. Wenn er 0 (oder -1) ist, müssen alle Balken berechnet werden. Dies geschieht beim Start des Indikators, wenn er die gesamte Linie zeichnen und das Ergebnis in den Pufferfeldern speichern muss. Bei den nächsten Ticks sollten nur die Daten des letzten Balkens neu berechnet werden. Daher sollte das, was bei einem Wert von Null (oder -1) getan wird, in OnInit() des EAs platziert werden. Der Rest - sehr wenig - sollte in OnTick() untergebracht werden.
Ich danke Ihnen. Ich werde daran arbeiten. Aus irgendeinem Grund habe ich in dem Lehrbuch nichts über lange Schrift gelesen.
Sie müssen den Cursor auf long int oder short (oder ein beliebiges anderes Sprachwort) setzen und F1 drücken.
Vielen Dank, aber soweit ich aus der Beschreibung der Funktion zu verstehen, wird es den gesamten Code des Indikators ausführen, um einen Wert zu erhalten, an der Stelle, die ich angegeben habe, das heißt, um alle Tops zu erhalten, muss ich den Code des Indikators n-mal berechnen (schauen Sie durch alle Bars einer nach dem anderen), aber ich brauche, um die Reihenfolge der Tops dieses Indikators auf mehrere Zeitrahmen zu vergleichen.
Und dann muss man manuell nach Oberteilen suchen
Das ist absolut falsch! Alle Indikatorbalken, die vom Expert Advisor mit iCustom() aufgerufen werden, werden nur einmal neu berechnet! Alle folgenden Aufrufe des Indikators arbeiten mit den bereits berechneten Ergebnissen, nur die nicht berechneten Balken des vorherigen Aufrufs werden neu berechnet. Wenn zum Beispiel der M15-Periodenindikator im H1-Diagramm bei jedem neuen Balken aufgerufen wird, werden 4 15-Minuten-Balken nicht neu berechnet. Es werden also nur diese 4 Takte neu berechnet.
Selbst wenn wir eine Schleife durch die Abfolge der Balken von 0 bis xxx durchlaufen, wird der Indikator nur einmal beim ersten Aufruf neu errechnet. Bei allen folgenden Aufrufen wird keine Neuberechnung durchgeführt.
Ich habehttps://www.mql5.com/ru/articles/1456 ausgegrabenund werde es mir ansehen, aber ich dachte, es gäbe einen einfacheren Weg.
Dies ist ein schlechtes Beispiel. Es ist bereits TEN Jahre alt!!! Die Sprache hat sich bereits zum Besseren gewandelt.