Vielen Dank traderdoc - du bist mir ein paar Stunden zuvorgekommen, denn mittlerweile konnte ich das Problem lösen ... und zwar genau so, wie du es empfohlen hast.
In der OnTick-Funktion habe ich den Zeitpunkt deklariert:
Code:
//---Close Order
double bid = SymbolInfoDouble(_Symbol,SYMBOL_BID);
if(OrderSelect(buyTicket) && bid <= OrderGetDouble(ORDER_SL)){
closeOrder();
}
if(OrderSelect(sellTicket) && bid >= OrderGetDouble(ORDER_SL)){
closeOrder();
}
Und weiter unten in der closeOrder-Funktion den Code wie folgt:
Code:
void closeOrder(){
for(int i = OrdersTotal()-1; i >= 0; i--){
buyTicket = OrderGetTicket(i);
if(OrderGetString(ORDER_SYMBOL) != _Symbol && OrderGetInteger(ORDER_MAGIC) != Magic) continue;
if(OrderSelect(buyTicket) && OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_BUY_STOP){
if(trade.OrderDelete(buyTicket)){
Print(" -x-> Buy-Stop-Order #",buyTicket," gelöscht da SL erreicht");
}
}
}
for(int i = OrdersTotal()-1; i >= 0; i--){
sellTicket = OrderGetTicket(i);
if(OrderGetString(ORDER_SYMBOL) != _Symbol && OrderGetInteger(ORDER_MAGIC) != Magic) continue;
if(OrderSelect(sellTicket) && OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_SELL_STOP){
if(trade.OrderDelete(sellTicket)){
Print(" -x-> Sell-Stop-Order #",sellTicket," gelöscht da SL erreicht");
}
}
}
}
Nun klappt es ganau so, wie ich es mir gewünscht habe und ich habe wieder was dazugelernt ... :-)
Nochmals vielen Dank für den Hinweis! :-)