Скорость исполнения ордера

 

Здравствуйте. Хотелось бы выяснить с какой скоростью исполняются ордера у моего брокера.

Нашла скрипт который замеряет скорость, вот часть этого кода:

        dt1 = GetTickCount();    
        int ticket = OrderSend(Symbol(), cmd, LotSize, price, SlipPage, sl, tp, "OpenOrderTime", 0, 0, clr);
        dt2 = GetTickCount();  
        if(ticket > 0)
        {      
                Alert("Open time, ms =" + IntegerToString(dt2-dt1));
        }

Но насколько я понимаю этот скрипт проверяет скорость исполнения кода, а не скорость исполнения ордера. Я права?
 

 
Anna Cvarc:

Но насколько я понимаю этот скрипт проверяет скорость исполнения кода, а не скорость исполнения ордера. Я права? 

Нет.
 
fxsaber:
Нет.
То есть этот скрипт сообщает реальную скорость исполнения ордера на моем терминале, от момента посылки запроса ордера брокеру, до момента появления позиции в моем терминале?
 
Anna Cvarc:
То есть этот скрипт сообщает реальную скорость исполнения ордера на моем терминале, от момента посылки запроса ордера брокеру, до момента появления позиции в моем терминале?

Лучше сделать запуск скрипта с применением таймера. Надеюсь, что в этом случае ответ этой задачки будет наиболее верным.

 
Anna Cvarc:
То есть этот скрипт сообщает реальную скорость исполнения ордера на моем терминале, от момента посылки запроса ордера брокеру, до момента появления позиции в моем терминале?
Да.
 
fxsaber:
Да.
И нужно использовать GetMicrosecondCount();
 
prostotrader:
И нужно использовать GetMicrosecondCount();
Для MT4 GetTickCount за глаза.
 
fxsaber:
Для MT4 GetTickCount за глаза.
GetTickCount() даёт погрешность(иногда соизмеримую с скоростью исполнения приказа)
 
prostotrader:
GetTickCount() даёт погрешность(иногда соизмеримую с скоростью исполнения приказа)
Это в MT5. А в MT4 - за глаза.
 
Anna Cvarc:
То есть этот скрипт сообщает реальную скорость исполнения ордера на моем терминале, от момента посылки запроса ордера брокеру, до момента появления позиции в моем терминале?

Замеряется время от начала работы функции OrderSend (не OrderSendAsync) до начала работы следующей после нее строки кода. Работа функции включает разные по продолжительности этапы:

- проверка параметров ордера в терминале. Некоторые ошибки выявляются здесь же, без отсылки запроса на сервер;

- отсылка запроса на сервер;

- ожидание ответа от сервера - дольше всего;

- прием ответа сервера терминалом;

- возврат результата работы OrderSend.

К этому моменту "появление позиции в терминале", то есть отрисовка в окне закладки "Торговля" новой сделки при открытии либо перерисовка окна из-за закрытия или модификации сделки не обязательны. Следующая строка после OrderSend будет исполняться без ожидания перерисовок окон. Кроме того, не ожидается также и обновление сервером массивов открытых и отложенных ордеров и истории счета в терминале - это может произойти позже на 0-48 миллисекунд.

Непосредственное исполнение ордеров как юридически значимый факт реализуется на сервере, не в терминале.

 
Anna Cvarc:

Здравствуйте. Хотелось бы выяснить с какой скоростью исполняются ордера у моего брокера.

Нашла скрипт который замеряет скорость, вот часть этого кода:

        dt1 = GetTickCount();    
        int ticket = OrderSend(Symbol(), cmd, LotSize, price, SlipPage, sl, tp, "OpenOrderTime", 0, 0, clr);
        dt2 = GetTickCount();  
        if(ticket > 0)
        {      
                Alert("Open time, ms =" + IntegerToString(dt2-dt1));
        }

Но насколько я понимаю этот скрипт проверяет скорость исполнения кода, а не скорость исполнения ордера. Я права?



Может потому что GetTickCount();  возвращает количество времени в миллисекундах а не количество тиков?

Вам мухи или котлеты?