[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 240
![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
for (i = 0; i < a1; i++)
{
OrderSelect(i,SELECT_BY_POS);
OrderDelete(OrderTicket());
}
Hier ist ein einfaches Skript wie dieses sollte alle ausstehenden Aufträge löschen, aber es löscht genau die Hälfte der Aufträge ... ???
a1 = AufträgeSumme();
for (i = 0; i < a1; i++)
{
OrderSelect(i,SELECT_BY_POS);
OrderDelete(OrderTicket();
}
Dieses einfache Skript sollte alle ausstehenden Aufträge löschen, aber es löscht genau die Hälfte von ihnen ... ???
Nehmen wir an, es gäbe 10 Bestellungen.
Hier haben Sie die Hälfte gelöscht (null bis fünf)
Jetzt wollen Sie den sechsten auswählen... und es sind nur noch 5 übrig. Es liegt ein Fehler vor und es gibt nichts zu löschen. Das gilt auch für die anderen.
a1 = AufträgeSumme();
for (i = 0; i < a1; i++)
{
OrderSelect(i,SELECT_BY_POS);
OrderDelete(OrderTicket();
}
Dieses einfache Skript sollte alle ausstehenden Aufträge löschen, aber es löscht genau die Hälfte der Aufträge ... ???
Ändern Sie die Richtung der Auftragssuche:
for (i=a1-1; i>=0; i--) {....}
Ändern Sie die Richtung der Auftragsaufzählung:
for (i=a1-1; i>=0; i--) {....}
1. Haben Sie das überprüft?
Bericht: Es hat geholfen, aber es scheint eine Störung zu sein.
Erstes Terminal. Alle Diagramme und Symbole entfernt, 7 Dollar-Symbole hinzugefügt, Diagramme hinzugefügt. Alle mit Nachladungen.
Den Ticker auf 3/4 des Bildschirms ausgedehnt. Die ersten 6 Felder sind gefüllt, das 7. ist auf 5 Felder angewachsen.
Nach dem nächsten Neustart sind nicht mehr alle vollständig gefüllt, die Verteilung ist fast zufällig - je niedriger das Symbol in der Liste, desto weniger Zellen erhält es.
Das zweite Terminal. Ich hatte 7 Yen pro Paar dabei. Zusätzliche Zeichen entfernt, neu gestartet - sie füllen sich viel tiefer, aber die Tiefe der Füllung stellte sich als zufällig verteilt heraus.
Ich neige zu der Annahme, dass es sich um einen Fehler handelt, weil der Cache zu klein ist - er reicht einfach nicht für alle, und die Verteilung erfolgt entweder nach dem Zufallsprinzip oder nach dem Motto "wer zuerst kommt, mahlt zuerst".
In jedem Fall funktioniert die Methode für eine Währung. Zusammenfassung: Rezept zur Tatsache :) Danke.
Es funktioniert ... Aber was ist die Logik - welchen Unterschied macht i++ oder i--?
Der Grund dafür wurde Ihnen bereits mitgeteilt. Es geht nicht um i++ oder i--, sondern darum, an welchem Ende der Liste Sie mit dem Löschen von Aufträgen beginnen - am Anfang der Liste (wie Sie es getan haben) oder am Ende der Liste (wie Sie es in diesem Fall tun müssen).
Um zu verstehen, was passiert, wenn Aufträge gelöscht werden, müssen Sie wissen und verstehen, wie die Aufträge im Array gespeichert sind.
Wenn Sie den ersten Auftrag zuerst löschen (er ist durch i=0 indiziert), werden die Indizes aller Aufträge im Array verschoben - der erste Auftrag wird null, der zweite Auftrag wird der erste, der dritte wird der zweite und so weiter. Aus diesem Grund werden nicht alle Aufträge vollständig gelöscht - wenn i zu 6 wird, wird der sechste Auftrag an die fünfte Position im Auftragsfeld verschoben und der Auftrag wird einfach nicht durch den Index 6 ausgewählt.
Wenn Sie Aufträge am Ende der Liste löschen, findet keine Verschiebung statt - der erste Auftrag hat eine Nullposition in der Liste und wird diese auch beibehalten. Der 10. Auftrag hatte die Position 9, er wurde gelöscht, dann wurde der 9. Auftrag, der die Position 8 in der Liste hat, gelöscht, und so weiter, bis zum ersten Auftrag mit der Position Null in der Reihe der Aufträge.
Werke .... aber was ist die Logik - welchen Unterschied macht es, ob i++ oder i--?
Sie sind bereits von einem Benutzer beantwortet worden
... den Stundenplan selbstständig öffnen.