FORTS. Fragen der Durchsetzung - Seite 100

 

Der Code selbst

//+------------------------------------------------------------------+
//|                                                    DelayTest.mq5 |
//|                                      Copyright 2017 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017 prostotrader"
#property link      "https://www.mql5.com"
#property version   "1.00"
//
#define  max_orders 100  
//
struct MY_ORDERS
  {
   uint              req_id[max_orders];
   ulong             ticket[max_orders];
   ulong             magic[max_orders];
  };
MY_ORDERS my_orders;
ulong st_magic=9988776655;
//+------------------------------------------------------------------+
//| Expert remove order function                                     |
//+------------------------------------------------------------------+
void RemoveOrder(const ulong a_ticket,const int idx)
  {
   my_orders.req_id[idx]=0;
   MqlTradeRequest request = {0};
   MqlTradeResult  result  = {0};
   request.action= TRADE_ACTION_REMOVE;
   request.order = a_ticket;
   if(OrderSendAsync(request,result))
     {
      my_orders.req_id[idx]=result.request_id;
     }
   else
     {
      Print(__FUNCTION__,": Ордер не отправлен! Билет = ",a_ticket," Причина: ",result.retcode);
     }
  }
//+------------------------------------------------------------------+
//| Expert place order function                                      |
//+------------------------------------------------------------------+
void PlaceOrder(double price,int idx,ulong magic)
  {
   MqlTradeRequest request = {0};
   MqlTradeResult  result  = {0};
   my_orders.ticket[idx] = 0;
   my_orders.req_id[idx] = 0;
   my_orders.magic[idx]=magic;
   request.action = TRADE_ACTION_PENDING;
   request.magic  = magic;
   request.symbol = Symbol();
   request.volume = 1;
   request.price  = price;
   request.type=ORDER_TYPE_SELL_LIMIT;
   request.comment="Отложенный ордер...";
   request.type_filling=ORDER_FILLING_RETURN;
   request.type_time=ORDER_TIME_DAY;
   if(OrderSendAsync(request,result))
     {
      my_orders.req_id[idx]=result.request_id;
      magic++;
     }
   else
     {
      Print(__FUNCTION__,": Ордер не отправлен! Порядковый номер: ", idx, " Причина: ",result.retcode);
     }
  }
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   double step=SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_SIZE);
   double max_price=SymbolInfoDouble(Symbol(),SYMBOL_SESSION_PRICE_LIMIT_MAX);
   for(int i=0; i<max_orders;i++)
     {
      PlaceOrder(max_price,i,st_magic);
      max_price-=step;
     }
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   for(int i=0; i<max_orders;i++)
     {
      if(my_orders.ticket[i]>0)
        {
         RemoveOrder(my_orders.ticket[i],i);
        }
     }
  }
//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//    Print("Trans type: ", EnumToString(trans.type), "; Order satte: ", EnumToString(trans.order_state));
   switch(trans.type)
     {
      case TRADE_TRANSACTION_REQUEST:
         for(int i=0; i<max_orders;i++)
           {
            if((my_orders.req_id[i]==result.request_id) && (my_orders.req_id[i]>0))
              {
               my_orders.ticket[i]=result.order;
               break;
              }
           }
         break;
      case TRADE_TRANSACTION_HISTORY_ADD:
         for(int i=0; i<max_orders;i++)
           {
            if((my_orders.ticket[i]==trans.order) && (my_orders.ticket[i]>0))
              {
               my_orders.ticket[i]=0;
               Print(__FUNCTION__,": Ордер удалён. Билет = ",trans.order);
               break;
              }
           }
         break;
      case TRADE_TRANSACTION_ORDER_UPDATE:
         switch(trans.order_state)
           {
            case ORDER_STATE_PLACED:
               for(int i=0; i<max_orders;i++)
                 {
                  if((my_orders.ticket[i]==trans.order) && (my_orders.ticket[i]>0))
                    {
                     RemoveOrder(my_orders.ticket[i],i);
                     Print(__FUNCTION__,": Ордер установлен. Билет = ",trans.order);
                     break;
                    }
                 }
               break;
           }
         break;
     }
  }
//+------------------------------------------------------------------+
 
prostotrader:

Ich habe 4000 Transaktionen pro Tag, jede Transaktion mindestens 5-6 mal "zuckt" OnTradeTransaction

Wer wird sich mit diesen "Portmanteaus" auskennen :) Schließlich benötigen sie die Logs des Terminals und die Logs des MT5-Servers.

Wenn die Protokolle Gigabytes groß sind, werde ich sie auch analysieren. Ich benötige die Protokolle des Servers nicht.


Ich empfehle jedem, der behauptet, dass bei OnTradeTransaction etwas nicht klappt, diesen Expert Advisor zu nutzen

// Советник записывает подробно каждый OnTradeTransaction в файл.

// Время последнего тика символа
long GetSymbolTime( const string Symb )
{
  MqlTick Tick;
  
  return(SymbolInfoTick(Symb, Tick) ? Tick.time_msc : 0);
}

// Время последнего тика Обзора рынка
long GetMarketWatchTime( void )
{
  long Res = 0;
  
  for (int i = SymbolsTotal(true) - 1; i >= 0; i--)
  {
    const long TmpTime = GetSymbolTime(SymbolName(i, true));
    
    if (TmpTime > Res)
      Res = TmpTime;
  }
  
  return(Res);
}

// Текущее время на торговом сервере без учета пинга
long GetCurrenTime( void )
{
  static ulong StartTime = GetMicrosecondCount();
  static long PrevTime = 0;
  
  const long TmpTime = GetMarketWatchTime();
  
  if (TmpTime > PrevTime)
  {
    PrevTime = TmpTime;
    
    StartTime = GetMicrosecondCount();
  }
  
  return(PrevTime + (long)((GetMicrosecondCount() - StartTime) / 1000));
}

string TimeToString( const long Value )
{
  return((string)(datetime)(Value / 1000) + "." + (string)IntegerToString(Value % 1000, 3, '0'));
}

class FILE
{
public:
  const string Name;
  const int handle;

#define _H(A) if (this.handle != INVALID_HANDLE) A
  
  FILE( const string FileName ) : Name(FileName), handle(FileOpen(this.Name, FILE_READ | FILE_WRITE | FILE_IS_TEXT))
  {
    _H(FileSeek(this.handle, 0, SEEK_END));
  }
  
  ~FILE() { _H(FileClose(this.handle)); }
  
  uint Write( const string Str ) const
  {
    return(FileWrite(this.handle, Str));
  }  
};

void OnTradeTransaction ( const MqlTradeTransaction &Trans, const MqlTradeRequest &Request, const MqlTradeResult &Result )
{ 
  static FILE File(__FUNCTION__ + ".txt");
  
  File.Write(TimeToString(GetCurrenTime()) + "\n" + ToString(Trans) + ToString(Request) + ToString(Result));
}

#define  TOSTRING(A)  #A + " = " + (string)(A) + "\n"
#define  TOSTRING2(A) #A + " = " + EnumToString(A) + " (" + (string)(A) + ")\n"

string ToString( const MqlTradeTransaction &Trans )
{
  return(TOSTRING(Trans.deal) + TOSTRING(Trans.order) + TOSTRING(Trans.symbol) +
         TOSTRING2(Trans.type) + TOSTRING2(Trans.order_type) + TOSTRING2(Trans.order_state) +
         TOSTRING2(Trans.deal_type) + TOSTRING2(Trans.time_type) +
         TOSTRING(Trans.time_expiration) + TOSTRING(Trans.price) + TOSTRING(Trans.price_trigger) + 
         TOSTRING(Trans.price_sl) + TOSTRING(Trans.price_tp) + TOSTRING(Trans.volume) + 
         TOSTRING(Trans.position) + TOSTRING(Trans.position_by));
}

string ToString( const MqlTradeRequest &Request )
{
  return(TOSTRING2(Request.action) + TOSTRING(Request.magic) + TOSTRING(Request.order) +
         TOSTRING(Request.symbol) + TOSTRING(Request.volume) + TOSTRING(Request.price) + 
         TOSTRING(Request.stoplimit) + TOSTRING(Request.sl) +  TOSTRING(Request.tp) + 
         TOSTRING(Request.deviation) + TOSTRING2(Request.type) + TOSTRING2(Request.type_filling) +
         TOSTRING2(Request.type_time) + TOSTRING(Request.expiration) + TOSTRING(Request.comment) +
         TOSTRING(Request.position) + TOSTRING(Request.position_by));
}

string ToString( const MqlTradeResult &Result )
{
  return(TOSTRING(Result.retcode) + TOSTRING(Result.deal) + TOSTRING(Result.order) +
         TOSTRING(Result.volume) + TOSTRING(Result.price) + TOSTRING(Result.bid) +  
         TOSTRING(Result.ask) + TOSTRING(Result.comment) + TOSTRING(Result.request_id) +  
         TOSTRING(Result.retcode_external));
}


Das Ergebnis sieht wie folgt aus

2018.02.28 14:28:27.907
Trans.deal = 0
Trans.order = 213465763
Trans.symbol = EURUSD
Trans.type = TRADE_TRANSACTION_ORDER_ADD (0)
Trans.order_type = ORDER_TYPE_SELL (1)
Trans.order_state = ORDER_STATE_STARTED (0)
Trans.deal_type = DEAL_TYPE_BUY (0)
Trans.time_type = ORDER_TIME_GTC (0)
Trans.time_expiration = 1970.01.01 00:00:00
Trans.price = 1.22178
Trans.price_trigger = 0.0
Trans.price_sl = 0.0
Trans.price_tp = 0.0
Trans.volume = 1.0
Trans.position = 0
Trans.position_by = 0
Request.action = ENUM_TRADE_REQUEST_ACTIONS::0 (0)
Request.magic = 0
Request.order = 0
Request.symbol = 
Request.volume = 0.0
Request.price = 0.0
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 0
Request.type = ORDER_TYPE_BUY (0)
Request.type_filling = ORDER_FILLING_FOK (0)
Request.type_time = ORDER_TIME_GTC (0)
Request.expiration = 1970.01.01 00:00:00
Request.comment = 
Request.position = 0
Request.position_by = 0
Result.retcode = 0
Result.deal = 0
Result.order = 0
Result.volume = 0.0
Result.price = 0.0
Result.bid = 0.0
Result.ask = 0.0
Result.comment = 
Result.request_id = 0
Result.retcode_external = 0

2018.02.28 14:28:27.913
Trans.deal = 196986814
Trans.order = 213465763
Trans.symbol = EURUSD
Trans.type = TRADE_TRANSACTION_DEAL_ADD (6)
....

Wenn es nicht einmal ein solches Protokoll gibt, dann ist jede Behauptung in Bezug auf OnTradeTransaction bloßes Gerede.


ZZY Das Timing ist in diesem Fall nicht perfekt, aber ich wollte eine Lösung, die aus einem anderen Kontext herausgerissen wurde, nicht verkomplizieren.

Dateien:
 
fxsaber:

Wenn die Protokolle Gigabytes groß sind, werde ich mich auch darum kümmern. Serverprotokolle werden nicht benötigt.


Ich empfehle jedem, der behauptet, dass bei OnTradeTransaction etwas nicht klappt, diesen Expert Advisor zu nutzen


Das Ergebnis sieht wie folgt aus

Wenn es nicht einmal ein solches Protokoll gibt, dann ist jede Behauptung in Bezug auf OnTradeTransaction bloßes Gerede.


Das Timing ist in diesem Fall nicht perfekt, aber ich habe keine komplizierte Lösung aus einem anderen Kontext herausgenommen.

Warum einen solchen "Gemüsegarten" anlegen?

Das wird ausreichen:

void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
    Print("Trans type: ", EnumToString(trans.type), "; Order satte: ", EnumToString(trans.order_state), " Order ticket: ", trans.order);
}
 
prostotrader:

Warum so eine große Sache daraus machen?

Das wird ausreichen:

Nicht genug.

 

Öffnen mit der Hand, die Bremsen werden bestätigt

2018.03.14 10:01:29.516 Trades  '289': exchange sell 10.00 Si-3.18 at market
2018.03.14 10:01:40.680 Trades  '289': accepted exchange sell 10.00 Si-3.18 at market
2018.03.14 10:01:40.692 Trades  '289': exchange sell 10.00 Si-3.18 at market placed for execution
2018.03.14 10:01:40.781 Trades  '289': order #85223736 sell 10.00 / 10.00 Si-3.18 at market done in 11265.537 ms
2018.03.14 10:01:40.782 Trades  '289': deal #47039430 sell 3.00 Si-3.18 at 57027 done (based on order #85223736)
2018.03.14 10:01:40.786 Trades  '289': deal #47039431 sell 2.00 Si-3.18 at 57026 done (based on order #85223736)
2018.03.14 10:01:40.787 Trades  '289': deal #47039432 sell 3.00 Si-3.18 at 57026 done (based on order #85223736)
2018.03.14 10:01:40.790 Trades  '289': deal #47039433 sell 1.00 Si-3.18 at 57026 done (based on order #85223736)
2018.03.14 10:01:40.795 Trades  '289': deal #47039434 sell 1.00 Si-3.18 at 57025 done (based on order #85223736)

Und vor allem: Wer wird für diesen Skandal bezahlen?

 
Aleksey Vyazmikin:

Öffnen mit der Hand, die Bremsen werden bestätigt

Und vor allem: Wer wird für diesen Skandal bezahlen?

Schreiben Sie an den Makler und fügen Sie dieses Protokoll bei.

Wir bezahlen den Entwickler nicht, also ist es schwer, ihn zu fragen, und in der Lizenzvereinbarung

es ist (wie jede Software) so geschrieben, dass niemand für irgendetwas verantwortlich ist.

 
prostotrader:

Schreiben Sie an Ihren Makler und fügen Sie dieses Protokoll bei.

Wir bezahlen den Entwickler nicht, also ist es schwer, ihn zu fragen, und die Lizenzvereinbarung

es ist (wie jede Software) so geschrieben, dass niemand für irgendetwas verantwortlich ist.

Es war eine rhetorische Frage.

 
Aleksey Vyazmikin:

Es war eine rhetorische Frage.

:)

Schreiben Sie aber trotzdem an Ihren Makler.

 

Ich habe die Protokollierung des Expert Advisors ein wenig geändert, und das ist das Ergebnis:

Die Funktion CheckOrders() wird ausgelöst, wenn innerhalb von 1-1,5 Sekunden keine Antwort vom Server eingeht.

Wenn kein Bestellschein vorhanden ist, wird eine Meldung angezeigt

CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается...

Wenn es ein Ticket gibt, wird die Funktion ProcessOrders() aufgerufen, um zu prüfen, was mit der Bestellung passiert ist

Hier ist das Ergebnis:

2018.03.19 10:00:02.248 Trades  'xxxxx': buy limit 2.00 TRNF-9.18 at 168831
2018.03.19 10:00:02.254 Trades  'xxxxx': accepted buy limit 2.00 TRNF-9.18 at 168831
2018.03.19 10:00:02.257 Trades  'xxxxx': buy limit 2.00 TRNF-9.18 at 168831 placed for execution in 8.978 ms
2018.03.19 10:00:06.380 Trades  'xxxxx': modify order #85508034 buy limit 2.00 TRNF-9.18 at 168831 sl: 0 tp: 0 -> 170108, sl: 0 tp: 0
2018.03.19 10:00:08.318 Trades  'xxxxx': accepted modify order #85508034 buy limit 2.00 TRNF-9.18 at 168831 sl: 0 tp: 0 -> 170108, sl: 0 tp: 0
2018.03.19 10:00:08.335 Trades  'xxxxx': modify order #85508034 buy limit 2.00 TRNF-9.18 at 168831 sl: 0 tp: 0 -> 170108, sl: 0 tp: 0 placed for execution in 1955.038 ms
2018.03.19 10:00:08.364 Trades  'xxxxx': modify order #85508034 buy limit 2.00 TRNF-9.18 at 170108 sl: 0 tp: 0 -> 170110, sl: 0 tp: 0
2018.03.19 10:00:08.364 Trades  'xxxxx': modify #85508034 buy limit 2.00 TRNF-9.18 -> price: 170110, sl: 0, tp: 0) done in 0.390 ms
2018.03.19 10:01:00.575 Trades  'xxxxx': buy limit 2.00 TRNF-9.18 at 170112
2018.03.19 10:01:01.581 trader (TRNF-6.18,M1)   CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается...
2018.03.19 10:01:02.591 trader (TRNF-6.18,M1)   CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается...
2018.03.19 10:01:03.606 trader (TRNF-6.18,M1)   CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается...
2018.03.19 10:01:04.627 trader (TRNF-6.18,M1)   CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается...
2018.03.19 10:01:05.633 trader (TRNF-6.18,M1)   CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается...
2018.03.19 10:01:06.647 trader (TRNF-6.18,M1)   CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается...
2018.03.19 10:01:07.662 trader (TRNF-6.18,M1)   CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается...
2018.03.19 10:01:08.677 trader (TRNF-6.18,M1)   CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается...
2018.03.19 10:01:09.689 trader (TRNF-6.18,M1)   CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается...
2018.03.19 10:01:10.708 trader (TRNF-6.18,M1)   CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается...
2018.03.19 10:01:11.718 trader (TRNF-6.18,M1)   CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается...
2018.03.19 10:01:12.732 trader (TRNF-6.18,M1)   CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается...
2018.03.19 10:01:13.764 trader (TRNF-6.18,M1)   CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается...
2018.03.19 10:01:15.273 trader (TRNF-6.18,M1)   CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается...
2018.03.19 10:01:16.287 trader (TRNF-6.18,M1)   CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается...
2018.03.19 10:01:17.301 trader (TRNF-6.18,M1)   CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается...
2018.03.19 10:01:18.319 trader (TRNF-6.18,M1)   CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается...
2018.03.19 10:01:19.332 trader (TRNF-6.18,M1)   CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается...
2018.03.19 10:01:20.343 trader (TRNF-6.18,M1)   CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается...
2018.03.19 10:01:21.357 trader (TRNF-6.18,M1)   CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается...
2018.03.19 10:01:22.371 trader (TRNF-6.18,M1)   CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается...
2018.03.19 10:01:23.388 trader (TRNF-6.18,M1)   CheckOrders: Не получен билет. Задержка ответа сервера. Ожидание продолжается...
2018.03.19 10:01:24.263 Trades  'xxxxx': accepted buy limit 2.00 TRNF-9.18 at 170112
2018.03.19 10:01:24.399 trader (TRNF-6.18,M1)   ProcessOrders: Состояние Buy ордера не определено. Билет = 85508330
2018.03.19 10:01:25.413 trader (TRNF-6.18,M1)   ProcessOrders: Состояние Buy ордера не определено. Билет = 85508330
2018.03.19 10:01:25.685 Trades  'xxxxx': buy limit 2.00 TRNF-9.18 at 170112 placed for execution in 25114.794 ms
2018.03.19 10:01:26.427 trader (TRNF-6.18,M1)   ProcessOrders: Состояние Buy ордера не определено. Билет = 85508330
2018.03.19 10:01:27.444 trader (TRNF-6.18,M1)   ProcessOrders: Состояние Buy ордера не определено. Билет = 85508330
2018.03.19 10:01:28.456 trader (TRNF-6.18,M1)   ProcessOrders: Состояние Buy ордера не определено. Билет = 85508330
2018.03.19 10:01:29.475 trader (TRNF-6.18,M1)   ProcessOrders: Состояние Buy ордера не определено. Билет = 85508330
2018.03.19 10:01:30.484 trader (TRNF-6.18,M1)   ProcessOrders: Состояние Buy ордера не определено. Билет = 85508330
2018.03.19 10:01:31.501 trader (TRNF-6.18,M1)   ProcessOrders: Состояние Buy ордера не определено. Билет = 85508330
2018.03.19 10:01:32.515 trader (TRNF-6.18,M1)   ProcessOrders: Состояние Buy ордера не определено. Билет = 85508330
2018.03.19 10:01:33.540 trader (TRNF-6.18,M1)   ProcessOrders: Состояние Buy ордера не определено. Билет = 85508330

Die Verzögerungen sind höchstwahrscheinlich nicht auf den Makler zurückzuführen.

 

Wenn ein Auftrag asynchron gesendet wird, haben wir:

Das Terminal sendet den Auftrag (1)

2018.03.19 10:01:00.575 Trades  'xxxxx': buy limit 2.00 TRNF-9.18 at 170112

Der Server hat die Bestellung geprüft und ihr ein Ticket zugewiesen (2)

2018.03.19 10:01:24.263 Trades  'xxxxx': accepted buy limit 2.00 TRNF-9.18 at 170112

Der Server sendet den Auftrag an die Börse (3)

2018.03.19 10:01:25.685 Trades  'xxxxx': buy limit 2.00 TRNF-9.18 at 170112 placed for execution in 25114.794 ms

Die Antwort des Servers, dass der Auftrag von der Börse angenommen wurde, wird nicht protokolliert.

Aber nach dem folgenden Eintrag zu urteilen, kam die Antwort des Servers über den Austausch der Bestellung (4)

2018.03.19 10:01:39.952 Trades  'xxxxx': modify order #85508330 buy limit 2.00 TRNF-9.18 at 170112 sl: 0 tp: 0 -> 170114, sl: 0 tp: 0


Nach der Tatsache zu urteilen, dass von der Zuweisung des Auftragstickets bis zur Übermittlung an die Börse 1,4 Sekunden vergehen.

genau auf dem Server selbst passiert, gehe ich davon aus, dass die Verzögerungen auf dem Server selbst log(2) - log(3) auftreten.


Nun, das ist sehr "nett".

GP      0       19:17:29.663    Trades  'xxxxx': cancel #85167146 buy limit 3.00 UCHF-9.18 at market done in 132608.665 ms
HR      0       19:17:29.678    Trades  'xxxxx': cancel #85167164 buy limit 3.00 AUDU-9.18 at market done in 132623.761 ms
HK      0       19:17:29.698    Trades  'xxxxx': cancel #85167165 sell limit 3.00 AUDU-9.18 at market done in 132642.978 ms
OE      0       19:17:29.721    Trades  'xxxxx': cancel #85167070 buy limit 1.00 GOLD-12.18 at market done in 132653.264 ms
NG      0       19:17:29.741    Trades  'xxxxx': cancel #85167172 sell limit 1.00 ALRS-9.18 at market done in 132686.437 ms
MR      0       19:17:29.755    Trades  'xxxxx': cancel #85167177 sell limit 2.00 NLMK-9.18 at market done in 132700.889 ms
HP      0       19:17:29.783    Trades  'xxxxx': cancel #85167183 buy limit 1.00 PLT-12.18 at market done in 132727.785 ms
CO      0       19:17:29.801    Trades  'xxxxx': cancel #85167254 sell limit 1.00 GMKR-9.18 at market done in 132746.755 ms
FN      0       19:17:29.819    Trades  'xxxxx': cancel #85167689 sell limit 2.00 SBRF-12.18 at market done in 132722.855 ms
QJ      0       19:17:29.839    Trades  'xxxxx': cancel #85167774 sell limit 3.00 UCHF-9.18 at market done in 132783.830 ms
GH      0       19:17:29.855    Trades  'xxxxx': cancel #85167936 sell limit 2.00 MOEX-9.18 at market done in 132800.500 ms
EH      0       19:17:29.870    Trades  'xxxxx': cancel #85167942 buy limit 1.00 SNGR-9.18 at market done in 132815.113 ms
IR      0       19:17:29.889    Trades  'xxxxx': cancel #85167943 sell limit 2.00 SNGR-9.18 at market done in 132834.156 ms
KN      0       19:17:29.916    Trades  'xxxxx': cancel #85168487 buy limit 2.00 CY-9.18 at market done in 132860.907 ms
JP      0       19:17:29.935    Trades  'xxxxx': cancel #85168192 buy limit 3.00 UCAD-9.18 at market done in 132944.703 ms
KL      0       19:17:29.950    Trades  'xxxxx': cancel #85170324 sell limit 1.00 VTBR-9.18 at market done in 132895.471 ms
FJ      0       19:17:29.965    Trades  'xxxxx': cancel #85170435 sell limit 3.00 UJPY-9.18 at market done in 132910.178 ms
RE      0       19:17:29.979    Trades  'xxxxx': cancel #85167688 buy limit 1.00 SBRF-12.18 at market done in 132883.188 ms
KD      0       19:17:29.999    Trades  'xxxxx': cancel #85170988 sell limit 1.00 CHMF-9.18 at market done in 132943.997 ms
PN      0       19:17:30.021    Trades  'xxxxx': cancel #85171201 buy limit 1.00 ED-12.18 at market done in 133030.275 ms
DN      0       19:17:30.044    Trades  'xxxxx': cancel #85171303 buy limit 1.00 UJPY-9.18 at market done in 132989.636 ms
Grund der Beschwerde: