[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 858
![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
Es ist eine einfache Frage, aber mir fällt nichts ein.
Zu einem bestimmten Zeitpunkt gibt es 4 offene Stellen. Ich versuche, sie alle auf folgende Weise zu schließen:
Aber sie sind nicht alle geschlossen, sondern durch einen. Sie haben nämlich die folgenden Nummern: 2,4,6,7. Die Plätze 2 und 6 sind also geschlossen.
Was ist der Trick?
Es ist eine einfache Frage, aber mir fällt nichts ein.
Zu einem bestimmten Zeitpunkt gibt es 4 offene Stellen. Ich versuche, sie alle auf folgende Weise zu schließen:
Aber sie sind nicht alle geschlossen, sondern durch einen. Sie haben nämlich die folgenden Nummern: 2,4,6,7. Die Plätze 2 und 6 sind also geschlossen.
Wo ist der Haken?
Der Trick ist, dass sich nach dem Schließen der Position die Nummerierung im OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ändert und gleichzeitig nicht alle geschlossen werden können
HH: Mir hat fts I. sehr geholfen. Kim, ich habe ein wenig geändert - zusätzliche Klammern entfernt und in eine Zeile gezogen:
Suchen Sie im Forum - Sie werden die Originale finden
nach dem Schließen einer Position ändert sich die Nummerierung in OrderSelect(i,SELECT_BY_POS,MODE_TRADES) und es können nicht alle gleichzeitig geschlossen werden
SZY: fts I hat mir sehr geholfen. Kim, ich habe ein wenig geändert - zusätzliche Klammern entfernt und eine Zeile eingezogen:
Suchen Sie im Forum - Sie werden das Original finden
Danke für den Tipp und das Beispiel. Ich werde mich damit befassen.
Auf dem Weg dorthin werde ich eine weitere Frage stellen.
Die Aufgabe ist folgende: Ich muss feststellen, welcher Auftragstyp durch einen Stop Loss geschlossen wurde, und einen zukünftigen Auftrag, der durch einen Stop Loss geschlossen wurde, mit einem früheren vergleichen (d.h. ihre Typen vergleichen). Bei der Durchsicht der Dokumentation konnte ich nichts über die Verarbeitung des letzten Ereignisses finden.
Zu diesem Zeitpunkt habe ich diese Operation als Schließung einer Order implementiert, wenn sie eine bestimmte Grenze erreicht (Bid-OrderOpenPrice() >=TP*Point). So konnte ich in einer Variablen den Typ der zuletzt abgeschlossenen Bestellung speichern und mit der gerade abgeschlossenen vergleichen ( if(type==OrderType()) ). Beim Testen funktioniert alles einwandfrei, aber ich würde es gerne noch mit Stop Losses umsetzen.
Ich habe versucht, mit OrderSelect() und dem Argument MODE_HISTORY einen abgeschlossenen Auftrag aus der Historie auszuwählen. Da es keine Bedingungen für das Schließen von Aufträgen gibt, kann eine Änderung der Variable OrdersTotal() als Auslöser für einen Stop-Loss betrachtet werden. Aber ich bin auf ein Problem gestoßen: Ich kann die Nummer der letzten abgeschlossenen Bestellung nicht finden (da sich ihre Nummer ständig ändert), oder ich habe einfach nicht herausgefunden, wie ich das machen soll.
Die Frage ist: Wie kann man das mit Stop-Losses umsetzen? Vielleicht gibt es einfachere Wege? Nun, wenn die Denkrichtung richtig ist, wie finden wir dann die letzte geschlossene Bestellung?
die Nummerierung in OrderSelect(i,SELECT_BY_POS,MODE_TRADES) nach dem Schließen einer Position geändert wird und nicht alle Positionen gleichzeitig geschlossen werden können
SZS: Die Funktionen von I. Kim haben mir sehr geholfen, ich habe sie ein wenig verändert - ich habe die zusätzlichen Klammern entfernt und sie in eine einzige Zeile gezogen:
Suchen Sie im Forum - Sie werden das Original finden
https://docs.mql4.com/ru/trading/OrderSelect
Es ist eine einfache Frage, aber mir fällt nichts ein.
Zu einem bestimmten Zeitpunkt gibt es 4 offene Stellen. Ich versuche, sie alle auf folgende Weise zu schließen:
Aber sie sind nicht alle geschlossen, sondern durch einen. Sie haben nämlich die folgenden Nummern: 2,4,6,7. Die Plätze 2 und 6 sind also geschlossen.
Was ist das Problem?
Reden Sie von Nummern in der Reihenfolge oder von Tickets?
Reden Sie von Nummern in der Reihenfolge oder von Tickets?
Ich bin selbst schon verwirrt. Es handelt sich um Eintrittskarten, aber ich habe sie gegeben, um die Situation zu verdeutlichen. Sie schließen eine nach der anderen.
Hurra, ich habe es geschafft!!!
Victor, vielen Dank, ich hatte einen Fehler, ich habe den Namen des Indikators nicht richtig geschrieben.
Was du gerade gesagt hast... alles auf einen Haufen
https://docs.mql4.com/ru/trading/OrderSelect
Versuchen Sie, Mitnahmen oder Stopps in einer Gruppe von Aufträgen zu ändern/zu entfernen - die Aufgabe ist einfach, aber ich bin darauf gestoßen, dass sich bei der Auftragsauswahl mit OrderSelect(i,SELECT_BY_POS,MODE_TRADES) die Auftragsnummerierung direkt im Schleifenkörper änderte und ich es schaffte, einen bereits geänderten Auftrag (ohne Mitnahme) mehrmals zu ändern - Fehler Nr. 1, weshalb ich vorschlug, dass wever ein ähnliches Problem hatte
Bitte raten Sie mir, wie ich den Indikator am Ende mehrerer Balken neu berechnen lassen kann, zum Beispiel: Ich möchte, dass der Indikator alle 5 neuen Balken neu berechnet wird.
Bitte um Ratschläge, wie man einen Indikator am Ende mehrerer Balken neu berechnen kann, z. B.: Ich möchte, dass der Indikator alle 5 neuen Balken neu berechnet wird.
Sie kennen sich mit Programmierung aus.
Dies ist eine logische Aufgabe, für deren Lösung man nicht besonders schlau sein muss. Denken Sie mit Ihrem Kopf.
Es gibt verschiedene Fälle. Wo genau soll sie umgelenkt werden, mit welcher TF, wie die Umlenkung erfolgen soll, usw.. Wie beantworte ich Ihre Frage?
Notieren Sie die Zeit des Taktes und setzen Sie diese Zeit nach fünf Takten zurück und notieren Sie sie erneut. Zum Zeitpunkt der Nullstellung können Sie eine Bedingung für die Neuberechnung eingeben. Die Funktion iTime(NULL,0,0) ist hilfreich. Der Rest ist reine Logik.
Bitte um Ratschläge, wie man einen Indikator am Ende mehrerer Balken neu berechnen kann, z. B.: Ich möchte, dass der Indikator alle 5 neuen Balken neu berechnet wird.
Die Methode ist wahrscheinlich nicht die zuverlässigste, aber sie wird funktionieren, um die Idee auszuprobieren (z. B. einen Entwurf).
Verwenden Sie die Variable Bars und verfolgen Sie ihre Veränderung. Erhöht um 5, erinnert, usw.