Как удалить предпоследнюю позицию? - страница 2

 
FAQ:
В функции Кима, поменять OrderCloseTime() на OrderOPenTime() и OrdersHistoryTotal() на OrdersTotal() и MODE_HISTORY на MODE_TRADES, найти последний ордер, а потом предпоследний и удалить

Вы с Романом про одну и ту же функцию говорите? ( ребята, я ее не могу найти)
 
liana:

Вы с Романом про одну и ту же функцию говорите? ( ребята, я ее не могу найти)
Да. Про одну.
 
liana:

Вы с Романом про одну и ту же функцию говорите? ( ребята, я ее не могу найти)
Да напишите самостоятельно: все эти функции одинаковые с легкими изменениями. Не уж то самостоятельно разобраться нет желания ? Так и будете выискивать по форуму ? Там писать минут 10 от силы. Больше времени потратили на создание ветки.
 
VladislavVG:
Да напишите самостоятельно: все эти функции одинаковые с легкими изменениями. Не уж то самостоятельно разобраться нет желания ? Так и будете выискивать по форуму ? Там писать минут 10 от силы. Больше времени потратили на создание ветки.

Желание есть, но пока не получается, поэтому и прошу помочь.

Зачем тогда форум нужен? Просто написать на первой и единственной странице форума крупно так - Пиши сам! и закрыть форум.

А вы сами никогда вопросов тут не задавали?

 
//+---------------------------------------------------------------------+
//Удаляет ордер , или позицию с типом type, или без разницы если type<0 |
//С номером count от конца по умолчанию стоит предпоследний             |
//+---------------------------------------------------------------------+
bool DelPreLast(int type = -1, int count = 1){int i,typ,c;
   for(i = OrdersTotal()-1; i>=0; i--){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
         if(OrderSymbol()!=sy){continue;}
         if(OrderCloseTime()!=0){continue;}
         if(OrderType()==typ||typ==-1){
            if(c>=count){
               if(OrderType()<2){
                  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),MarketInfo(OrderSymbol(),MODE_SPREAD),Green);
               }else{
                  OrderDelete(OrderTicket());
               }
               return(true);
            }
            c++;
         }
      }
   }   
   return(false);
}
 
liana:
Желание есть, но пока не получается, поэтому и прошу помочь.

Вы сами программируете ? Если да, пробуйте так для открытых позиций:

1. Проходим по всем открытым ордерам - цикл

2. Считываем тикеты и нужный критерий, например, время открытия позиции в 2-мерный массив: одна из размерностей номер тикета, вторая - время открытия позиции

3. Сортируем по критерию в нужном порядке (одна из размерностей массива) - пусть убывания

4. Закрываем ордер по тикету (вторая размерность массива) с индексом 1 (получится предпоследний по времени в данном случае)

Для ордеров в истории - алгоритм похож.

 
liana:


А вы сами никогда вопросов тут не задавали?

Лана, Вы одни и те же вопросы задаете. Такое впечатление, что с алгоритмом функций и разбираться не пытались.
 
VladislavVG:
Лана, Вы одни и те же вопросы задаете. Такое впечатление, что с алгоритмом функций и разбираться не пытались.
Верно - не пыталась. Кажется слишком сложно для начала.
 
liana:
Верно - не пыталась. Кажется слишком сложно для начала.
Там ничего сложного: просто остановитесь на одной, любой, функции и детально разберитесь - после этого тайн не останется. Поверьте, Вы этим огромное количество времени себе сэкономите.
Причина обращения: