Низкий пинг и долгое выставление завки. MetaTrader5 - страница 2

 

 timeOpen  timeClose 

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

 
Vladimir Zubov:

 timeOpen  timeClose 

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

Программно меряю и пишу сам, вот кусок кода, я жирным выделил то, что относится к измерению времени. Точность от 16 мс, это обусловлено особенностями OS Windows, но меня такая точность устраивает.

        ResetLastError();
        int ticket;
        uint dt1, timeOpen;
        dt1 = GetTickCount(); 
        if(m_orderModifyAfterOpen)
            ticket = OrderSend(symbol, cmd, volume, price, slippage, 0, 0, comment, magic, expiration, arrow_color);
        else    
        {
            CalcStoplossAndTakeprofit(symbol, cmd, price, stoploss, takeprofit);
            ticket = OrderSend(symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment, magic, expiration, arrow_color);
        }    
        timeOpen = GetTickCount() - dt1;

        COrder* pOrd = NULL;
        if (ticket < 0)
        {
            string err = GetMyLastError();
            Print("Ошибка открытия ордера, ", err);
            WriteMsg("ERROR!!!", cmd, -1, symbol, "OpenOrderWithCheck - ошибка открытия ордера: " + err);
            return pOrd;
        }
        else
        {
            WriteMsg("  Open", cmd, ticket, symbol, "  timeOpen= " + IntegerToString(timeOpen) + "  volume= " + DoubleToStr(volume, 2) + "  Price= " + DoubleToStr(price, dig) + "  SL= " + DoubleToStr(stoploss, dig) + "  TP= " + DoubleToStr(takeprofit, dig));
            ResetLastError();
            if(m_orderModifyAfterOpen && OrderSelect(ticket, SELECT_BY_TICKET))
            {
                price = OrderOpenPrice();
                CalcStoplossAndTakeprofit(symbol, cmd, price, stoploss, takeprofit);
                int counter = ORDER_MODIFY_REPEAT;
                bool result = false;
                while(!result && counter-- > 0)
                {
                    dt1 = GetTickCount(); 
                    result = OrderModify(ticket, price, stoploss, takeprofit, expiration, arrow_color);
                    timeOpen = GetTickCount() - dt1;
                    WriteMsg("  Modify", cmd, ticket, symbol, "  timeModify= " + IntegerToString(timeOpen) + "  SL= " + DoubleToStr(stoploss, dig) + "  TP= " + DoubleToStr(takeprofit, dig));
                    Sleep(ORDER_MODIFY_REPEAT_SLEEP_TIME);
                }
            }    
            
            if (OrderSelect(ticket, SELECT_BY_TICKET))
            {
                price = OrderOpenPrice();
                datetime ordOpenTime = OrderOpenTime();
                // нужно запрашивать реальный объем, т.к. на счетах ECN при посылке ордера с большим объемом может открыться несколько ордеров
                // с разными объемами и разными ценами из-за того, что в стакане просто нет заявки с нужным лотом по запрошенной цене
                volume = OrderLots();
                stoploss = OrderStopLoss();
                takeprofit = OrderTakeProfit();
                pOrd = AddOrder(ordType, ticket, symbol, cmd, volume, price, ordOpenTime, magic, stoploss, takeprofit, comment, expiration, arrow_color);
                WriteMsg("Opened", cmd, ticket, symbol, "volume= " + DoubleToStr(volume, 2) + "  Price= " + DoubleToStr(price, dig) + "  SL= " + DoubleToStr(stoploss, dig) + "  TP= " + DoubleToStr(takeprofit, dig));
            }
        }
        return (pOrd);
    }
 
Alexey Volchanskiy:

Ну, я так и понял, что асинхронный режим. А вот именно по исполнению есть какая-то статистика? У меня робот пишет на МТ4 вот такую, это для алпы стандарт, времена плавают довольно сильно, но проскальзываний на данном промежутке нет.

У меня в блоге есть 2 обзора, там несколько брокеров.

Массовой статистики такого рода не встречал. 

 
Andrey Khatimlianskii:

У меня в блоге есть 2 обзора, там несколько брокеров.

Массовой статистики такого рода не встречал. 

Я эти статьи в блоге читал, полезные тесты. Только не нашел, они были для МТ4 или МТ5? (может бегло просмотрел...)
 
Alexey Volchanskiy:
Я эти статьи в блоге читал, полезные тесты. Только не нашел, они были для МТ4 или МТ5? (может бегло просмотрел...)
МТ4
 
Andrey Khatimlianskii:
МТ4
Ясно, мне интересно, насколько МТ5 обгоняет МТ4 в среднем
 
Alexey Volchanskiy:
Ясно, мне интересно, насколько МТ5 обгоняет МТ4 в среднем

Откуда инфа, что обгоняет?

И с кем будете обгонять (брокеров-то под 5-ку почти нет)?

Тут же не в тормознутости терминала или сервера дело, а в выводе сделки на провайдера ликвидности. Именно он определяет скорость.

 
Andrey Khatimlianskii:

Если замкнуть сделки во внутренней ECN прямо на MT-сервере, так и будет (скорость = пинг*2 + небольшая константа).

Но это вообще отдельная тема. 

Андрей, разумеется, я имею в виду реальное время исполнения, которые мерял сам. Там тоже есть асинхронный режим, пинги физически нам не сократить. Но именно время отработки сервака на реальной ECN - десятки мс. Обсуждать тут конкурентов неадекватно - забанят ))
 

Вот только что на реальном счете в MOEX совершил сделки:

2016.02.16 16:04:19.927	Trades	'XXXXXX': cancel order #28316356 buy limit 1.00 RTS-3.16 at 70650 placed for execution in 7 ms
2016.02.16 16:04:19.919	Trades	'XXXXXX': cancel order #28316356 buy limit 1.00 RTS-3.16 at 70650

2016.02.16 16:04:09.862	Trades	'XXXXXX': buy limit 1.00 RTS-3.16 at 70650 placed for execution in 5 ms
2016.02.16 16:04:09.857	Trades	'XXXXXX': buy limit 1.00 RTS-3.16 at 70650
Выставил ордер и удалил. Пинг до сервера брокера (Открытие)  1.87 мс.
 
Renat Fatkhullin:

Вот только что на реальном счете в MOEX совершил сделки:

Выставил ордер и удалил. Пинг до сервера брокера (Открытие)  1.87 мс.
Ренат, тут все жалуются на время исполнения, а не на время отправки ордера. А это не к вам вопрос.
Причина обращения: