seit gegrüßt
,
Ich habe in meinem EA eine Funktion die zum Tagesende alle Positionen löscht/schließt. Jetzt bekommen ich immer die Fehlermeldung
'Unknown Ticket 1 for OrderDelete Function'. Das Ticket 1 ist eine Pending Order die über expiration gelöscht wurde.
Mit 'index = OrdersTotal()' bekomme ich die Anzahl der offenen Orders und der Pending Orders. Soweit klar. Aber wenn gelöscht (deleted due expiration) sollte diese Order nicht mehr unter OrdersTotal() auftauchen!?
Code:
void CloseAllOpenPositions(string f, int intMaxSlippage) {
if(debug)
Print(">>>",f,"::",__FUNCTION__+"()");
bool checkOrderClose=true;
int index=OrdersTotal()-1;
while(index>=0) {
if(OrderSelect(index,SELECT_BY_POS,MODE_TRADES)) {
Print(f,"::Close all Positions: ",TimeCurrent());
if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic) {
if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP) {
checkOrderClose=OrderDelete(OrderTicket(),CLR_NONE);
if(!checkOrderClose) {
int errorCode=GetLastError();
if(errorCode==1 || errorCode==2 || errorCode==5 || errorCode==6 || errorCode==64 || errorCode==65 || errorCode==132 || errorCode==133 || errorCode==139) {
Print(__FUNCTION__," Error: delete pendingOrder ",OrderTicket(),"|",OrderComment(),"|",ErrorDescription(errorCode));
}
}
}
}
}
index--;
}
Verstehe ich etwas falsch
VG
stoffel
MT4
build 1260
24.01.2020