Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 1177
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Hallo!
Können Sie mir bitte sagen, wie ich den Indikator so einstellen kann, dass er nur beim Öffnen des Balkens und nicht bei jedem Tick funktioniert, und wie ich ihn nicht jedes Mal (bei jedem neuen Balken) über die gesamte Historie laufen lassen kann?
Ich möchte den Indikator als Alternative zum bisherigen Indikator verwenden.
Rostislav
Zunächst zu den Balken. Wenn ein neuer Balken gebildet wird, wird ein neuer Wert in Time[0] geschrieben - die Zeit, zu der der Balken geöffnet wird.
OnCalculate(...)
{
if(Time[0] == t) return(0); // Wenn dieser Balken abgearbeitet ist --> exit
t = Time[0];
Jetzt für die gesamte Historie: es wird langsam
datetime t;
Zunächst zu den Bars. Wenn wir einen neuen Balken bilden, schreiben wir einen neuen Wert in Time[0] - die Zeit, zu der der Balken geöffnet wird.
OnCalculate(...)
{
if(Time[0] == t) return(0); // wenn dieser Takt abgearbeitet ist --> exit
t = Zeit[0];
Und nun zur ganzen Geschichte: Sie wird sich verlangsamen
Vielen Dank für die schnelle Antwort. Was ich frage ist, wie man es NICHT verlangsamen und durch die Geschichte laufen, wenn ein neuer Balken erscheint, sondern nur verarbeiten die neue Bar ...
Nun ist es folgendermaßen aufgebaut: for(int i=limit-1; i>=0; i--) und so wie ich es verstehe, bedeutet es, dass bei jeder Öffnung eines Balkens alle Werte der gesamten Historie neu berechnet werden, während man nur mit dem letzten Balken arbeiten sollte...
Auf diese Weise wird der letzte Balken berechnet:
Schauen wir uns zuerst die Zeile an
Um es für mich klarer zu machen, habe ich es so umgeschrieben.
Aha!!! Jetzt beginne ich zu verstehen... In der Schleife ändert sich die Variable a von 1 auf 6. Bei den Werten dieser Variablen 1, 5 und 6 gibt es keine Aktion. Dann einfach
Oder in Ihrem Stil.
Das Ergebnis wird dasselbe sein, aber es wird schneller laufen!
Jetzt müssen Sie die Funktion Statistic loswerden, ihren Körper dreimal hintereinander schreiben, die formalen Parameter in jedem der drei Teile durch aktuelle Parameter ersetzen und doppelte Variablendeklarationen entfernen. Der gesamte Code wird etwas länger, aber die Ausführung ist schneller. Es macht Sinn, print() zu verwerfen - wer genau wird zu diesem Zeitpunkt das Nachrichtenprotokoll durchsehen? - Oder ersetzen Sie sie durch Alert(), um sie auf dem Bildschirm anzuzeigen. Außerdem gibt es eine Variable namZz2 - ändert sich ihr Wert?
Ich muss stats() anstelle von stats() verwenden. Dummerweise weiß ich, dass ich dreimal umschreiben kann, wie Sie gesagt haben, aber das Problem ist, dass das Ergebnis der Erfassung von Statistiken höchstwahrscheinlich mehr Arrays hinzufügen muss und ich früher oder später zu den ursprünglichen zurückkehren werde. Deshalb biete ich Ihnen einfache Wege an, die ich bereits kenne, und die mich leider an den Anfang führen werden. Deshalb schaue ich nach vorne, damit ich in Zukunft nicht mehr darauf zurückkommen muss!
wie man diesen Code in den Statistiker einfügt!? eine einzige Prozedur zu sein, die Sie am Anfang, wie ich die Frage erklärte, bitte anschauen!
So wird er für den letzten Balken berechnet:
Hier ist ein Auszug aus dem Arbeitscode! Wie kann man sie in einer ungültigen Statistik ohne dazwischenliegende ungültige Statistik sammeln? Ich müsste den gesamten Code überarbeiten, um alle Arrays in einem einzigen zusammenzufassen, und versuchen, es von dort aus zu lösen!
Der von Ihnen zitierte Auszug aus Ihrem Arbeitscode ist entweder falsch oder Ihre Statistic()-Funktion tut nichts anderes als drucken, wenn sie von Stat() aus aufgerufen wird.
Auf jeden Fall wird es gleich nach der Rückkehr aufhören;.
Bitte geben Sie uns den gesamten Code, damit wir verstehen, was Sie wollen.
Für das Protokoll. Es gibt zu viele Threads im Forum, die Neulingen bei MQL4 helfen.
Dieser Thread wird nicht mehr unterstützt und ist geschlossen.
Bitte richten Sie alle Fragen an eines der folgenden aktiven Themen:
https://www.mql5.com/ru/forum/160683
https://www.mql5.com/ru/forum/160587
Alle weiteren Beiträge in diesem Thema werden gelöscht.