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

 
Rustam Bikbulatov:
Hallo Leute. Können Sie mir bitte sagen, warum ich ein paar Dutzend Aufträge habe, die in einer gestaffelten Reihenfolge oder in einer anderen Reihenfolge abgeschlossen werden? Wie soll ich es reparieren? Gibt es eine Methode zum sofortigen Abschluss?

beim Schließen - die Reihenfolge der Aufträge ändern

d.h. die Schleife sollte sein

for(int i=OrdersTotal()-1;i>=0;i--){...}

Immerhin :-)

PS. Solange man auf "es" getreten ist - kann es manchmal sinnvoll sein, Aufträge in einer "gestaffelten" Reihenfolge zu schließen.
 
Maxim Kuznetsov:

beim Schließen - die Reihenfolge der Aufträge ändern

d.h. es muss einen Zyklus geben

Immerhin :-)

PS: Da Sie ohnehin schon darauf herumgetrampelt sind,kann esmanchmal sinnvoll sein, Aufträge in einer "gestaffelten" Reihenfolge zu schließen .

Wenn es eine kontrollierte Schließung ist ;)

Im Allgemeinen (auch wenn Ihr Kommentar richtig ist) ging es bei der Frage um die "Methode des gleichzeitigen Schließens", was in einer Schleife nicht möglich ist.

Hier müssen Sie die gegenüberliegende Position mit einem Lot eröffnen, das der Summe der Lots aller offenen Positionen für das Locking entspricht, und dann die gegenüberliegende Position in aller Ruhe schließen.

 
Artyom Trishkin:

Wenn es ein kontrollierter Abschluss ist ;)

Und im Allgemeinen (auch wenn Ihre Bemerkung richtig ist) ging es bei der Frage um die "Methode des gleichzeitigen Schließens", die nicht in einer Schleife durchgeführt werden kann.

Sie müssen eine entgegengesetzte Position mit einem Lot eröffnen, das der Summe der Lots aller offenen Positionen entspricht, um sie zu sperren, und dann die entgegengesetzte Position in aller Ruhe schließen.

Und was hindert Sie daran, einen Auftrag nach dem anderen abzuschließen?

 
Rustam Bikbulatov:

und was verhindert, dass Aufträge in der richtigen Reihenfolge abgeschlossen werden?

Verschiebung der Indizes der Aufträge in der Marktliste beim Entfernen in einer direkten Schleife von Null auf OrdersTotal()-1.

 
Rustam Bikbulatov:

Was verhindert, dass Aufträge ordnungsgemäß abgeschlossen werden?

Entweder Sie schließen alle offenen Positionen im umgekehrten Zyklus von OrdersTotal()-1 bis >=0 in der Reihenfolge ihrer Reihenfolge in der Liste, oder Sie öffnen eine entgegengesetzte Position zum Sperren und schließen dann stillschweigend die erforderlichen Positionen mit einer entgegengesetzten Position.

 
Vielen Dank, Artem!
 
Artyom Trishkin:

Wenn es ein kontrollierter Abschluss ist ;)

Im Allgemeinen (auch wenn Ihr Punkt richtig ist) ging es in der Frage um die "Methode des gleichzeitigen Schließens", was in einer Schleife nicht möglich ist.

Hier müssen Sie die gegenüberliegende Position mit einem Lot öffnen, das der Summe der Lots aller offenen Positionen für das Locking entspricht, und dann bereits leise mit dem Counter schließen

Am besten rufen Sie Ihren Agenten an und sagen: "John, schließen Sie die Position auf General Electric, wir haben uns auf alles geeinigt".

:-)

Es ist nicht immer möglich, mit dem gegenüberliegenden Volumen zu decken. Und es rutscht härter - das Volumen ist groß.

 
Artyom Trishkin:

Offset der Indizes von Aufträgen in der Marktliste, wenn sie in direkter Reihenfolge von Null auf OrdersTotal()-1 gelöscht werden.

Ich habe den Code für die Schließung von Aufträgen in direkter Folge gesehen und er funktionierte einwandfrei.

Dort wurde lediglich der Schleifenzähler um eins erhöht, wenn ein Auftrag erfolgreich abgeschlossen wurde. )))) Ich kann mich nicht mehr genau erinnern, und ich kann mein Gehirn nicht anstrengen.

 
Maxim Kuznetsov:

Die korrekteste Art des Abschlusses ist es, Ihren Agenten anzurufen und zu sagen: "John, schließe die Position auf General Electric, wir haben uns auf alles geeinigt".

:-)

Es ist nicht immer möglich, mit Gegenständen zu decken. Und es rutscht härter - die Lautstärke ist hoch.

Aber alles auf einmal :) Und zwar in einer Schleife, eine nach der anderen.

 
Alexey Viktorov:

Ich habe den Code zum Schließen von Aufträgen in direkter Reihenfolge gesehen, und es hat ohne Probleme funktioniert.

Sie erhöhte einfach den Schleifenzähler um eins, wenn der Auftrag erfolgreich abgeschlossen wurde. )))) Ich weiß es nicht mehr genau, und ich kann mein Gehirn nicht anstrengen.

Um Ihr Gehirn nicht zu strapazieren, können Sie alle Positionen, die Sie zum Löschen vorbereitet haben, in einer Liste in der von Ihnen gewünschten Reihenfolge zusammenstellen (in beliebiger Reihenfolge) und sie "Name für Name" löschen, indem Sie die Liste betrachten. Auf diese Weise wird die korrekte Reihenfolge der Löschung beibehalten.

Grund der Beschwerde: