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

 
artmedia70:
Ответ же сам напрашивается. Отсортировать открытые позиции по времени их открытия. И далее закрывать их по списку из отсортированного массива.

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

//+------------------------------------------------------------------+
//|                 Закрыть все ордера                               |
//+------------------------------------------------------------------+


double ClossAllOrders ()

{
  for(int i=0; i<OrdersTotal(); )
  {
    if ( !OrderSelect(i, SELECT_BY_POS) )
      break;
    
    int type   = OrderType();

    bool result = false;
    
    switch(type)
    {
      //Close opened long positions
      case OP_BUY       : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 3, Lime );
                          break;
      
      //Close opened short positions
      case OP_SELL      : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 3, Lime );
                          break;

      //Close pending orders
      case OP_BUYLIMIT  :
      case OP_BUYSTOP   :
      case OP_SELLLIMIT :
      case OP_SELLSTOP  : result = OrderDelete( OrderTicket() );
    }
    
    if(result == false)
    {
      Print("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() );
      i++;
      Sleep(500);
    }  
  }
}

// End

 

Тут как я понял сортировка идет за счет OrderTicket

как бы это воткнуть в тот код) 

 
_new-rena:

138 - "Запрошенная цена устарела, либо перепутаны bid и ask."

Цену открытия/закрытия невозможно пересчитать, т.к. она есть, а тут - беда (нужно цену запросить и присовить ей значение с помощью MarketInfo, а эту переназвать другой переменной):

Спасибо за совет)Но оказалось, что у меня проблема в самом советнике ,а не в этой функции.
 
Как запомнить определенный уровень. Допустим это был Максимум свечи. Но присваивания переменной этого значения было через if. и в другой ситуации, эта переменная равно нулю.Т.е мне нужно как то запомнить определенную цену. 
 
305:
Как запомнить определенный уровень. Допустим это был Максимум свечи. Но присваивания переменной этого значения было через if. и в другой ситуации, эта переменная равно нулю.Т.е мне нужно как то запомнить определенную цену. 
Может поможет https://book.mql4.com/ru/variables/arrays там вроде ниже есть то что вам нужно 

Массивы-таймсерии

 
так не получается. сейчас попробую через горизонтальную линию
 
305:
так не получается. сейчас попробую через горизонтальную линию

У кима много разных функций по запоминанию чего либо, тут список пробежать по названиям минуты 3, может найдете https://www.mql5.com/ru/forum/131859

 
7Konstantin7:

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

 

Тут как я понял сортировка идет за счет OrderTicket

как бы это воткнуть в тот код) 

Расскажите, в чем секрет, что надо закрывать ордера в определенном порядке, а не подряд ? Как пара секунд изменит жизнь счета?

Спасибо. 

 
Roger:

Расскажите, в чем секрет, что надо закрывать ордера в определенном порядке, а не подряд ? Как пара секунд изменит жизнь счета?

Спасибо. 

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

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

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

Если использовать закрытие ордеров в порядке как они были открыты, то график баланса станет более ровным, данные-информация в стейте будет более адекватная.

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

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

Сейчас вроде МТ4 можно отправлять до 8 приказов одновременно но точно не знаю, в таком случае закрывать можно еще быстрей.

 
7Konstantin7:

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

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

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

Если использовать закрытие ордеров в порядке как они были открыты, то график баланса станет более ровным, данные-информация в стейте будет более адекватная.

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

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

Сейчас вроде МТ4 можно отправлять до 8 приказов одновременно но точно не знаю, в таком случае закрывать можно еще быстрей.

Обратный цикл. Ищете самую раннюю открытую позицию, закрываете её, переходите в начало цикла. Так до тех пор, пока не кончатся все позиции, которые нужно закрыть.
 
artmedia70:
Обратный цикл. Ищете самую раннюю открытую позицию, закрываете её, переходите в начало цикла. Так до тех пор, пока не кончатся все позиции, которые нужно закрыть.

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

Есть 4 кредита на сайте mql5 мог бы отдать) если там можно перечислять между участниками.