Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 658

 
Guten Tag!!!

Ich habe bemerkt, dass ich Probleme habe, die Aufträge von j=0 bis j=OrdersTotal() durchzugehen - die Zählung geht immer weiter (siehe pr).
Und es kann sein, dass sie nicht bei 0 anfängt und ein paar Zehner überspringt.
Höchstwahrscheinlich wird sie mit jedem neuen Tick fortgesetzt, aber es ist nicht klar, warum sie nicht bei 0 beginnt, sondern einfach durch mehrere Zahlen springt und wie man damit umgehen soll.

Ist jemand auf dieses Problem gestoßen? Was ist die Lösung für diese Situation?
Dateien:
test.jpg  82 kb
 
Algotrader18:
Guten Tag!!!

Ich habe bemerkt, dass ich nicht in der Lage bin, durch Aufträge von j=0 bis j=OrdersTotal() zu gehen - die Zählung wird immer durcheinander (siehe vorherige).
Und es kann sein, dass sie nicht bei 0 anfängt und ein paar Zehner überspringt.
Höchstwahrscheinlich wird sie mit jedem neuen Tick fortgesetzt, aber es ist nicht klar, warum sie nicht bei 0 beginnt, sondern einfach durch mehrere Zahlen springt und wie man damit umgehen soll.

Ist jemand auf dieses Problem gestoßen? Was ist die Lösung für diese Situation?

Die Aufträge sollten in einer Schleife aufgezählt werden, nicht bei jedem Tick... Um genauer zu sein, ein Tick kam und alle Ihre Aufträge werden in der Schleife gezählt: for(j=0;j<OrderTotal;j++)

OrdersTotal() zeigt an, wie viele Orders offen sind (einschließlich schwebender Orders, einschließlich Orders auf allen Symbolen... insgesamt... Hier sehen Sie, wie viele Aufträge im Terminal geöffnet sind - hier sehen Sie, wie viele )))).

Die Nummerierung der Aufträge ist wie in Arrays, von 0 bis OrdersTotal()-1 - dies ist der letzte Auftrag, und Sie haben wahrscheinlich eine nicht existierende [OrdersTotal()] oder eine andere Information, die schwer zu erraten ist.

 

Guten Tag!


Können Sie mir sagen, wie viele Zeichen ein Kommentar zu einer Bestellung enthalten kann?

 
Algotrader18:
Guten Tag!!!

Ich habe bemerkt, dass ich Probleme habe, die Aufträge von j=0 bis j=OrdersTotal() durchzugehen - die Zählung geht immer weiter (siehe pr).
Und es kann sein, dass sie nicht bei 0 anfängt und ein paar Zehner überspringt.
Höchstwahrscheinlich wird sie mit jedem neuen Tick fortgesetzt, aber es ist nicht klar, warum sie nicht bei 0 beginnt, sondern einfach durch mehrere Zahlen springt und wie man damit umgehen soll.

Ist jemand auf dieses Problem gestoßen? Was ist der Ausweg aus dieser Situation?
Und warum brauchen wir überhaupt Informationen über alle Aufträge pro Tick? Wäre es nicht besser, Beschränkungen für die Abrufreihenfolge einzuführen, z. B. jede neue Minute, fünf Minuten, ..., Stunde?
 

Auf einigen VPS ist die Schrift der EA-Schnittstelle viel größer als im MKL-Code programmiert.

Wie man es ändern kann, wer weiß?


 

Frage: OnTimer() setzt Berechnungen zurück, wenn ein Tick eintrifft?

In meiner OnTick()-Funktion habe ich sehr große Berechnungen und es werden keine Daten produziert, erst nach einiger Zeit, manchmal fast sofort, manchmal werden ein paar Minuten benötigt. Soweit ich weiß, liegt das daran, dass, wenn während der Berechnung ein Tick gekommen ist, alle Berechnungen gestoppt werden und neu beginnen.

Aber ich muss sie nicht oft machen, also würde ich sie gerne in einen Timer stecken?

 
Roman Sharanov:

Frage: OnTimer() setzt Berechnungen zurück, wenn ein Tick eintrifft?

In meiner OnTick()-Funktion habe ich sehr große Berechnungen und es werden keine Daten produziert, erst nach einiger Zeit, manchmal fast sofort, manchmal werden ein paar Minuten benötigt. Soweit ich weiß, liegt das daran, dass, wenn während der Berechnung ein Tick gekommen ist, alle Berechnungen gestoppt werden und neu beginnen.

Aber ich muss sie nicht oft machen, also würde ich sie gerne in einen Timer stecken?

Woher wissen Sie das? Das ist nicht der Fall.

Bis alle Berechnungen, die mit dem Eintreffen des Ticks begonnen haben, abgeschlossen sind, werden alle nachfolgenden Ticks übersprungen.

 
Artyom Trishkin:

Woher wissen Sie das? Das ist nicht der Fall.

Bis alle Berechnungen, die zum Zeitpunkt des Ticks begonnen wurden, abgeschlossen sind, werden alle nachfolgenden Ticks übersprungen.

Hmm, ich habe irgendwo gesehen, dass es andersherum ist, also liege ich falsch.
Ich frage mich, warum mit den gleichen Berechnungen, wenn ich einen EA auf einem Diagramm platzieren, die Ergebnisse sind manchmal sofort und manchmal muss ich für sie für eine lange Zeit zu warten?

Hier kommen die Tics ins Spiel.

 
Roman Sharanov:

Hm, ich habe irgendwo gesehen, dass es umgekehrt ist, das heißt, ich liege falsch.
Ich frage mich, warum mit den gleichen Berechnungen, wenn ich den EA auf dem Chart, die Ergebnisse manchmal sofort kommen, und manchmal muss ich für sie für eine lange Zeit warten?

Und die Tics setzen ein.

Ohne den Code kann das niemand sagen.

 
Artyom Trishkin:

Ohne den Code kann Ihnen das niemand sagen.

Ich habe auch einen schwerwiegenden Nachteil gefunden, es gibt zu viele CopyClose()-Aufrufe

Können Sie mir sagen, wie ich Kurse aus einem Array von Währungspaaren in eine Schleife kopieren kann?

Das scheint ein Doppel-Array zu sein, aber MQL unterstützt es nicht, wie %.

...
double all_data[N][];
for(int i = 0; i < N; n++){
        CopyClose(Pairs[i], PERIOD_CURRENT, 1, Count, all_data[i]);
}