Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 93

 
ivann85:

программно )))
А что нужно именно найти? Номер в списке? Тикет? А если он не один на евре, отложенник этот?
Если их два или три-пять-мульён и все имеют одинаковый тип и висят на одной и той же паре, то какой из них нужен?
 
alexey1979621:

paladin80


artmedia70



Так поможете с советником - с меня тестирование с Вас программирование (вроде тема рабочая), а то мне самому только вешаться или месяца через два, когда все форумы изнасилую чего-нибудь получится.

,







О как... А номер в вашем нике - случайно не запланированное число изнасилуемых форумов?

Писать за вас - тока за денюшку. 50 долларов и он ваш. Заметьте - очень демократичная цена, почти задаром :))

 
alexey1979621:

paladin80


artmedia70



Так поможете с советником - с меня тестирование с Вас программирование (вроде тема рабочая), а то мне самому только вешаться или месяца через два, когда все форумы изнасилую чего-нибудь получится.

,







Мы тут немного переварили ваш советник, подсказали слабые места, что и как надо делать, но заниматься поправкой я не смогу. Своих кодов навалом делать.

... тихо ушёл в облако оптимизироваться...

 
ivann85:

программно )))

Раз нет ответа на вопрос, то вот функция, которая вернёт тикет последнего установленного ордера:

// Возвращает тикет последнего установленного/открытого ордера
int TicketLastOrder(string sy, int op, int mn) {
   datetime t;
   int      i, j=-1, tic=0, k=OrdersTotal()-1;
   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderMagicNumber()!=mn)   continue;
         if (OrderSymbol()!=sy)        continue;
         if (OrderType()!=op)          continue;
         if (t<OrderOpenTime()) {
            t=OrderOpenTime();
            j=i;
            }
         }
      }
   if (OrderSelect(j,SELECT_BY_POS)) tic=OrderTicket();
   return(tic);
}
// -------------------------------------------------------------
/*
Ордера фильтруются по символу (sy), типу (op) и магику (mn)
Чтобы найти тикет последнего установленного ордера BuyLimit 
с магиком Magic на текущем графике,
нужно вызвать функцию с такими параметрами:
int Ticket=TicketLastOrder(Symbol(), OP_BUYLIMIT, Magic);
Если есть такой ордер, функция вернёт номер его тикета.
В противном случае, ф-ция вернёт ноль
*/
 

У меня периодически, но не постоянно функция установки отложенного ордера выдаёт ошибку 4200. Согласно документации эта ошибка означает, что объект уже существует:

ERR_OBJECT_ALREADY_EXISTS4200Объект уже существует


Получается, что ордер данного типа уже в рынке в момент посылка отложенного ордера?

 
hoz:

У меня периодически, но не постоянно функция установки отложенного ордера выдаёт ошибку 4200. Согласно документации эта ошибка означает, что объект уже существует:

ERR_OBJECT_ALREADY_EXISTS4200Объект уже существует


Получается, что ордер данного типа уже в рынке в момент посылка отложенного ордера?

Эта ошибка относится к графическим объектам, а не к ордерам
 
Добрый вечер, Виктор! Странно, отложенный ордер не объект! Может, у тебя не удалён какой-то из объектов, который уже должен был удалён, но не удалён!
 

Подскажите, друзья! Впервые пишу советник, работающий с несколькими отложенными ордерами одновременно, и вот я задумался... какие ошибки могут быть при открытии отл. ордеров? На что делать упор в функции обработки ошибок? Могут ли быть такие ошибки, как, например, 4(торговый сервер занят) или 146(Подсистема торговли занята)? Поделитесь, кто знает.

 
Dozol:

Подскажите, друзья! Впервые пишу советник, работающий с несколькими отложенными ордерами одновременно, и вот я задумался... какие ошибки могут быть при открытии отл. ордеров? На что делать упор в функции обработки ошибок? Могут ли быть такие ошибки, как, например, 4(торговый сервер занят) или 146(Подсистема торговли занята)? Поделитесь, кто знает.

На реале может быть всё, что угодно. Обрабатывайте по возможности все торговые ошибки, которые могут появиться.
 

Подскажите пожалуйста!!

Пишу открытие двух ордеров в определенное время отложенниками

{

Определение время открытия

}

if ((условие)==true)//
{
OrderSend ( OP_BUYSTOPP, параметры);// открываем отложенный ордер байстоп
OrderSend ( OP_SELLSTOP, параметры);// открываем отложенный ордер селлстоп
}

Время вроде как написал правильно, оно его определяет, а вот только открывает почему-то по своему выбору или селлстоп, или байстоп, две сразу не открывает.. но если и открывает, то например БАЙСТОПП в двух-трех-четырех или пяти экзеплярах. А я пытаюсь добится чтобы открывало два отложенника разных типов (байстоп, и селлстоп) в одно время, и по одному. Вопрос вроде примитивный, помогите чайнику) Спасибо!)