Акцептирование SL/TP-ордеров - страница 5

 
Renat Fatkhullin:

Вы "забыли" совсем малую деталь - вы проверяли 58 тысяч ордеров и нашли только один случай выброса на 300 мс. А на этом (1 из 58 000) надо было явно акцентироваться при таких проверках.

Да, я не собрал стату более объективно.

В любом случае будем дальше разбираться, хотя одиночные выбросы бывают всегда в любой системе.

На RannForex смотрел подробнейше, т.к. боевой. Там абсолютно на каждом ордере 2-3 мс, вне зависимости от символа.

Ну и стату по самим тикам собирал чисто в другом месте, где терминал стоял прямо на той же машине, где сервер.

 
2021.02.05 17:00:47.044 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.044 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.044 CheckOrders (EURUSD,D1) Start CheckOrders, inFrom = 2021.01.01 00:00:00, inTicket = 0
2021.02.05 17:00:47.044 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.045 CheckOrders (EURUSD,D1) Last Tick 2021.02.05 15:34:01.326 1.08224 1.08233
2021.02.05 17:00:47.045 CheckOrders (EURUSD,D1) LatTick Length = 5 ms.
2021.02.05 17:00:47.045 CheckOrders (EURUSD,D1) Accepted Tick 2021.02.05 15:34:01.326 1.08224 1.08233
2021.02.05 17:00:47.045 CheckOrders (EURUSD,D1) Accepted Length = 5 ms.
2021.02.05 17:00:47.045 CheckOrders (EURUSD,D1) Order 123333339 ORDER_TYPE_BUY EURCHF 2021.02.05 15:34:01.331 1.08233 ORDER_REASON_TP ORDER_STATE_FILLED 2021.02.05 15:34:01.373, Position 123263232 created 2021.02.05 13:10:32.521, StopLevel = 0
2021.02.05 17:00:47.045 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.046 CheckOrders (EURUSD,D1) Last Tick 2021.02.04 21:44:22.384 1.08132 1.08136
2021.02.05 17:00:47.046 CheckOrders (EURUSD,D1) LatTick Length = 6 ms.
2021.02.05 17:00:47.046 CheckOrders (EURUSD,D1) Accepted Tick 2021.02.04 21:44:22.384 1.08132 1.08136
2021.02.05 17:00:47.046 CheckOrders (EURUSD,D1) Accepted Length = 6 ms.
2021.02.05 17:00:47.046 CheckOrders (EURUSD,D1) Order 123050627 ORDER_TYPE_SELL EURCHF 2021.02.04 21:44:22.390 1.08132 ORDER_REASON_TP ORDER_STATE_FILLED 2021.02.04 21:44:22.431, Position 123024385 created 2021.02.04 20:52:15.142, StopLevel = 0
2021.02.05 17:00:47.046 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.046 CheckOrders (EURUSD,D1) Last Tick 2021.02.04 17:22:02.377 1.08189 1.08189
2021.02.05 17:00:47.046 CheckOrders (EURUSD,D1) LatTick Length = 7 ms.
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Accepted Tick 2021.02.04 17:22:02.377 1.08189 1.08189
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Accepted Length = 7 ms.
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Order 122938233 ORDER_TYPE_SELL EURCHF 2021.02.04 17:22:02.384 1.08189 ORDER_REASON_TP ORDER_STATE_FILLED 2021.02.04 17:22:02.442, Position 122928144 created 2021.02.04 17:16:43.333, StopLevel = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Last Tick 2021.02.04 17:16:42.786 1.08168 1.08168
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) LatTick Length = 51 ms.
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Accepted Tick 2021.02.04 17:16:42.786 1.08168 1.08168
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Accepted Length = 51 ms.
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Order 122933325 ORDER_TYPE_BUY EURCHF 2021.02.04 17:16:42.837 1.08171 ORDER_REASON_TP ORDER_STATE_FILLED 2021.02.04 17:16:43.335, Position 122905671 created 2021.02.04 17:09:03.783, StopLevel = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Alert: bool GetAcceptedTick(const ulong,MqlTick&,const bool): CopyTicksRange(NZDCAD, 2021.02.03 11:38:04.424, 2021.02.03 12:38:04.424) = 0, _LastError = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Order 122248978 ORDER_TYPE_SELL NZDCAD 2021.02.03 12:38:04.424 0.92108 ORDER_REASON_TP ORDER_STATE_FILLED 2021.02.03 12:38:04.469, Position 122078077 created 2021.02.03 08:49:03.466, StopLevel = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Alert: bool GetAcceptedTick(const ulong,MqlTick&,const bool): CopyTicksRange(NZDCAD, 2021.02.03 11:37:56.905, 2021.02.03 12:37:56.905) = 0, _LastError = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Order 122248934 ORDER_TYPE_SELL NZDCAD 2021.02.03 12:37:56.905 0.92104 ORDER_REASON_TP ORDER_STATE_FILLED 2021.02.03 12:37:56.953, Position 122077808 created 2021.02.03 08:47:33.346, StopLevel = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Alert: bool GetAcceptedTick(const ulong,MqlTick&,const bool): CopyTicksRange(NZDCAD, 2021.02.03 07:47:33.344, 2021.02.03 09:24:40.310) = 0, _LastError = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Order 122149815 ORDER_TYPE_SELL NZDCAD 2021.02.03 09:24:40.310 0.92254 ORDER_REASON_TP ORDER_STATE_FILLED 2021.02.03 09:24:40.355, Position 122077761 created 2021.02.03 08:47:33.344, StopLevel = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Alert: bool GetAcceptedTick(const ulong,MqlTick&,const bool): CopyTicksRange(NZDCAD, 2021.02.03 07:46:05.065, 2021.02.03 09:24:38.641) = 0, _LastError = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Order 122149805 ORDER_TYPE_SELL NZDCAD 2021.02.03 09:24:38.641 0.92252 ORDER_REASON_TP ORDER_STATE_FILLED 2021.02.03 09:24:38.680, Position 122077760 created 2021.02.03 08:46:05.065, StopLevel = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Alert: bool GetAcceptedTick(const ulong,MqlTick&,const bool): CopyTicksRange(NZDCAD, 2021.02.03 07:49:03.438, 2021.02.03 08:49:03.438) = 0, _LastError = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Order 122139945 ORDER_TYPE_BUY NZDCAD 2021.02.03 08:49:03.438 0.92213 ORDER_REASON_TP ORDER_STATE_FILLED 2021.02.03 08:49:03.482, Position 122071277 created 2021.02.03 02:39:05.643, StopLevel = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Alert: bool GetAcceptedTick(const ulong,MqlTick&,const bool): CopyTicksRange(NZDCAD, 2021.02.03 07:47:33.323, 2021.02.03 08:47:33.323) = 0, _LastError = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Order 122139669 ORDER_TYPE_BUY NZDCAD 2021.02.03 08:47:33.323 0.92218 ORDER_REASON_TP ORDER_STATE_FILLED 2021.02.03 08:47:33.376, Position 122071588 created 2021.02.03 02:38:27.630, StopLevel = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Alert: bool GetAcceptedTick(const ulong,MqlTick&,const bool): CopyTicksRange(NZDCAD, 2021.02.03 07:47:33.323, 2021.02.03 08:47:33.323) = 0, _LastError = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Order 122139668 ORDER_TYPE_BUY NZDCAD 2021.02.03 08:47:33.323 0.92219 ORDER_REASON_TP ORDER_STATE_FILLED 2021.02.03 08:47:33.367, Position 122070905 created 2021.02.03 02:38:45.648, StopLevel = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Alert: bool GetAcceptedTick(const ulong,MqlTick&,const bool): CopyTicksRange(NZDCAD, 2021.02.03 07:46:05.018, 2021.02.03 08:46:05.018) = 0, _LastError = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Order 122139354 ORDER_TYPE_BUY NZDCAD 2021.02.03 08:46:05.018 0.92227 ORDER_REASON_TP ORDER_STATE_FILLED 2021.02.03 08:46:05.068, Position 122070794 created 2021.02.03 02:38:27.343, StopLevel = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Alert: bool GetAcceptedTick(const ulong,MqlTick&,const bool): CopyTicksRange(NZDCAD, 2021.02.03 00:58:12.164, 2021.02.03 02:39:05.594) = 0, _LastError = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Order 122078065 ORDER_TYPE_SELL NZDCAD 2021.02.03 02:39:05.594 0.92066 ORDER_REASON_TP ORDER_STATE_FILLED 2021.02.03 02:39:05.631, Position 122005391 created 2021.02.03 01:58:12.164, StopLevel = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Alert: bool GetAcceptedTick(const ulong,MqlTick&,const bool): CopyTicksRange(NZDCAD, 2021.02.03 00:55:04.419, 2021.02.03 02:38:45.600) = 0, _LastError = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Order 122077803 ORDER_TYPE_SELL NZDCAD 2021.02.03 02:38:45.600 0.92056 ORDER_REASON_TP ORDER_STATE_FILLED 2021.02.03 02:38:45.631, Position 122016550 created 2021.02.03 01:55:04.419, StopLevel = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Alert: bool GetAcceptedTick(const ulong,MqlTick&,const bool): CopyTicksRange(NZDCAD, 2021.02.03 00:59:34.647, 2021.02.03 02:38:27.594) = 0, _LastError = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Order 122077754 ORDER_TYPE_SELL NZDCAD 2021.02.03 02:38:27.594 0.92048 ORDER_REASON_TP ORDER_STATE_FILLED 2021.02.03 02:38:27.648, Position 122016553 created 2021.02.03 01:59:34.647, StopLevel = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Alert: bool GetAcceptedTick(const ulong,MqlTick&,const bool): CopyTicksRange(NZDCAD, 2021.02.03 00:54:36.785, 2021.02.03 02:38:27.292) = 0, _LastError = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Order 122077748 ORDER_TYPE_SELL NZDCAD 2021.02.03 02:38:27.292 0.92042 ORDER_REASON_TP ORDER_STATE_FILLED 2021.02.03 02:38:27.344, Position 122004723 created 2021.02.03 01:54:36.785, StopLevel = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Alert: bool GetAcceptedTick(const ulong,MqlTick&,const bool): CopyTicksRange(NZDCAD, 2021.02.03 00:59:34.603, 2021.02.03 01:59:34.603) = 0, _LastError = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Order 122071584 ORDER_TYPE_BUY NZDCAD 2021.02.03 01:59:34.603 0.91993 ORDER_REASON_TP ORDER_STATE_FILLED 2021.02.03 01:59:34.623, Position 121900746 created 2021.02.02 21:33:29.598, StopLevel = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Alert: bool GetAcceptedTick(const ulong,MqlTick&,const bool): CopyTicksRange(NZDCAD, 2021.02.03 00:58:12.125, 2021.02.03 01:58:12.125) = 0, _LastError = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) Order 122071259 ORDER_TYPE_BUY NZDCAD 2021.02.03 01:58:12.125 0.92016 ORDER_REASON_TP ORDER_STATE_FILLED 2021.02.03 01:58:12.165, Position 121910314 created 2021.02.02 20:42:24.207, StopLevel = 0
2021.02.05 17:00:47.047 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.048 CheckOrders (EURUSD,D1) Alert: bool GetAcceptedTick(const ulong,MqlTick&,const bool): CopyTicksRange(NZDCAD, 2021.02.03 00:55:04.388, 2021.02.03 01:55:04.388) = 0, _LastError = 0
2021.02.05 17:00:47.048 CheckOrders (EURUSD,D1) Order 122070902 ORDER_TYPE_BUY NZDCAD 2021.02.03 01:55:04.388 0.92053 ORDER_REASON_TP ORDER_STATE_FILLED 2021.02.03 01:55:04.411, Position 121945533 created 2021.02.02 21:33:29.593, StopLevel = 0
2021.02.05 17:00:47.048 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.048 CheckOrders (EURUSD,D1) Alert: bool GetAcceptedTick(const ulong,MqlTick&,const bool): CopyTicksRange(NZDCAD, 2021.02.03 00:54:36.744, 2021.02.03 01:54:36.744) = 0, _LastError = 0
2021.02.05 17:00:47.048 CheckOrders (EURUSD,D1) Order 122070780 ORDER_TYPE_BUY NZDCAD 2021.02.03 01:54:36.744 0.92064 ORDER_REASON_TP ORDER_STATE_FILLED 2021.02.03 01:54:36.791, Position 121900844 created 2021.02.02 20:39:22.457, StopLevel = 0
2021.02.05 17:00:47.048 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.048 CheckOrders (EURUSD,D1) Alert: bool GetAcceptedTick(const ulong,MqlTick&,const bool): CopyTicksRange(NZDCAD, 2021.02.02 20:33:29.555, 2021.02.02 21:33:29.555) = 0, _LastError = 0
2021.02.05 17:00:47.048 CheckOrders (EURUSD,D1) Order 122016544 ORDER_TYPE_SELL NZDCAD 2021.02.02 21:33:29.555 0.91619 ORDER_REASON_TP ORDER_STATE_FILLED 2021.02.02 21:33:29.591, Position 121849527 created 2021.02.02 18:01:22.267, StopLevel = 0
2021.02.05 17:00:47.048 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.048 CheckOrders (EURUSD,D1) Alert: bool GetAcceptedTick(const ulong,MqlTick&,const bool): CopyTicksRange(NZDCAD, 2021.02.02 20:33:29.555, 2021.02.02 21:33:29.555) = 0, _LastError = 0
2021.02.05 17:00:47.048 CheckOrders (EURUSD,D1) Order 122016543 ORDER_TYPE_SELL NZDCAD 2021.02.02 21:33:29.555 0.91619 ORDER_REASON_TP ORDER_STATE_FILLED 2021.02.02 21:33:29.585, Position 121804705 created 2021.02.02 16:52:35.900, StopLevel = 0
2021.02.05 17:00:47.048 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.048 CheckOrders (EURUSD,D1) Alert: bool GetAcceptedTick(const ulong,MqlTick&,const bool): CopyTicksRange(NZDCAD, 2021.02.02 19:42:24.179, 2021.02.02 20:42:24.179) = 0, _LastError = 0
2021.02.05 17:00:47.048 CheckOrders (EURUSD,D1) Order 122005386 ORDER_TYPE_SELL NZDCAD 2021.02.02 20:42:24.179 0.91665 ORDER_REASON_TP ORDER_STATE_FILLED 2021.02.02 20:42:24.232, Position 121804706 created 2021.02.02 17:01:15.335, StopLevel = 0
2021.02.05 17:00:47.048 CheckOrders (EURUSD,D1) 
2021.02.05 17:00:47.048 CheckOrders (EURUSD,D1) Alert: bool GetAcceptedTick(const ulong,MqlTick&,const bool): CopyTicksRange(NZDCAD, 2021.02.02 19:39:22.423, 2021.02.02 20:39:22.423) = 0, _LastError = 0
2021.02.05 17:00:47.048 CheckOrders (EURUSD,D1) Order 122004709 ORDER_TYPE_SELL NZDCAD 2021.02.02 20:39:22.423 0.91662 ORDER_REASON_TP ORDER_STATE_FILLED 2021.02.02 20:39:22.476, Position 121829876 created 2021.02.02 16:52:39.474, StopLevel = 0
2021.02.05 17:00:47.048 CheckOrders (EURUSD,D1) 
2021.02.05 17:01:08.998 CheckOrders (EURUSD,D1) Last Tick 2021.01.07 16:31:09.714 1.06933 1.06938
2021.02.05 17:01:08.998 CheckOrders (EURUSD,D1) LatTick Length = 133 ms.
2021.02.05 17:01:08.998 CheckOrders (EURUSD,D1) Accepted Tick 2021.01.07 16:31:09.581 1.06936 1.06941
2021.02.05 17:01:08.998 CheckOrders (EURUSD,D1) Accepted Length = 266 ms.
2021.02.05 17:01:08.998 CheckOrders (EURUSD,D1) Order 115585098 ORDER_TYPE_SELL AUDNZD 2021.01.07 16:31:09.847 1.06936 ORDER_REASON_TP ORDER_STATE_FILLED 2021.01.07 16:31:09.907, Position 115540426 created 2021.01.07 16:24:36.081, StopLevel = 0
2021.02.05 17:01:08.998 CheckOrders (EURUSD,D1) 
2021.02.05 17:01:10.935 CheckOrders (EURUSD,D1) Total Orders (from 2021.01.01 00:00:00) = 1343, calculated = 583
2021.02.05 17:01:10.935 CheckOrders (EURUSD,D1) Calculation time = 00:00:23.890, Performance = 24.0 orders/sec.
2021.02.05 17:01:10.935 CheckOrders (EURUSD,D1) 
2021.02.05 17:01:10.935 CheckOrders (EURUSD,D1) ServerName: ICMarkets-MT5
2021.02.05 17:01:10.935 CheckOrders (EURUSD,D1) 
2021.02.05 17:01:10.950 CheckOrders (EURUSD,D1) Last Tick 2021.01.07 16:31:09.714 1.06933 1.06938
2021.02.05 17:01:10.950 CheckOrders (EURUSD,D1) LatTick Length = 133 ms.
2021.02.05 17:01:10.950 CheckOrders (EURUSD,D1) Accepted Tick 2021.01.07 16:31:09.581 1.06936 1.06941
2021.02.05 17:01:10.950 CheckOrders (EURUSD,D1) Accepted Length = 266 ms.
2021.02.05 17:01:10.950 CheckOrders (EURUSD,D1) Order 115585098 ORDER_TYPE_SELL AUDNZD 2021.01.07 16:31:09.847 1.06936 ORDER_REASON_TP ORDER_STATE_FILLED 2021.01.07 16:31:09.907, Position 115540426 created 2021.01.07 16:24:36.081, StopLevel = 0
2021.02.05 17:01:10.950 CheckOrders (EURUSD,D1) 
2021.02.05 17:01:10.950 CheckOrders (EURUSD,D1) Orders (2) before 115585098 with PositionID = 115540426:
2021.02.05 17:01:10.950 CheckOrders (EURUSD,D1) ------------------------
2021.02.05 17:01:10.950 CheckOrders (EURUSD,D1) Checked Orders = 0
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Акцептирование SL/TP-ордеров

Dzmitry Manannikov, 2021.02.05 15:10

2021.02.05 17:01:10.950 CheckOrders (EURUSD,D1) Last Tick 2021.01.07 16:31:09.714 1.06933 1.06938
2021.02.05 17:01:10.950 CheckOrders (EURUSD,D1) LatTick Length = 133 ms.
2021.02.05 17:01:10.950 CheckOrders (EURUSD,D1) Accepted Tick 2021.01.07 16:31:09.581 1.06936 1.06941
2021.02.05 17:01:10.950 CheckOrders (EURUSD,D1) Accepted Length = 266 ms.
2021.02.05 17:01:10.950 CheckOrders (EURUSD,D1) Order 115585098 ORDER_TYPE_SELL AUDNZD 2021.01.07 16:31:09.847 1.06936 ORDER_REASON_TP ORDER_STATE_FILLED 2021.01.07 16:31:09.907, Position 115540426 created 2021.01.07 16:24:36.081, StopLevel = 0
2021.02.05 17:01:10.950 CheckOrders (EURUSD,D1) 
2021.02.05 17:01:10.950 CheckOrders (EURUSD,D1) Orders (2) before 115585098 with PositionID = 115540426:
2021.02.05 17:01:10.950 CheckOrders (EURUSD,D1) ------------------------
2021.02.05 17:01:10.950 CheckOrders (EURUSD,D1) Checked Orders = 0

Спасибо, поясню выделенное. TP-ордер был акцептирован через 266 мс после того, как ему стала удовлетворять цена. При этом последний тик перед акцептированием был за 133 мс.

Это непонятно, поэтому на более простом примере.


Приходит тик, который должен акцептировать TP открытой позиции. MT5 создает TP-ордер, один или несколько последовательно (если предыдущие отменяются).

Но про последний ордер в этой последовательности мы можем точно сказать. Он сформировался не сразу, как пришел последний тик, удовлетворяющий TP-уровню, а только через 133 мс.


Представьте, приходит тик. А MT5-Server начинает действовать только через 133 мс! Ренат скажет, что это пиковое значение и будет прав. Поэтому в ветке приводил скрипт, который выдает среднее значение лага.

Это тоже несколько миллисекунд.


ЗЫ Акцептирование ордера - это просто факт его создания. Это не отправка его куда-то, а просто создание на MT5-Server. Должно происходить мгновенно, как только цена дойдет до соответствующего уровня.

 

В боевой ситуации столкнулся, что иногда от MT4 акцепт лимитника происходит быстрее, чем от MT5. В итоге в этих ситуациях MT4 успевает схватить ликвидность, MT5 - нет.

Просьба побороть лаги MT5-сервера.

 
Ситуация не улучшилась.
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Акцептирование SL/TP-ордеров

fxsaber, 2020.11.27 21:20

Похоже, выяснил причину. Работа скрипта на машине, на которой работает сервер.

// Преобразование времени в миллисекундах в строку.
string TimeToString( const long time, const int FlagTime = TIME_DATE | TIME_SECONDS)
{
  return(TimeToString((datetime)time / 1000, FlagTime) + "." + IntegerToString(time % 1000, 3, '0'));
}

// Преобразование тика в строку.
string TickToString( const MqlTick &Tick, const int digits )
{
  return(TimeToString(Tick.time_msc) + " " + DoubleToString(Tick.bid, digits) + " " + DoubleToString(Tick.ask, digits));
}

void OnTick()
{
  MqlTick Tick;
  
  if (SymbolInfoTick(_Symbol, Tick))
    Print(TickToString(Tick, _Digits));
}


Результат.

2020.11.27 22:13:44.156 2020.11.27 22:13:44.149 1.59953 1.59993
2020.11.27 22:13:44.862 2020.11.27 22:13:44.855 0.98789 0.98837
2020.11.27 22:13:45.263 2020.11.27 22:13:45.258 0.98789 0.98839
2020.11.27 22:13:46.878 2020.11.27 22:13:46.873 10.15554 10.16084
2020.11.27 22:13:48.993 2020.11.27 22:13:48.991 10.15554 10.16106
2020.11.27 22:13:51.722 2020.11.27 22:13:51.716 0.98789 0.98840
2020.11.27 22:13:53.035 2020.11.27 22:13:53.027 1.59950 1.59995
2020.11.27 22:13:53.134 2020.11.27 22:13:53.128 1.59954 1.59995
2020.11.27 22:13:53.737 2020.11.27 22:13:53.734 0.98789 0.98839
2020.11.27 22:13:54.745 2020.11.27 22:13:54.743 0.98789 0.98840
2020.11.27 22:13:56.768 2020.11.27 22:13:56.761 0.98789 0.98839
2020.11.27 22:13:57.977 2020.11.27 22:13:57.973 1.59954 1.59994
2020.11.27 22:14:00.293 2020.11.27 22:14:00.292 10.15554 10.16093
2020.11.27 22:14:04.131 2020.11.27 22:14:04.125 1.59954 1.59995
2020.11.27 22:14:08.868 2020.11.27 22:14:08.866 0.98789 0.98841
2020.11.27 22:14:09.780 2020.11.27 22:14:09.773 0.98789 0.98840
2020.11.27 22:14:09.981 2020.11.27 22:14:09.975 1.59955 1.59994
2020.11.27 22:14:10.085 2020.11.27 22:14:10.076 1.59957 1.59994
2020.11.27 22:14:10.180 2020.11.27 22:14:10.177 1.59957 1.59995

Слева время принта. Справа - время пришедшего тика. Хорошо виден лаг. Получается, что OnTick срабатывает на несколько миллисекунд позже, чем в торговый сервер записался тик.


ЗЫ Похоже, в ту часть сервера, что ответственна за активацию ордеров, тики приходят с опозданием, как это происходит с приходом их в Терминал.


Terminal/Server = 2920. К сожалению, ситуация пока не изменилась.

2021.05.19 12:39:02.082 Test9   2021.05.19 12:39:02.080 1.62642 1.62654
2021.05.19 12:39:02.284 Test9   2021.05.19 12:39:02.282 1.62641 1.62651
2021.05.19 12:39:04.305 Test9   2021.05.19 12:39:04.299 1.62645 1.62655
2021.05.19 12:39:06.823 Test9   2021.05.19 12:39:06.821 1.62647 1.62658
2021.05.19 12:39:13.791 Test9   2021.05.19 12:39:13.785 1.62647 1.62659
2021.05.19 12:39:13.891 Test9   2021.05.19 12:39:13.886 1.62649 1.62659
2021.05.19 12:39:15.103 Test9   2021.05.19 12:39:15.097 1.62651 1.62661
2021.05.19 12:39:18.534 Test9   2021.05.19 12:39:18.527 1.62653 1.62663
2021.05.19 12:39:19.238 Test9   2021.05.19 12:39:19.232 1.62650 1.62660
 

Проверил ордера (несколько тысяч), которые брокер акцептировал на торговом сервере b2940.

Значительное улучшение! Лаги доходят до 2 мс, но это, скорее всего, выбросы, не портящие общую новую картину.

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


Другие лаги не проверял.

 

Синхронизатор показал проблему. Были живые ордера (их видели все советники в списке OrderGetTicket). Когда эти ордера исчезли, их не оказалось в истории ордеров. Совсем.

Руками проверил - действительно, нет. Обратился к брокеру. Он посмотрел на сервере - их (тикеты сообщил) нет ни в истории, ни в логах.

Брокер сообщает, что если ордера отсортировать по тикетам, то в этих местах дыры - тикеты перескакивают через эти значения.


MT5-Server b2940. Тревожный баг. Брокерам рекомендую проверить тикеты ордеров на предмет наличия дыр - отсутствует четкая последовательная нумерация тикетов.


ЗЫ В логах Терминала этих ордеров нет, т.к. это были TP-ордера - создаются автоматом, когда цена доходит до TP-уровня открытой позиции.

ЗЗЫ Какие предпринять действия, чтобы помочь избавиться от недуга?

Библиотеки: TradesID
Библиотеки: TradesID
  • 2021.03.29
  • www.mql5.com
Статьи и техническая библиотека по автоматическому трейдингу: Библиотеки: TradesID
 
fxsaber:

Синхронизатор показал проблему. Были живые ордера (их видели все советники в списке OrderGetTicket). Когда эти ордера исчезли, их не оказалось в истории ордеров. Совсем.

Руками проверил - действительно, нет. Обратился к брокеру. Он посмотрел на сервере - их (тикеты сообщил) нет ни в истории, ни в логах.

Брокер сообщает, что если ордера отсортировать по тикетам, то в этих местах дыры - тикеты перескакивают через эти значения.


MT5-Server b2940. Тревожный баг. Брокерам рекомендую проверить тикеты ордеров на предмет наличия дыр - отсутствует четкая последовательная нумерация тикетов.


ЗЫ В логах Терминала этих ордеров нет, т.к. это были TP-ордера - создаются автоматом, когда цена доходит до TP-уровня открытой позиции.

ЗЗЫ Какие предпринять действия, чтобы помочь избавиться от недуга?

пиры, плагины, надстройки, скрипты, фильтры сервера конечно-же не при делах...

понимаю, что все перегрелись, но как-то по детски..баг-репорты смотрятся иначе

 
Maxim Kuznetsov:

пиры, плагины, надстройки, скрипты, фильтры сервера конечно-же не при делах...

понимаю, что все перегрелись, но как-то по детски..баг-репорты смотрятся иначе

В Терминале видите ордер, затем он исчезает. Далее его не оказывается на сервере - тикет выпилен. Просьба не лезть.

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