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

 
fxsaber:

Сервер Alpari-MT5-Demo. Дважды выполнялся этот скрипт.

2017.02.08 22:55:13.170 Trades  '50075899': market buy 1.00 BRN
2017.02.08 22:55:15.817 Trades  '50075899': accepted market buy 1.00 BRN
2017.02.08 22:55:15.817 Trades  '50075899': deal #4163994 buy 1.00 BRN at 55.41 done (based on order #5506688)
2017.02.08 22:55:15.827 Trades  '50075899': order #5506688 buy 1.00 / 1.00 BRN at 55.41 done in 2658.948 ms
2017.02.08 22:55:15.827 Trades  '50075899': modify #5506688 buy 1.00 BRN sl: 0.00, tp: 0.00 -> sl: 54.41, tp: 56.41
2017.02.08 22:55:17.270 Trades  '50075899': accepted modify #5506688 buy 1.00 BRN sl: 0.00, tp: 0.00 -> sl: 54.41, tp: 56.41
2017.02.08 22:55:18.124 Trades  '50075899': modify #5506688 buy 1.00 BRN -> sl: 54.41, tp: 56.41 done in 2295.483 ms
2017.02.08 22:55:18.124 Trades  '50075899': market sell 1.00 BRN, close #5506688 buy 1.00 BRN 55.41
2017.02.08 22:55:23.246 Trades  '50075899': accepted market sell 1.00 BRN, close #5506688 buy 1.00 BRN 55.41
2017.02.08 22:55:23.246 Trades  '50075899': deal #4163995 sell 1.00 BRN at 55.27 done (based on order #5506689)
2017.02.08 22:55:23.246 Trades  '50075899': order #5506689 sell 1.00 / 1.00 BRN at 55.27 done in 5119.709 ms

2017.02.08 22:55:23.246 Trades  '50075899': buy limit 1.00 BRN at 54.40
2017.02.08 22:55:23.309 Trades  '50075899': accepted buy limit 1.00 BRN at 54.40
2017.02.08 22:55:23.314 Trades  '50075899': order #5506691 buy limit 1.00 / 1.00 BRN at market done in 66.501 ms
2017.02.08 22:55:23.314 Trades  '50075899': cancel order #5506691 buy limit 1.00 BRN at 54.40
2017.02.08 22:55:23.376 Trades  '50075899': accepted cancel order #5506691 buy limit 1.00 BRN at 54.40
2017.02.08 22:55:23.379 Trades  '50075899': cancel #5506691 buy limit 1.00 BRN at market done in 64.586 ms

2017.02.08 22:55:48.729 Trades  '50075899': market buy 1.00 BRN
2017.02.08 22:55:48.801 Trades  '50075899': accepted market buy 1.00 BRN
2017.02.08 22:55:48.801 Trades  '50075899': deal #4163999 buy 1.00 BRN at 55.39 done (based on order #5506694)
2017.02.08 22:55:48.809 Trades  '50075899': order #5506694 buy 1.00 / 1.00 BRN at 55.39 done in 78.782 ms
2017.02.08 22:55:48.809 Trades  '50075899': modify #5506694 buy 1.00 BRN sl: 0.00, tp: 0.00 -> sl: 54.39, tp: 56.39
2017.02.08 22:55:48.879 Trades  '50075899': accepted modify #5506694 buy 1.00 BRN sl: 0.00, tp: 0.00 -> sl: 54.39, tp: 56.39
2017.02.08 22:55:48.886 Trades  '50075899': modify #5506694 buy 1.00 BRN -> sl: 54.39, tp: 56.39 done in 77.030 ms
2017.02.08 22:55:48.886 Trades  '50075899': market sell 1.00 BRN, close #5506694 buy 1.00 BRN 55.39
2017.02.08 22:55:48.961 Trades  '50075899': accepted market sell 1.00 BRN, close #5506694 buy 1.00 BRN 55.39
2017.02.08 22:55:48.966 Trades  '50075899': deal #4164000 sell 1.00 BRN at 55.27 done (based on order #5506695)
2017.02.08 22:55:48.966 Trades  '50075899': order #5506695 sell 1.00 / 1.00 BRN at 55.27 done in 79.688 ms
2017.02.08 22:55:48.966 Trades  '50075899': buy limit 1.00 BRN at 54.39
2017.02.08 22:55:49.034 Trades  '50075899': accepted buy limit 1.00 BRN at 54.39
2017.02.08 22:55:49.041 Trades  '50075899': order #5506696 buy limit 1.00 / 1.00 BRN at market done in 75.393 ms
2017.02.08 22:55:49.041 Trades  '50075899': cancel order #5506696 buy limit 1.00 BRN at 54.39
2017.02.08 22:55:49.116 Trades  '50075899': accepted cancel order #5506696 buy limit 1.00 BRN at 54.39
2017.02.08 22:55:49.116 Trades  '50075899': cancel #5506696 buy limit 1.00 BRN at market done in 83.423 ms

Такие неожиданные тормоза происходят почти на всех демо-серверах. Так что проблема касается не только ФОРТС.

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

У меня не ДЕМО, а РЕАЛ
 
prostotrader:
У меня не ДЕМО, а РЕАЛ

Поэтому в вашем случае разработчикам куда сложнее разобраться.

Демо - никуда из экосистемы Metatrader ничего не уходит. Т.е. проблему ни на кого не повесить и, соответственно, проще локализовать. 

 
fxsaber:

Сервер Alpari-MT5-Demo. Дважды выполнялся этот скрипт.

Такие неожиданные тормоза происходят почти на всех демо-серверах. Так что проблема касается не только ФОРТС.

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

Какой номер билда MT5?
 
Rashid Umarov:
Какой номер билда MT5?
1525.
 
Rashid Umarov:

Нашелся воспроизводимый случай тормозов!

Сервер FIBOGroup-MT5 Server, демо, базовая валюта USD, Netting, build 1525.

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

2017.02.09 09:28:19.404 Scripts script MT4Statement (EURUSD,M1) loaded successfully
2017.02.09 09:28:19.414 Trades  '1013175': exchange buy 1.00 EURUSD at market
2017.02.09 09:28:20.499 Trades  '1013175': deal #1542820 buy 1.00 EURUSD at 1.06721 done (based on order #2246203)
2017.02.09 09:28:20.499 Trades  '1013175': order #2246203 buy 1.00 / 1.00 EURUSD at 1.06721 done in 1078.071 ms

2017.02.09 09:28:20.499 Trades  '1013175': modify #2246203 buy 1.00 EURUSD sl: 0.00000, tp: 0.00000 -> sl: 1.06621, tp: 1.06821
2017.02.09 09:28:20.557 Trades  '1013175': modify #2246203 buy 1.00 EURUSD -> sl: 1.06621, tp: 1.06821 done in 57.672 ms
2017.02.09 09:28:20.557 Trades  '1013175': exchange sell 1.00 EURUSD at market, close #2246203 buy 1.00 EURUSD 1.06721
2017.02.09 09:28:21.624 Trades  '1013175': deal #1542821 sell 1.00 EURUSD at 1.06720 done (based on order #2246204)
2017.02.09 09:28:21.624 Trades  '1013175': order #2246204 sell 1.00 / 1.00 EURUSD at 1.06720 done in 1067.918 ms

2017.02.09 09:28:21.627 Trades  '1013175': buy limit 1.00 EURUSD at 1.06621
2017.02.09 09:28:21.687 Trades  '1013175': order #2246205 buy limit 1.00 / 1.00 EURUSD at market done in 60.036 ms
2017.02.09 09:28:21.687 Trades  '1013175': cancel order #2246205 buy limit 1.00 EURUSD at 1.06621
2017.02.09 09:28:21.747 Trades  '1013175': cancel #2246205 buy limit 1.00 EURUSD at market done in 59.555 ms
2017.02.09 09:28:21.747 Scripts script MT4Statement (EURUSD,M1) removed
2017.02.09 09:28:31.214 Scripts script MT4Statement (EURUSD,M1) loaded successfully
2017.02.09 09:28:31.227 Trades  '1013175': exchange buy 1.00 EURUSD at market
2017.02.09 09:28:32.302 Trades  '1013175': deal #1542822 buy 1.00 EURUSD at 1.06723 done (based on order #2246206)
2017.02.09 09:28:32.302 Trades  '1013175': order #2246206 buy 1.00 / 1.00 EURUSD at 1.06723 done in 1068.513 ms

2017.02.09 09:28:32.304 Trades  '1013175': modify #2246206 buy 1.00 EURUSD sl: 0.00000, tp: 0.00000 -> sl: 1.06623, tp: 1.06823
2017.02.09 09:28:32.364 Trades  '1013175': modify #2246206 buy 1.00 EURUSD -> sl: 1.06623, tp: 1.06823 done in 60.516 ms
2017.02.09 09:28:32.364 Trades  '1013175': exchange sell 1.00 EURUSD at market, close #2246206 buy 1.00 EURUSD 1.06723
2017.02.09 09:28:33.429 Trades  '1013175': deal #1542823 sell 1.00 EURUSD at 1.06722 done (based on order #2246207)
2017.02.09 09:28:33.432 Trades  '1013175': order #2246207 sell 1.00 / 1.00 EURUSD at 1.06722 done in 1068.809 ms

2017.02.09 09:28:33.432 Trades  '1013175': buy limit 1.00 EURUSD at 1.06623
2017.02.09 09:28:33.492 Trades  '1013175': order #2246208 buy limit 1.00 / 1.00 EURUSD at market done in 58.742 ms
2017.02.09 09:28:33.492 Trades  '1013175': cancel order #2246208 buy limit 1.00 EURUSD at 1.06623
2017.02.09 09:28:33.549 Trades  '1013175': cancel #2246208 buy limit 1.00 EURUSD at market done in 57.722 ms
2017.02.09 09:28:33.549 Scripts script MT4Statement (EURUSD,M1) removed

TRADE_ACTION_DEAL в 20 раз медленнее работает, чем остальные режимы! Воспроизводится.

 
prostotrader:
2016.12.14 22:01:41.371 Trades  'xxxxx': cancel order #49932961 buy limit 1.00 CHMF-6.17 at 92501 placed for execution in 64873.549 ms

Правильно ли понимаю, что в данном случае OrderSend вернул true практически мгновенно, но 65 секунд наблюдалось (ENUM_ORDER_STATE)::OrderGetInteger(ORDER_STATE) == ORDER_STATE_STARTED ?

 

Просьба, добавьте в свой код эту проверку.

 
fxsaber:

Правильно ли понимаю, что в данном случае OrderSend вернул true практически мгновенно, но 65 секунд наблюдалось (ENUM_ORDER_STATE)::OrderGetInteger(ORDER_STATE) == ORDER_STATE_STARTED ?

 

Просьба, добавьте в свой код эту проверку.

Я использую OrderSendAsync 

Но, при задержке более 1сек, проверяю состояние ордера

case ORDER_BUSY:
      switch(o_status)
      {
        case BUY_ORDER:
          BuyOrder.mem_time = GetMicrosecondCount();
          Print(__FUNCTION__, ": Buy ордер в переходном состоянии.");
        break;
        case SELL_ORDER:
          SellOrder.mem_time = GetMicrosecondCount();
          Print(__FUNCTION__, ": Sell ордер в переходном состоянии.");
        break;
      }
    break;


 

 
prostotrader:

Я использую OrderSendAsync 

Но, при задержке более 1сек, проверяю состояние ордера

case ORDER_BUSY:
      switch(o_status)
      {
        case BUY_ORDER:
          BuyOrder.mem_time = GetMicrosecondCount();
          Print(__FUNCTION__, ": Buy ордер в переходном состоянии.");
        break;
        case SELL_ORDER:
          SellOrder.mem_time = GetMicrosecondCount();
          Print(__FUNCTION__, ": Sell ордер в переходном состоянии.");
        break;
      }
    break;
Значит все таки Started висит.
 
fxsaber:
Значит все таки Started висит.

Точно не могу сказать, потому что

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;
      }


 Один мз 4-х вариантов

case ORDER_STATE_STARTED:
        case ORDER_STATE_REQUEST_ADD:
        case ORDER_STATE_REQUEST_MODIFY:
        case ORDER_STATE_REQUEST_CANCEL:


 

 

Больше всего вопросов вызывает это

То 6-7 мс, а то тормоза непонятные (917.779)

2017.02.10 14:07:32.008 Trades  'xxxxx': buy limit 2.00 BR-7.17 at 56.89 placed for execution in 7.124 ms
2017.02.10 14:07:32.020 Trades  'xxxxx': cancel order #52361023 buy limit 2.00 BR-7.17 at 56.89
2017.02.10 14:07:32.025 Trades  'xxxxx': accepted cancel order #52361023 buy limit 2.00 BR-7.17 at 56.89
2017.02.10 14:07:32.026 Trades  'xxxxx': cancel order #52361023 buy limit 2.00 BR-7.17 at 56.89 placed for execution in 6.297 ms
2017.02.10 14:08:00.711 Trades  'xxxxx': modify order #52360848 sell limit 1.00 BR-9.17 at 58.40 sl: 0.00 tp: 0.00 -> 58.23, sl: 0.00 tp: 0.00
2017.02.10 14:08:01.628 Trades  'xxxxx': accepted modify order #52360848 sell limit 1.00 BR-9.17 at 58.40 sl: 0.00 tp: 0.00 -> 58.23, sl: 0.00 tp: 0.00
2017.02.10 14:08:01.629 Trades  'xxxxx': modify order #52360848 sell limit 1.00 BR-9.17 at 58.40 sl: 0.00 tp: 0.00 -> 58.23, sl: 0.00 tp: 0.00 placed for execution in 917.779 ms
2017.02.10 14:08:04.005 Trades  'xxxxx': modify order #52360848 sell limit 1.00 BR-9.17 at 58.23 sl: 0.00 tp: 0.00 -> 58.08, sl: 0.00 tp: 0.00
2017.02.10 14:08:04.011 Trades  'xxxxx': accepted modify order #52360848 sell limit 1.00 BR-9.17 at 58.23 sl: 0.00 tp: 0.00 -> 58.08, sl: 0.00 tp: 0.00
2017.02.10 14:08:04.012 Trades  'xxxxx': modify order #52360848 sell limit 1.00 BR-9.17 at 58.23 sl: 0.00 tp: 0.00 -> 58.08, sl: 0.00 tp: 0.00 placed for execution in 6.677 ms