Но насколько я понимаю этот скрипт проверяет скорость исполнения кода, а не скорость исполнения ордера. Я права?
Нет.
То есть этот скрипт сообщает реальную скорость исполнения ордера на моем терминале, от момента посылки запроса ордера брокеру, до момента появления позиции в моем терминале?
Лучше сделать запуск скрипта с применением таймера. Надеюсь, что в этом случае ответ этой задачки будет наиболее верным.
То есть этот скрипт сообщает реальную скорость исполнения ордера на моем терминале, от момента посылки запроса ордера брокеру, до момента появления позиции в моем терминале?
И нужно использовать GetMicrosecondCount();
Для MT4 GetTickCount за глаза.
GetTickCount() даёт погрешность(иногда соизмеримую с скоростью исполнения приказа)
То есть этот скрипт сообщает реальную скорость исполнения ордера на моем терминале, от момента посылки запроса ордера брокеру, до момента появления позиции в моем терминале?
Замеряется время от начала работы функции OrderSend (не OrderSendAsync) до начала работы следующей после нее строки кода. Работа функции включает разные по продолжительности этапы:
- проверка параметров ордера в терминале. Некоторые ошибки выявляются здесь же, без отсылки запроса на сервер;
- отсылка запроса на сервер;
- ожидание ответа от сервера - дольше всего;
- прием ответа сервера терминалом;
- возврат результата работы OrderSend.
К этому моменту "появление позиции в терминале", то есть отрисовка в окне закладки "Торговля" новой сделки при открытии либо перерисовка окна из-за закрытия или модификации сделки не обязательны. Следующая строка после OrderSend будет исполняться без ожидания перерисовок окон. Кроме того, не ожидается также и обновление сервером массивов открытых и отложенных ордеров и истории счета в терминале - это может произойти позже на 0-48 миллисекунд.
Непосредственное исполнение ордеров как юридически значимый факт реализуется на сервере, не в терминале.
Здравствуйте. Хотелось бы выяснить с какой скоростью исполняются ордера у моего брокера.
Нашла скрипт который замеряет скорость, вот часть этого кода:
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(); возвращает количество времени в миллисекундах а не количество тиков?
Вам мухи или котлеты?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте. Хотелось бы выяснить с какой скоростью исполняются ордера у моего брокера.
Нашла скрипт который замеряет скорость, вот часть этого кода:
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));
}
Но насколько я понимаю этот скрипт проверяет скорость исполнения кода, а не скорость исполнения ордера. Я права?