Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 842

 

OrderClose(OrderTicket(),0.01,Bid,2);

unter "Experten" heißt es "ungültiges Ticket für die Funktion OrderClose".

Hilfe? Mein Ziel ist es, den Auftrag im aktuellen Chart zu schließen.

 
Escapee:

OrderClose(OrderTicket(),0.01,Bid,2);

unter "Experten" heißt es "ungültiges Ticket für die Funktion OrderClose".

Hilfe? Mein Ziel ist es, den Auftrag im aktuellen Chart zu schließen.

if (OrdersTotal()==true)
{
if(OrderSelect(ticket,SELECT_BY_TICKET)>0 && OrderType()==(OP_BUY/OP_SELL здесь поставишь какой ордер) && (здесь можешь написать условия закрытия т.е. сигнал) 
{
bool close = OrderClose(OrderTicket(),OrderLots(),Bid,3,clrRed); 
if(!close)
Print("Ошибка закрытия ордера. Код ошибки=",GetLastError());
else
Print("Ордер BUY успешно закрыт.");
}
}
 
Ich muss die Bestellung WIRKLICH abschließen, wenn ich darf? Warum funktioniert orderticket nicht in der Zeile des Programms, das ich geschrieben habe?
 
Pokrov:

Guten Abend, helfen Sie mir, den Code unten zu verstehen, verkaufen ist auf dem gleichen Prinzip geschrieben, warum drei Optionen zu öffnen, weil ich mit der Option zu fummeln hatte, um zu vermeiden, eine Bestellung dann öffnen - wenn die Bestellung öffnet auf der aktuellen Bar und schließt auf einem no draw,

und das Signal bleibt und öffnet sich wieder, so dass ich es so schreiben musste. Das Problem besteht darin, dass nur ein Kauf- und ein Verkaufsauftrag eröffnet wird und alle anderen schweigen. Ich kann keine weiteren Fehler finden und bin Ihnen im Voraus sehr dankbar.

Wie verstehen Sie diese Zeile?

if (!OrdersTotal()==true)

Ich weiß nicht, wie ich diese Zeile und diese Zeile lesen soll.

if (!OrdersHistoryTotal()==true)

und diese hier...

if(OrderSelect(ticket,SELECT_BY_TICKET)>0 // дальше я не смотрел

Diese letzte Zeile wird zwar funktionieren, aber sie ist nicht so geschrieben ... Ich bin sprachlos.

Nun, wenn Sie den Fehler nicht finden können, dann gibt es wahrscheinlich keinen Fehler...

 
Escapee:

OrderClose(OrderTicket(),0.01,Bid,2);

unter "Experten" heißt es "ungültiges Ticket für die Funktion OrderClose".

Hilfe? Mein Ziel ist es, den Auftrag im aktuellen Chart zu schließen.

Denn bevor ich mit einer Bestellung arbeiten kann, muss ich sie mit der Funktion OrderSelect() auswählen
 
AlexeyVik:

Wie verstehen Sie diese Zeile?

und diese.

Und das hier...

Die letzte Zeile funktioniert zwar, aber das ist nicht die richtige Art zu schreiben ... Ich bin sprachlos.

Nun, wenn Sie den Fehler nicht gefunden haben, dann gibt es wahrscheinlich keinen Fehler...

1. Wenn es keine offenen Aufträge gibt

2. Wenn es keine abgeschlossenen Aufträge gibt.

Was ist los?

 
Pokrov:

1. Wenn es keine offenen Aufträge gibt

2. Wenn es keine abgeschlossenen Aufträge gibt.

Was ist los?

int OrdersTotal(); - gibt eine Zahl zurück, nicht wahr-falsch, das ist der Fehler. Wenn es keine Aufträge gibt, bedeutet das 0. Wenn es Aufträge gibt, ist es nicht nur 1.

Und es gibt keine geschlossenen Aufträge nur auf einem frisch eröffneten Konto, mit dem wir noch nicht gehandelt haben. Auch hier handelt es sich um eine falsche Verwendung der Funktion.

Und warum RefreshRates(); NACHDEM die Bestellung an den Server gesendet wurde? Es ist, als würde man erst etwas bezahlen und dann fragen: "Wie viel kostet das?

 
Pokrov:

if (OrdersTotal()==true)
{
if(OrderSelect(ticket,SELECT_BY_TICKET)>0 && OrderType()==(OP_BUY/OP_SELL здесь поставишь какой ордер) && (здесь можешь написать условия закрытия т.е. сигнал) 
{
bool close = OrderClose(OrderTicket(),OrderLots(),Bid,3,clrRed); 
if(!close)
Print("Ошибка закрытия ордера. Код ошибки=",GetLastError());
else
Print("Ордер BUY успешно закрыт.");
}
}

Was ist das für ein Unsinn, den Sie hier erzählen?

Wenn die Gesamtzahl der Aufträge und Positionen 1 oder mehr beträgt...
Wenn ein Auftrag auf einem unbekannten Ticket ausgewählt wird und es nicht klar ist, ob er geschlossen oder offen ist...
...usw...

Glauben Sie, dass es geholfen hat?

 
evillive:

... Keine Aufträge bedeutet 0, und wenn es Aufträge gibt, ist es nicht nur 1.

...

Hier werde ich sozusagen mit Erlaubnis korrigieren.

In bool, wenn es 0 ist dann ist es falsch, alles andere als Null ist wahr

 
Escapee:

OrderClose(OrderTicket(),0.01,Bid,2);

unter "Experten" heißt es "ungültiges Ticket für die Funktion OrderClose".

Hilfe? Mein Ziel ist es, den Auftrag im aktuellen Chart zu schließen.

Um eine Position über ein Ticket zu schließen, müssen Sie zunächst die genaue Ticketnummer der zu schließenden Position kennen. Dann müssen Sie die Bestellung mit der Funktion OrderSelect(ticket,SELECT_BY_TICKET) auswählen, wobei die erfolgreiche Auswahl geprüft wird. Dann müssen wir den Zeitpunkt des Abschlusses des erfolgreich ausgewählten Auftrags überprüfen. Warum? Denn wenn wir nach Ticket auswählen, wird der Pool-Parameter der Funktion OrderSelect(..., ..., pool) ignoriert (er wird nur verwendet, wenn wir nach Index auswählen). Und das bedeutet, dass wir, selbst wenn wir einen Auftrag erfolgreich ausgewählt haben, immer noch wissen müssen, in welcher Liste wir ihn ausgewählt haben - in der Liste der geschlossenen oder offenen Positionen. Es ist die Überprüfung der Schlusszeit, die es uns ermöglicht herauszufinden, "ob der Auftrag noch auf dem Markt ist". Wenn der Zeitpunkt des Abschlusses gleich Null ist, befindet sich der Auftrag noch auf dem Markt. Ist die Zeit ungleich Null, wurde der Auftrag bereits früher abgeschlossen. Und nach all diesen Vorgängen können wir einen Auftrag senden, um diesen Auftrag zu schließen.