Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Не можешь разобраться в коде? Возможно, на эту тему уже написана статья!
Anna Cvarc
96
Anna Cvarc 2016.11.01 17:10 

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

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

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

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

fxsaber
4487
fxsaber 2016.11.01 17:13  
Anna Cvarc:

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

Нет.
Anna Cvarc
96
Anna Cvarc 2016.11.01 17:21  
fxsaber:
Нет.
То есть этот скрипт сообщает реальную скорость исполнения ордера на моем терминале, от момента посылки запроса ордера брокеру, до момента появления позиции в моем терминале?
new-rena
3372
new-rena 2016.11.01 17:24  
Anna Cvarc:
То есть этот скрипт сообщает реальную скорость исполнения ордера на моем терминале, от момента посылки запроса ордера брокеру, до момента появления позиции в моем терминале?

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

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

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

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

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

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

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

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

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

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

trader781
1151
trader781 2016.11.03 12:07  
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();  возвращает количество времени в миллисекундах а не количество тиков?

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий