Как запретить советнику закрывать последнюю открытую позицию

 
Если открыто несколько покупок например, как сделать так чтобы закрывались все кроме последней.. не могу придумать. Видимо решение связано с номером тикета, но вот как это реализовать. С уважением, Елена
 
Chernoelena >>:
Если открыто несколько покупок например, как сделать так чтобы закрывались все кроме последней.. не могу придумать. Видимо решение связано с номером тикета, но вот как это реализовать. С уважением, Елена

Первое, что приходит в голову - определить самый "молодой" ордер с помощью функции OrderOpenTime(), запомнить его тикет и закрыть все ордера кроме этого.

 
XinoXano писал(а) >>

Первое, что приходит в голову - определить самый "молодой" ордер с помощью функции OrderOpenTime(), запомнить его тикет и закрыть все ордера кроме этого.

Это то да.. а вот именно как сделать "все ордера кроме этого".. для OrderClose

 
Chernoelena >>:

Это то да.. а вот именно как сделать "все ордера кроме этого".. для OrderClose

OrderClose за 1 раз все позы закрыть не может. Закрывать будите в цикле, а в цикле условие на тикит.

 
HIDDEN писал(а) >>

OrderClose за 1 раз все позы закрыть не может. Закрывать будите в цикле, а в цикле условие на тикит.

Понимаю я это.. реализовать не могу

 
Что же теперь делать. У кого тут время есть?  Эй, люди. Сюда-аа. Тут человеку помочь надо.
 

Примерно вот так:

int start()
  {
   bool   result;
   double price;
   int    i,k,tick;
   k=OrdersTotal();
   for(i=k;i<=k;i--)
   {
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
     {
      if(OrderTicket()==tick ) continue; //предполагается, что в этом месте переменной tick уже присвоен тикет самого "молодого" ордера
      cmd=OrderType();
      if(cmd==OP_BUY || cmd==OP_SELL)
        {
         while(true)
           {
            if(cmd==OP_BUY) price=Bid;
            else            price=Ask;
            result=OrderClose(OrderTicket(),OrderLots(),price,3,CLR_NONE);
            if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
            else error=0;
            if(error==135) RefreshRates();
            else break;
           }
        }
     }
   else Print( "Error when order select ", GetLastError());
   }
   return(0);
  }
 

Вы все эти покупки открываете сами, а потом надо прицепить советник, чтоб он закрыл все сделки кроме последней чтоли? 

Или у Вас советник эти сделки открывает?

 
FOReignEXchange писал(а) >>
Что же теперь делать. У кого тут время есть? Эй, люди. Сюда-аа. Тут человеку помочь надо.

На самом деле на этом форуме есть отзывчивые люди.. помогали не раз. так что зря вы иронизируете

 
FOReignEXchange писал(а) >>

Вы все эти покупки открываете сами, а потом надо прицепить советник, чтоб он закрыл все сделки кроме последней чтоли?

Или у Вса советникэти сделки открывает?

он сам их открывает

 
Chernoelena >>:

На самом деле на этом форуме есть отзывчивые люди.. помогали не раз. так что зря вы иронизируете

Я тоже помогал и помогаю,когда могу. Только не понятен смысл задания. Поэтому и не знаю с чего начать.

Причина обращения: