ФОРТС. Вопросы по исполнению - страница 99

 
Dennis Kirichenko:

Будут меня многие снова хаять, но остаюсь при своём мнении. Да, я эмоционально высказывался выше, прошу простить, если кого задел...

Зайду издалека.

Представьте себе советский магазин перед открытием, пусть в 9:00 утра. Стоит куча народу, толкается перед входом, жаждет дефицита. Какой-нибудь грузчик, который откроет дверь магазина изнутри ровно в 9:00, рискует быть придавленным входящей толпой. Толпа наконец-то запущена в магазин, и в первые минуты в магазине царит суета, если не сказать хаос. Шум, брань. Бывает, какой-нибудь блатной оказывается в первых рядах покупателей. Тут толпа ещё больше раззадоривает себя и шумит...

Так вот. Сейчас трейдер сидит перед монитором, не видит никакой толпы, всё тихо перед открытием "магазина". Чувство суеты и хаоса его, как советского покупателя, не беспокоят. Но это не отменяет ситуации, когда стартует система биржи, и появляется всплеск заявок. Принцип узкого горлышка не пропадает и остаётся в силе.

Вопрос. Как вы думаете, брокер запускает своих покупателей в магазин случайным образом или по какому-то алгоритму? Мне кажется, что приоритет отдаётся крупным покупателям. С них брокер больше получит в качестве вознаграждения. Ну и вопрос репутации брокера. Недовольство большого покупателя опаснее недовольства мелкого. Т.е. я предполагаю, что заявки крупных клиентов исполняются быстрее на открытии.

Вопрос. Как вы думаете, брокер не понимает, что страдает мелкий покупатель "магазина"? Думаю, конечно понимает. Мы же коллективно выяснили, что "там" не идиоты. Что делать тогда брокеру? Ну наверное как-то минимизировать недовольство мелкого покупателя. А как именно? Отменить заявку нельзя, тогда мелочь скажет: "Как я, многоуважаемый, пусть и небольшой, трейдер, получил от брокера от ворот поворот?" Наверное можно просто придержать заявки мелочёвки в очереди заявок, пока блатные отоварятся... Ну или принять главные заявки – купить или продать, а модификацию попридержать…

А теперь представьте, что на бирже таких брокеров много: суеты в начале сессии ещё больше, чем в одном советском магазине.

Вот такие мысли.  

 

P.S. Все совпадения в моём тексте случайны и носят иллюстративный характер.

Очень много "воды" от того, что Вы не знаете, как устроен шлюз ФОРТС.

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

Раньше, у Отрывашки было 3 сервера МТ5, а сейчас - 8, а задержки не уменьшились,

а громадно увеличились, но юзеров МТ5 на ФОРТС не стало больше!

 
fxsaber:

Это и будет доказательством, что события не было.

Не будет!

Всё, что делает пользователь - не доказательство, только логи терминала будут являтся доказательством!

 
prostotrader:

Не будет!

Всё, что делает пользователь - не доказательство, только логи терминала будут являтся доказательством!

Но логирование пользователем всех событий в OnTradeTransaction() поможет понять причины.

 
Vladimir Karputov:

Но логирование пользователем всех событий в OnTradeTransaction() поможет понять причины.

Прикольно...

У меня 4000 транзакций в день, каждая транзакция минимум 5-6 раз "дёргает" OnTradeTransaction

Кто будет разбираться в этих "портянках" :) Ведь к ним нужны логи и терминала к тому же, плюс логи Сервера МТ5.

Добавлено

Всё работало прекрасно до выхода нового билда.

Да и сейчас работает, но иногда происходят сбои на Серверах Брокера.

Добавлено

При установке, мофицикации и удалении ордера я ему присваиваю состояние (state) и засекаю время установки.

//+------------------------------------------------------------------+
//| Place order                                                      |
//+------------------------------------------------------------------+
void COrder::Place(const double price, const double volume, const bool buy_sell)
{
  MqlTradeRequest request = {0};
  MqlTradeResult  result  = {0};
  ticket = 0;
  req_id = 0;
  mem_magic = magic_storage + 1;
  check_count = 0;
  if(magic_storage >= (magic_number + 65530)) mem_magic = magic_number;
//--- Fill structure
  request.action = TRADE_ACTION_PENDING;
  request.magic  = mem_magic;
  request.symbol = a_symbol;
  request.volume = volume;
  request.price  = price;
  if(buy_sell)
  {
    request.type = ORDER_TYPE_BUY_LIMIT;
  }
  else
  {
    request.type = ORDER_TYPE_SELL_LIMIT;
  } 
  request.comment = "Отложенный ордер...";      
  request.type_filling = ORDER_FILLING_RETURN;
  request.type_time = ORDER_TIME_DAY;
//--- Send order
  if(OrderSendAsync(request, result))
  {
    if((result.retcode == TRADE_RETCODE_PLACED) || (result.retcode == TRADE_RETCODE_DONE)) 
    {
      req_id = result.request_id;
      magic_storage = mem_magic;
      state = ORD_DO_SET;
      mem_time = GetMicrosecondCount();
      mem_start_time = TimeCurrent();
      SetTransCount();
    }
    else
    {
      mem_magic = 0;
      mem_time = 0;
      mem_start_time = 0;
      CheckError(result.retcode, "Place: Ордер не установлен! Причина: ", order_status, ticket);
    }
  }
  else
  {
    mem_magic = 0;
    mem_time = 0;
    mem_start_time = 0;
    CheckError(result.retcode, "Place: Ордер не отослан! Причина: ", order_status, ticket);
  }
}

Вот здесь

if((result.retcode == TRADE_RETCODE_PLACED) || (result.retcode == TRADE_RETCODE_DONE)) 
    {
      req_id = result.request_id;
      magic_storage = mem_magic;
      state = ORD_DO_SET;
      mem_time = GetMicrosecondCount();
      mem_start_time = TimeCurrent();
      SetTransCount();
    }

А в OntradeTransaction этот флаг (ORD_DO_SET) сбрасывается

Таймер (1 сек) проверяет состояние этого ордера, если в OnTradeTransaction ничего не пришло.

И засекает новое время, логируя 

2018.02.28 10:54:40.162 trader (ALRS-3.18,M1)   ProcessOrders: Билет sell ордера = 84718482 Cост. ордера = ORD_DO_SET

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

//+------------------------------------------------------------------+
// Expert Order Real Select function                                 |
//+------------------------------------------------------------------+
ENUM_ORD_SELECT OrderRealSelect(const ulong ticket, ORDER_DATA &ord_data, const bool get_data)
{
  double init_vol = 0;
  double cur_vol = 0;
  ZeroMemory(ord_data);
  ord_data.real_state = ORDER_NOT_SPECIFIED;
  ord_data.error_code = ERR_SUCCESS;
  ResetLastError();
  if(ticket > 0)
  {
    if(HistoryOrderSelect(ticket))
    {
      if(get_data)
      {
        ord_data.comment = HistoryOrderGetString(ticket, ORDER_COMMENT);
        ord_data.expiration = datetime( HistoryOrderGetInteger(ticket, ORDER_TIME_EXPIRATION)); 
        ord_data.magic = HistoryOrderGetInteger(ticket, ORDER_MAGIC);
        ord_data.pos_id = HistoryOrderGetInteger(ticket, ORDER_POSITION_ID);
        ord_data.price_cur = HistoryOrderGetDouble(ticket, ORDER_PRICE_CURRENT);
        ord_data.price_open = HistoryOrderGetDouble(ticket, ORDER_PRICE_OPEN);
        ord_data.price_stlim = HistoryOrderGetDouble(ticket, ORDER_PRICE_STOPLIMIT);
        ord_data.sl = HistoryOrderGetDouble(ticket, ORDER_SL);
        ord_data.state = ENUM_ORDER_STATE( HistoryOrderGetInteger(ticket, ORDER_STATE));
        ord_data.symbol = HistoryOrderGetString(ticket, ORDER_SYMBOL);
        ord_data.t_done_msc = datetime(HistoryOrderGetInteger(ticket, ORDER_TIME_DONE_MSC));
        ord_data.t_set_msc = datetime(HistoryOrderGetInteger(ticket, ORDER_TIME_SETUP_MSC));
        ord_data.time_done = datetime(HistoryOrderGetInteger(ticket, ORDER_TIME_DONE));
        ord_data.time_setup = datetime(HistoryOrderGetInteger(ticket, ORDER_TIME_SETUP));
        ord_data.tp = HistoryOrderGetDouble(ticket, ORDER_TP);
        ord_data.type = ENUM_ORDER_TYPE( HistoryOrderGetInteger(ticket, ORDER_TYPE));
        ord_data.type_filling = ENUM_ORDER_TYPE_FILLING( HistoryOrderGetInteger(ticket, ORDER_TYPE_FILLING));
        ord_data.type_time = ENUM_ORDER_TYPE_TIME( HistoryOrderGetInteger(ticket, ORDER_TYPE_TIME));
        ord_data.vol_cur = HistoryOrderGetDouble(ticket, ORDER_VOLUME_CURRENT);
        ord_data.vol_init = HistoryOrderGetDouble(ticket, ORDER_VOLUME_INITIAL);
        ord_data.ext_id = HistoryOrderGetString(ticket, ORDER_EXTERNAL_ID);
        ord_data.reason = ENUM_ORDER_REASON(HistoryOrderGetInteger(ticket, ORDER_REASON));
      }
      else
      {
        ord_data.state = ENUM_ORDER_STATE(HistoryOrderGetInteger(ticket, ORDER_STATE));
        cur_vol = HistoryOrderGetDouble(ticket, ORDER_VOLUME_CURRENT);
        init_vol = HistoryOrderGetDouble(ticket, ORDER_VOLUME_INITIAL);
      }   
//---
      switch(ord_data.state)
      { 
        case ORDER_STATE_CANCELED:
          if(get_data)
          {
            if(ord_data.vol_init == ord_data.vol_cur)
            {
              ord_data.real_state = ORDER_NONE_CANCELED;
            }
            else
            {
              ord_data.real_state = ORDER_NONE_PARTIAL_CANCELED;
            }
          }
          else
          {
            if(init_vol == cur_vol)
            {
              ord_data.real_state = ORDER_NONE_CANCELED;
            }
            else
            {
              ord_data.real_state = ORDER_NONE_PARTIAL_CANCELED;
            }
          }    
        break;
         
        case ORDER_STATE_PARTIAL:
          ord_data.real_state = ORDER_NONE_PARTIAL;
        break;
                                         
        case ORDER_STATE_EXPIRED:
          ord_data.real_state = ORDER_NONE_EXPIRED;
        break;
                                                                              
        case ORDER_STATE_FILLED:
          ord_data.real_state = ORDER_NONE_FILLED;
        break;
                                         
        case ORDER_STATE_REJECTED:
          ord_data.real_state = ORDER_NONE_REJECTED;
        break;  
      }
    }
    else
    if(OrderSelect(ticket))
    {
      if(get_data)
      {
        ord_data.comment = OrderGetString(ORDER_COMMENT);
        ord_data.expiration = datetime( OrderGetInteger(ORDER_TIME_EXPIRATION)); 
        ord_data.magic = OrderGetInteger(ORDER_MAGIC);
        ord_data.pos_id = OrderGetInteger(ORDER_POSITION_ID);
        ord_data.price_cur = OrderGetDouble(ORDER_PRICE_CURRENT);
        ord_data.price_open = OrderGetDouble(ORDER_PRICE_OPEN);
        ord_data.price_stlim = OrderGetDouble(ORDER_PRICE_STOPLIMIT);
        ord_data.sl = OrderGetDouble(ORDER_SL);
        ord_data.state = ENUM_ORDER_STATE(OrderGetInteger(ORDER_STATE));
        ord_data.symbol = OrderGetString(ORDER_SYMBOL);
        ord_data.t_done_msc = datetime(OrderGetInteger(ORDER_TIME_DONE_MSC));
        ord_data.t_set_msc = datetime(OrderGetInteger(ORDER_TIME_SETUP_MSC));
        ord_data.time_done = datetime(OrderGetInteger(ORDER_TIME_DONE));
        ord_data.time_setup = datetime(OrderGetInteger(ORDER_TIME_SETUP));
        ord_data.tp = OrderGetDouble(ORDER_TP);
        ord_data.type = ENUM_ORDER_TYPE( OrderGetInteger(ORDER_TYPE));
        ord_data.type_filling = ENUM_ORDER_TYPE_FILLING(OrderGetInteger(ORDER_TYPE_FILLING));
        ord_data.type_time = ENUM_ORDER_TYPE_TIME(OrderGetInteger(ORDER_TYPE_TIME));
        ord_data.vol_cur = OrderGetDouble(ORDER_VOLUME_CURRENT);
        ord_data.vol_init = OrderGetDouble(ORDER_VOLUME_INITIAL);
        ord_data.ext_id = OrderGetString(ORDER_EXTERNAL_ID);
        ord_data.reason = ENUM_ORDER_REASON(OrderGetInteger(ORDER_REASON));
      }
      else ord_data.state = ENUM_ORDER_STATE(OrderGetInteger(ORDER_STATE));
      switch(ord_data.state)
      { 
        case ORDER_STATE_STARTED:
        case ORDER_STATE_REQUEST_ADD:
        case ORDER_STATE_REQUEST_MODIFY:
        case ORDER_STATE_REQUEST_CANCEL:
          ord_data.real_state = ORDER_BUSY;
        break; 
        case ORDER_STATE_PARTIAL:
          ord_data.real_state = ORDER_EXIST_PARTIAL;
        break;
        case ORDER_STATE_PLACED:
          ord_data.real_state = ORDER_EXIST;
        break;
      }
    }
    else ord_data.error_code = GetLastError();
    if((ord_data.error_code != ERR_SUCCESS) ||
       (ord_data.real_state == ORDER_NOT_SPECIFIED))
    {
      return(SELECT_ERROR);
    }
    else
    {
      switch(ord_data.real_state)
      {
        case ORDER_BUSY:
          return(SELECT_BUSY);
        break;
        case ORDER_EXIST:   
        case ORDER_EXIST_PARTIAL:
          return(SELECT_TRUE);
        break;
        default:   
          return(SELECT_FALSE);
        break;                                             
      }
    }
  } 
  else
  {
    ord_data.error_code = ERR_ZERO_TICKET; 
    return(SELECT_ERROR);
  }
}

Добавлено

#define ERR_ZERO_TICKET -111
   
//
enum ENUM_ORD_STATE
{
  ORD_NO_STATE   = 0,
  ORD_DO_SET     = 1,
  ORD_DO_MODIFY  = 2,
  ORD_WORK       = 3,
  ORD_DO_CANCEL  = 4
};
enum ENUM_ORD_REAL_STATE
{
  ORDER_NOT_SPECIFIED         = 0, //Состояние ордера не определено
  ORDER_NONE_CANCELED         = 1, //Ордера нет, отменён пользователем
  ORDER_NONE_PARTIAL_CANCELED = 2, //Ордера нет, исполнился частично (не был залит вторым объёмом)
  ORDER_NONE_PARTIAL          = 3, //Ордера нет, исполнился частично
  ORDER_NONE_EXPIRED          = 4, //Ордера нет, удалён по сроку
  ORDER_NONE_FILLED           = 5, //Ордера нет, исполнился полностью
  ORDER_NONE_REJECTED         = 6, //Ордера нет, отклонён брокером(биржей)
  ORDER_BUSY                  = 7, //Ордер находится в переходном состоянии
  ORDER_EXIST                 = 8, //Ордер выставлен на биржу, возможны действия над ним
  ORDER_EXIST_PARTIAL         = 9  //Ордер выставлен на биржу, частично исполнился, возможны действия над ним
};
//---
enum ENUM_ORD_SELECT
{
  SELECT_ERROR = 0,
  SELECT_FALSE = 1,
  SELECT_TRUE  = 2,
  SELECT_BUSY  = 3
};
//---
struct ORDER_DATA
{
  int                     error_code;
  ulong                   ticket;
  datetime                time_setup;
  ENUM_ORDER_TYPE         type;
  ENUM_ORDER_STATE        state;
  ENUM_ORD_REAL_STATE     real_state;
  datetime                expiration;
  datetime                time_done;
  long                    t_set_msc;
  long                    t_done_msc; 
  ENUM_ORDER_TYPE_FILLING type_filling;
  ENUM_ORDER_TYPE_TIME    type_time;
  long                    magic;
  ENUM_ORDER_REASON       reason;
  long                    pos_id;
  long                    pos_by_id;
  double                  vol_init;
  double                  vol_cur;
  double                  price_open;
  double                  sl;
  double                  tp;
  double                  price_cur;
  double                  price_stlim;
  string                  symbol;
  string                  comment;
  string                  ext_id;       
};
 
prostotrader:

Дело в том, что ещё в позапрошлом году OnTradeTransaction стало ГАРАНТИРОВАННЫМ! :)

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

вопрос вот по этому:

Длина очереди транзакций составляет 1024 элемента. В случае, если OnTradeTransaction() будет обрабатывать очередную транзакцию слишком долго, старые транзакции в очереди могут быть вытеснены более новыми.

и по очереди событий самого советника. сколько их там может быть и есть ли вытеснение.  (если цитата не про советники)

 
Комбинатор:

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

вопрос вот по этому:

и по очереди событий самого советника. сколько их там может быть и есть ли вытеснение.  (если цитата не про советники)

Как Вы думаете, это долго?

case TRADE_TRANSACTION_ORDER_UPDATE:
      switch(trans.order_state)
      {
        case ORDER_STATE_PLACED:
          if((BuyOrder.ticket > 0) && (trans.order == BuyOrder.ticket))
          {
            switch(BuyOrder.state)
            {
              case ORD_DO_SET:
                BuyOrder.ses_ord_count++;
                BuyOrder.CalcZalog();
                BuyOrder.state = ORD_WORK;
                BuyOrder.mem_time = GetMicrosecondCount();
                if(stop_trading)
                {
                  if(OrderRealSelect(BuyOrder.ticket, order_data, false) == SELECT_TRUE)
                  {
                    BuyOrder.Remove();
                  }  
                }  
              break; 
              case ORD_DO_MODIFY:
                BuyOrder.modify_price = 0;
                BuyOrder.modify_count++;
                BuyOrder.state = ORD_WORK;
                BuyOrder.mem_time = GetMicrosecondCount();
              break;
            }
          }
          else
          if((SellOrder.ticket > 0) && (trans.order == SellOrder.ticket))
          {
            switch(SellOrder.state)
            {
              case ORD_DO_SET:
                SellOrder.ses_ord_count++;   
                SellOrder.CalcZalog();
                SellOrder.state = ORD_WORK;
                SellOrder.mem_time = GetMicrosecondCount();
                if(stop_trading)
                {
                  if(OrderRealSelect(SellOrder.ticket, order_data, false) == SELECT_TRUE)
                  {
                    SellOrder.Remove();
                  }  
                }
              break; 
              case ORD_DO_MODIFY:
                SellOrder.modify_price = 0;
                SellOrder.modify_count++;
                SellOrder.state = ORD_WORK;
                SellOrder.mem_time = GetMicrosecondCount();
              break;        
            }
          }
        break;
        case ORDER_STATE_PARTIAL:
          if((BuyOrder.ticket > 0) && (trans.order == BuyOrder.ticket))  
          {
            switch(BuyOrder.state)
            {
              case ORD_DO_MODIFY:
                BuyOrder.modify_price = 0;
                BuyOrder.modify_count++;
                BuyOrder.state = ORD_WORK;
                BuyOrder.mem_time = GetMicrosecondCount();
              break;
            }
          }
          else
          if((SellOrder.ticket > 0) && (trans.order == SellOrder.ticket))
          {
            switch(SellOrder.state)
            {
              case ORD_DO_MODIFY:
                SellOrder.modify_price = 0;
                SellOrder.modify_count++;
                SellOrder.state = ORD_WORK;
                SellOrder.mem_time = GetMicrosecondCount();
              break;        
            }
          } 
        break;                         
      } 
      EndView();
    break;
 
prostotrader:

Как Вы думаете, это долго?

если в очереди событий советника может быть только одно событие OnTradeTransaction (как у таймера) то скорость вашего кода неважна.

если нет, в зависимости от того синхронно или асинхронно вы работаете с ордерами.
 
Комбинатор:

если в очереди событий советника может быть только одно событие OnTradeTransaction (как у таймера) то скорость вашего кода неважна.

если нет, в зависимости от того синхронно или асинхронно вы работаете с ордерами.

Ассинхронно, но их одновременно может быть не более 30

Кстати, а вот ещё (а с 10-10 до 14-00 почему-то всё отлично работало)

2018.02.28 14:07:59.505 Trades  'xxxxx': cancel order #84736275 buy limit 3.00 LKOH-9.18 at 37312
2018.02.28 14:08:09.071 Trades  'xxxxx': accepted cancel order #84736275 buy limit 3.00 LKOH-9.18 at 37312
2018.02.28 14:08:09.107 Trades  'xxxxx': cancel #84736275 buy limit 3.00 LKOH-9.18 at market done in 9602.694 ms

2018.02.28 14:00:32.653 trader (FEES-3.18,M1)   CheckTradingTime: Сейчас 2018.02.28 14:00, если есть необходимость, можно закрыть терминал.
2018.02.28 14:08:00.522 trader (LKOH-6.18,M1)   ProcessOrders: Билет buy ордера = 84736275 Cост. ордера = ORD_DO_CANCEL
2018.02.28 14:08:01.543 trader (LKOH-6.18,M1)   ProcessOrders: Билет buy ордера = 84736275 Cост. ордера = ORD_DO_CANCEL
2018.02.28 14:08:02.553 trader (LKOH-6.18,M1)   ProcessOrders: Билет buy ордера = 84736275 Cост. ордера = ORD_DO_CANCEL
2018.02.28 14:08:03.565 trader (LKOH-6.18,M1)   ProcessOrders: Билет buy ордера = 84736275 Cост. ордера = ORD_DO_CANCEL
2018.02.28 14:08:04.593 trader (LKOH-6.18,M1)   ProcessOrders: Билет buy ордера = 84736275 Cост. ордера = ORD_DO_CANCEL
2018.02.28 14:08:05.625 trader (LKOH-6.18,M1)   ProcessOrders: Билет buy ордера = 84736275 Cост. ордера = ORD_DO_CANCEL
2018.02.28 14:08:06.654 trader (LKOH-6.18,M1)   ProcessOrders: Билет buy ордера = 84736275 Cост. ордера = ORD_DO_CANCEL
2018.02.28 14:08:07.667 trader (LKOH-6.18,M1)   ProcessOrders: Билет buy ордера = 84736275 Cост. ордера = ORD_DO_CANCEL
2018.02.28 14:08:08.680 trader (LKOH-6.18,M1)   ProcessOrders: Билет buy ордера = 84736275 Cост. ордера = ORD_DO_CANCEL

Но здесь дождались ответа сервера :)

 

А вот Вам не кажется странным, что последний раз я писал здесь

prostotrader 2017.04.17 19:10 #932   EN
Билд 1571, реал, Открывашка

Непонятные задержки продолжаются (execution in 2106.116 ms) ...

Это апрель 2017 г., вышел новый билд 1571

И, сейчас 1755, только тогда было 2 секунды, а сейчас....

Чего же я тогда молчал столько (а к советникам даже не прикосался ) аж целых 9 месяцев!

Добавлено

Кол-во инструментов на ФОРТС не изменилось, Открывашка добавила 5 новых серверов МТ5,

объёмы торгов уменьшились, а проблема не только осталась, но и "выросла".

 

Да и сам терминал не отправит более 60 ордеров в секунду

2018.02.28 15:30:15.089 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 60 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 61 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 62 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 63 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 64 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 65 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 66 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 67 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 68 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 69 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 70 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 71 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 72 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 73 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 74 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 75 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 76 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 77 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 78 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 79 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 80 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 81 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 82 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 83 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 84 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 85 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 86 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 87 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 88 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 89 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 90 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 91 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 92 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 93 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 94 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 95 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 96 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 97 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 98 Причина: 10024
2018.02.28 15:30:15.090 DelayTest (RTS-3.18,M1) PlaceOrder: Ордер не отправлен! Порядковый номер: 99 Причина: 10024
2018.02.28 15:30:15.111 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495897
2018.02.28 15:30:15.111 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495898
2018.02.28 15:30:15.111 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495899
2018.02.28 15:30:15.111 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495900
2018.02.28 15:30:15.111 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495901
2018.02.28 15:30:15.111 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495902
2018.02.28 15:30:15.111 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495903
2018.02.28 15:30:15.111 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495904
2018.02.28 15:30:15.111 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495905
2018.02.28 15:30:15.113 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495906
2018.02.28 15:30:15.113 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495907
2018.02.28 15:30:15.113 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495908
2018.02.28 15:30:15.114 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495909
2018.02.28 15:30:15.114 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495910
2018.02.28 15:30:15.114 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495911
2018.02.28 15:30:15.114 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495912
2018.02.28 15:30:15.120 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495913
2018.02.28 15:30:15.120 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495914
2018.02.28 15:30:15.121 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495915
2018.02.28 15:30:15.121 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495916
2018.02.28 15:30:15.121 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495917
2018.02.28 15:30:15.121 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495918
2018.02.28 15:30:15.121 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495919
2018.02.28 15:30:15.121 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495920
2018.02.28 15:30:15.121 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495921
2018.02.28 15:30:15.121 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495922
2018.02.28 15:30:15.126 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495923
2018.02.28 15:30:15.126 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495924
2018.02.28 15:30:15.126 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495925
2018.02.28 15:30:15.126 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495926
2018.02.28 15:30:15.126 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495927
2018.02.28 15:30:15.127 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495928
2018.02.28 15:30:15.127 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495929
2018.02.28 15:30:15.127 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495930
2018.02.28 15:30:15.127 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495931
2018.02.28 15:30:15.133 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495932
2018.02.28 15:30:15.133 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495933
2018.02.28 15:30:15.133 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495934
2018.02.28 15:30:15.133 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495935
2018.02.28 15:30:15.133 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495936
2018.02.28 15:30:15.133 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495937
2018.02.28 15:30:15.133 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер установлен. Билет = 73495938
2018.02.28 15:30:15.144 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495897
2018.02.28 15:30:15.144 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495898
2018.02.28 15:30:15.144 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495899
2018.02.28 15:30:15.144 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495900
2018.02.28 15:30:15.144 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495902
2018.02.28 15:30:15.144 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495903
2018.02.28 15:30:15.144 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495901
2018.02.28 15:30:15.146 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495904
2018.02.28 15:30:15.146 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495905
2018.02.28 15:30:15.146 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495906
2018.02.28 15:30:15.146 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495907
2018.02.28 15:30:15.146 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495908
2018.02.28 15:30:15.146 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495909
2018.02.28 15:30:15.146 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495910
2018.02.28 15:30:15.146 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495911
2018.02.28 15:30:15.147 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495912
2018.02.28 15:30:15.151 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495913
2018.02.28 15:30:15.151 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495914
2018.02.28 15:30:15.151 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495915
2018.02.28 15:30:15.151 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495916
2018.02.28 15:30:15.151 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495917
2018.02.28 15:30:15.151 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495918
2018.02.28 15:30:15.153 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495919
2018.02.28 15:30:15.153 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495920
2018.02.28 15:30:15.153 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495921
2018.02.28 15:30:15.153 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495922
2018.02.28 15:30:15.159 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495923
2018.02.28 15:30:15.159 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495924
2018.02.28 15:30:15.160 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495925
2018.02.28 15:30:15.160 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495926
2018.02.28 15:30:15.160 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495927
2018.02.28 15:30:15.160 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495928
2018.02.28 15:30:15.160 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495929
2018.02.28 15:30:15.160 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495930
2018.02.28 15:30:15.160 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495931
2018.02.28 15:30:15.162 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495932
2018.02.28 15:30:15.164 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495933
2018.02.28 15:30:15.164 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495934
2018.02.28 15:30:15.164 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495935
2018.02.28 15:30:15.164 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495936
2018.02.28 15:30:15.167 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495937
2018.02.28 15:30:15.167 DelayTest (RTS-3.18,M1) OnTradeTransaction: Ордер удалён. Билет = 73495938

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