Как отслеживать закрылась ли уже сделка?

 
Как отслеживать конкретную сделку, закрылась она уже или нет.

Запоминать ее тикет и потом, на каждом тике, проверять есть ли она в списке открытых ордеров?

Или есть какой-то более удобный способ?
 
igrok333:
Как отслеживать конкретную сделку, закрылась она уже или нет.

Запоминать ее тикет и потом, на каждом тике, проверять есть ли она в списке открытых ордеров?

Или есть какой-то более удобный способ?

А чем этот плох? Работает компьютер же, а мы отдыхаем. А он пусть работает, он железный... Ну можно, только осторожно, еще OrdersTotal() проверять.

 
STARIJ:

А чем этот плох? Работает компьютер же, а мы отдыхаем. А он пусть работает, он железный... Ну можно, только осторожно, еще OrdersTotal() проверять.

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

может OrderType() меняется на -1, если она попадает в список закрытых? да нет же, остается таким же.

может какое свойство меняется?
 
"ордер клоузтайм() будет не равен нулю"
 
igrok333:
Как отслеживать конкретную сделку, закрылась она уже или нет.

Запоминать ее тикет и потом, на каждом тике, проверять есть ли она в списке открытых ордеров?

Или есть какой-то более удобный способ?

На каждом тике:

for (по массиву отслеживаемых ордеров)
{
   if (!OrderSelect(nTicket[i], SELECT_BY_TICKET))
      continue;

   if (OrderCloseTime() == 0)
   {
      // Ордер находится в списке рабочих (MODE_TRADES)
   }
   else
   {
      // Ордер находится в истории счета, т. е. закрыт или удален (MODE_HISTORY)
   }
} 

Но со временем, если речь именно о стратегиях, пришел к тому, что выгоднее не по тикетам отслеживать, а на каждом тике формировать список ордеров эксперта заново, используя специальные признаки, записываемые в Magic Number.

В этом случае требуется только один проход по списку ордеров на один тик. Если же поддерживать список по тикетам, помня предыдущее состояние, то придется проходить список несколько раз: удаление из списка закрытых/отмененных ордеров, модификация данных в измененных ордерах, добавление новых ордеров. 

 
Ihor Herasko:

На каждом тике:

Но со временем, если речь именно о стратегиях, пришел к тому, что выгоднее не по тикетам отслеживать, а на каждом тике формировать список ордеров эксперта заново, используя специальные признаки, записываемые в Magic Number.

В этом случае требуется только один проход по списку ордеров на один тик. Если же поддерживать список по тикетам, помня предыдущее состояние, то придется проходить список несколько раз: удаление из списка закрытых/отмененных ордеров, модификация данных в измененных ордерах, добавление новых ордеров. 

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