Wenn der Indikator eh nur auf der letzten geschlossenen Kerze Werte liefern soll, dann würde ich den Indikator pro Kerze auch nur einmal aufrufen, also etwa in dieser Art und Weise:
Code:
datetime OldTime; //Deklaration außerhalb int start();
double ST_Long, ST_Short;
if (Time[0] != OldTime) {
GetIndicator();
OldTime = Time[0];
}
...
if(OrdersTotal() == 1) {
SL_Check();
}
...
void GetIndicator() {
ST_Long = iCustom (Symbol(), 0 , "super-trend", 10, 1.5, 0, 1);
ST_Short = iCustom (Symbol(), 0 , "super-trend", 10, 1.5, 1, 1);
}
void SL_Check() {
bool res;
for (int i = 0; i < OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) {
if (OrderType() == OP_BUY && OrderMagicNumber() == MagicNumber) {
res = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(ST_Long, MODE_DIGITS), OrderTakeProfit(), 0, Yellow);
}
if (OrderType() == OP_SELL && OrderMagicNumber() == MagicNumber) {
res = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(ST_Short, MODE_DIGITS), OrderTakeProfit(), 0, Yellow);
}
}
}
}
Viel Erfolg!
traderdoc