Всем добрый вечер, друзья! Подскажите пожалуйста, как просмотреть скорость открытия ордеров на МТ4? Спасибо!
Если вручную, то во вкладке "Журнал" окна терминал.
Если программно, то так:
uint uTick = GetTickCount(); OrderSend(...); uint uNewTick = GetTickCount(); uint uDuration = (uNewTick > uTick)? uNewTick - uTick : UINT_MAX - uTick + uNewTick;Но это непостоянная величина. Можно говорить лишь о средней продолжительности на основании N операций.
Всем добрый вечер, друзья! Подскажите пожалуйста, как просмотреть скорость открытия ордеров на МТ4? Спасибо!
замерить время с максимальной точностью непосредственно перед OrderSend (t1) и сразу после (t2). Разницу поделить пополам и посчитать статистики - это примерно время реакции (лучшее/худшее/типичное/прочее) на которое можно полагаться.
Большая статистика (весьма, потому что сравниваем секунды и милли/микро секунды и выход за пределы секунд) между t1 и OrderOpenTime и её расхождение с лучшей реакцией может что-то сказать про "скорость открытия ордеров сервером". Только это вот вряд-ли нужно..
Если вручную, то во вкладке "Журнал" окна терминал.
Если программно, то так:
Но это непостоянная величина. Можно говорить лишь о средней продолжительности на основании N операций.Игорь, весь журнал просмотрели, но скорость в журнал похоже в МТ4 не пишется. Может, она как-то отдельно включается для отображения?
замерить время с максимальной точностью непосредственно перед OrderSend (t1) и сразу после (t2). Разницу поделить пополам и посчитать статистики - это примерно время реакции (лучшее/худшее/типичное/прочее) на которое можно полагаться.
Большая статистика (весьма, потому что сравниваем секунды и милли/микро секунды и выход за пределы секунд) между t1 и OrderOpenTime и её расхождение с лучшей реакцией может что-то сказать про "скорость открытия ордеров сервером". Только это вот вряд-ли нужно..
Максим, спасибо за совет! Не сочтите за лень, но есть ли более быстрый, автоматический способ просматривать данный показатель?
Игорь, весь журнал просмотрели, но скорость в журнал похоже в МТ4 не пишется. Может, она как-то отдельно включается для отображения?
Как это не пишется? Вот пример с моего журнала:
0 10:01:01.189 '12752745': instant order sell 0.10 USDCAD at 1.33662 sl: 0.00000 tp: 0.00000 0 10:01:01.532 '12752745': order was opened : #571228348 sell 0.10 USDCAD at 1.33665 sl: 0.00000 tp: 0.00000
Здесь видно, что ордер был открыт за 343 мс.
Может Вы ордер забыли открыть?
Максим, спасибо за совет! Не сочтите за лень, но есть ли более быстрый, автоматический способ просматривать данный показатель?
Один раз подменить штатную функцию OrderSend своей, которая делает ещё и замеры.
// если не использовать свой класс, то так вот int myOrderSend(...) { int result=false; ulong t1=GetMicrosecоndCount(); // замерить время раз result=::OrderSend(...); // вызвать оригинальную функцию ulong r2=GetMicrosecondCount(); // замерить время два ulong mcs=MicrosecondsBetween(t1,t2); // посчитать разницу if (result>=0) PushToStat(_Symbol,OrderType,mcs); // сохранить в статистику return result; // отдать результат оригинала } // подменить например через дефайны #define OrderSend(.....) myOrderSend(.....)
- www.mql5.com
Дома 3,1 гГц Ping = 52,65
2020.08.07 10:35:51.505: order was opened : #8139 = 200 мс
2020.08.07 10:35:51.305: order buy market
2020.08.07 10:35:09.486: order was opened : #8091 = 220 мс
2020.08.07 10:35:09.266: order buy market
2020.08.07 10:35:02.938: order was opened : #8083 = 190 мс
2020.08.07 10:35:02.748: order buy market
2020.08.07 10:34:18.096: order was opened : #8002 = 195 мс
2020.08.07 10:34:17.901: order buy market
Среднее = 201,25
VPS 2,4 гГц Ping = 8,72
2020.08.07 10:30:01.901: order was opened : #7690 = 156 мс
2020.08.07 10:30:01.745: order sell market
2020.08.07 10:29:07.445: order was opened : #7545 = 187 мс
2020.08.07 10:29:07.258: order sell market
2020.08.07 10:22:15.915: order was opened : #7019 = 188 мс
2020.08.07 10:22:15.727: order sell market
2020.08.07 10:20:33.813: order was opened : #6866 = 187 мс
2020.08.07 10:20:33.626: order sell market
Среднее = 179,5
Разность = 21,75
(Ping1 - Ping2)/2 = (52,65-8,72)/2 = 43,93/2 = 21,965
Вывод: счет открывается на сервере и сообщение об этом
приходит на терминал с задержкой в половину пинга.
А первое сообщение формирует термина или сервер?
Провел эксперимент: один и тот же счет открыл на домашнем компьютере и ВПС
Дома 3,1 гГц Ping = 52,65
2020.08.07 10:35:51.505: order was opened : #8139 = 200 мс
2020.08.07 10:35:51.305: order buy market
2020.08.07 10:35:09.486: order was opened : #8091 = 220 мс
2020.08.07 10:35:09.266: order buy market
2020.08.07 10:35:02.938: order was opened : #8083 = 190 мс
2020.08.07 10:35:02.748: order buy market
2020.08.07 10:34:18.096: order was opened : #8002 = 195 мс
2020.08.07 10:34:17.901: order buy market
Среднее = 201,25
VPS 2,4 гГц Ping = 8,72
2020.08.07 10:30:01.901: order was opened : #7690 = 156 мс
2020.08.07 10:30:01.745: order sell market
2020.08.07 10:29:07.445: order was opened : #7545 = 187 мс
2020.08.07 10:29:07.258: order sell market
2020.08.07 10:22:15.915: order was opened : #7019 = 188 мс
2020.08.07 10:22:15.727: order sell market
2020.08.07 10:20:33.813: order was opened : #6866 = 187 мс
2020.08.07 10:20:33.626: order sell market
Среднее = 179,5
Разность = 21,75
(Ping1 - Ping2)/2 = (52,65-8,72)/2 = 43,93/2 = 21,965
Вывод: счет открывается на сервере и сообщение об этом
приходит на терминал с задержкой в половину пинга.
А первое сообщение формирует термина или сервер?
по барабану - если внимательно глянуть, то тайминги одинаковы. На vps нарисовано красивое число в пинг, но на скорость оно не сказалось
Максим, благодарим за помощь! Успехов!
по барабану - если внимательно глянуть, то тайминги одинаковы. На vps нарисовано красивое число в пинг, но на скорость оно не сказалось
Пинг нарисовалось автоматически:
Величина Пинг зависит от взаимного расположения сервера брокера и компьютера или VPS с терминалом.
Пинг - это время передачи пакета от терминала к серверу и обратно. В одну сторону это пинг/2
От пинг/2 и зависит время, через которое откроется ордер после команды с терминала
А вот время реакции робота на терминале на изменение цены будет зависеть целиком от Пинг: через Пинг/2 робот узнает об изменении цены и еще через Пинг/2 сервер узнает о действии робота
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования