Воспроизводимое различие во времени выставления(удаления) отложек. Почему?

 

Запускаю следующий скрипт:

#define OFFSET 100
#define TP 100
#define SL 100

void start()
{
  int Ticket;
  double open, tp, sl;
  int BenchTime;
  
  open = NormalizeDouble(Ask - OFFSET * Point, Digits);
  
  BenchTime = GetTickCount();
  Ticket = OrderSend(Symbol(), OP_BUYLIMIT, 1, open, 0, 0, 0);
  BenchTime = GetTickCount() - BenchTime;
  Print("Time for open order without TP, SL = " +  BenchTime + "ms.");
  
  BenchTime = GetTickCount();
  OrderDelete(Ticket);
  BenchTime = GetTickCount() - BenchTime;
  Print("Time for delete order without TP, SL = " +  BenchTime + "ms.");

  open = NormalizeDouble(Ask - OFFSET * Point, Digits);
  tp = NormalizeDouble(open + TP * Point, Digits);
  sl = NormalizeDouble(open - SL * Point, Digits);

  BenchTime = GetTickCount();
  Ticket = OrderSend(Symbol(), OP_BUYLIMIT, 1, open, 0, sl, tp);
  BenchTime = GetTickCount() - BenchTime;
  Print("Time for open order with TP, SL = " +  BenchTime + "ms.");
  
  BenchTime = GetTickCount();
  OrderDelete(Ticket);
  BenchTime = GetTickCount() - BenchTime;
  Print("Time for delete order with TP, SL = " +  BenchTime + "ms.");
  
  return;
}

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


 
На первом ордере, если до этого не был открыт торговый коннект, происходит его создание, авторизация и тд. Именно на подготовительную часть тратится некоторое время. Последующие операции уже проходят быстрее.
 
Видимо, через какое-то время торговый коннект (где-то через час повторно запускал скрипт - такое же запаздывание) закрывается...
Причина обращения: