Как закрыть открытий ордер. - страница 3

 
Не помогло....
 
Ставлю в цикл выбора ордера команду принт, Но она не выводиться, почемуто в журнале.....
 
nikelodeon:
Ставлю в цикл выбора ордера команду принт, Но она не выводиться, почемуто в журнале.....

А условие какое должно быть для закрытия ордера?

 
Martingeil:

Вставь функцию сергеева.

это НЕ МОЯ ФУНКЦИЯ! я таким не пользуюсь!

У меня примерно так (вариант не полный):

//---------------------------------------------------------------   CloseOrders
int CloseOrders(int dir, int SysID, string smb)
{
   int i, total = OrdersTotal();   if (total<=0) return(0);
   int ticket[1000], nt=0; double op;

   nt=0;
   for (i=0; i<total; i++) 
   {       
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) return(-1);
      if ((dir!=OrderType()&&dir>=0) || OrderMagicNumber()!=SysID || (OrderSymbol()!=smb&&smb!="")) continue;
      ticket[nt]=OrderTicket(); nt++;
   }
   for (i=0; i<nt; i++)
   {       
      if (!OrderSelect(ticket[i], SELECT_BY_TICKET)) return(-1);
      dir=OrderType(); RefreshParam(OrderSymbol());
      if (dir==OP_BUY) op=Bid; else if (dir==OP_SELL) op=Ask;
      if (dir==OP_BUY || dir==OP_SELL) if (!OrderClose(ticket[i], OrderLots(), op, Slip)) return(-1);
      if (dir==OP_BUYLIMIT || dir==OP_SELLLIMIT || dir==OP_BUYSTOP || dir==OP_SELLSTOP)
      if (!OrderDelete(ticket[i])) return(-1);
   }
   return(nt);
}
 
Эта функция вызываеться перед открытием нового ордера.... Соответственно мы в функцию попадаем, а вот цикл уже не делаеться почемуто... Блин что за фигня...??????
 
sergeev:

это НЕ МОЯ ФУНКЦИЯ! я таким не пользуюсь!

У меня примерно так (вариант не полный):

))))))))

Да ладно я же не в прямом смысле просто сказал что бы взял твой вариант, пока не могу понять по моему там ретурн стоит, и советник пока не будет ордеров ноль, далее смотреть не будет по этому он и не видит функцию я так на пьяный глаз глянул.........

 
ну да, конда ордеров нет, он цикл выполняь не будет, НО они то есть... открытые....... Чёто я ваще ничего уже и не понимаю, как так может быть.....
 
nikelodeon:
ну да, конда ордеров нет, он цикл выполняь не будет, НО они то есть... открытые....... Чёто я ваще ничего уже и не понимаю, как так может быть.....
   int total = OrdersTotal();
   for (int i = 0; i < total; i++) {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if ((OrderSymbol() == Symbol()) && (OrderMagicNumber() == mn)) {
         return(0);
      } 
   }
 
nikelodeon:
ну да, конда ордеров нет, он цикл выполняь не будет, НО они то есть... открытые....... Чёто я ваще ничего уже и не понимаю, как так может быть.....
После каждого действия пропиши принты или коммент, по другому обычно не лечится.
 
Ну и даже при отключении этого ничего не изменилось....... Веть выбор ордеров происходит в фунции закрытия........
Причина обращения: