импорт транзакций

Страницы: 1
RSS
импорт транзакций, Время исполнения
 
Здравствуйте.
В каком случае время выполнения транзакции меньше: методом Trans2QuikAPI либо  используя текстовые файлы .tri, .tro, trr?
 
Цитата
Алексей Смирнов написал:
Здравствуйте.
В каком случае время выполнения транзакции меньше: методом Trans2QuikAPI либо  используя текстовые файлы .tri, .tro, trr?
первый способ заметно быстрее.

механизм tri/tro сканирует файлы через определенное время. Поэтому всегда будет задержка перед исполнением транкзакции
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Уважаемый, s_mike@rambler
а как проверить Ваше утверждение?
 
Цитата
Алексей Смирнов написал:
Уважаемый,  s_mike@rambler
а как проверить Ваше утверждение?
написать два теста с замером времени ))))
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
Алексей Смирнов написал:
Здравствуйте.
В каком случае время выполнения транзакции меньше: методом Trans2QuikAPI либо  используя текстовые файлы .tri, .tro, trr?
У меня ассинронная отправка ордеров через Trans2QuikAPI, посылая первый приказ, ожидается ответ и по приходу ответа
совершается вторая сделка. Интернет 100 Мб. Брокер - Открывашка
Задержка между сделками - 250 - 300 мс (для сравнения , с этого же компьютера, в МТ5 - 7-8 мс)
 
Цитата
Михаил Филимонов написал:
Задержка между сделками - 250 - 300 мс (для сравнения , с этого же компьютера, в МТ5 - 7-8 мс)
Мне вот интересно (ну так, для себя, чисто поржать), МТ5 через 8мс отвечает - а это время когда уже выставлена заявка? Или просто когда функция выставления заявки вернулась?

И в квике 300 - это между чем и чем?
Подали транзакцию - получили асинхронный ответ?
Или подали - получили OnOrder?

Просто в первом случае заявки еще может не быть, во втором она точно есть.

В МТ5 также? Когда функция вернулась - уже есть заявка?
 
Цитата
Михаил Филимонов написал:
Цитата
Алексей Смирнов написал:
Здравствуйте.
В каком случае время выполнения транзакции меньше: методом Trans2QuikAPI либо  используя текстовые файлы .tri, .tro, trr?
У меня ассинронная отправка ордеров через Trans2QuikAPI, посылая первый приказ, ожидается ответ и по приходу ответа
совершается вторая сделка. Интернет 100 Мб. Брокер - Открывашка
Задержка между сделками - 250 - 300 мс (для сравнения , с этого же компьютера, в МТ5 - 7-8 мс)
8 мсек в метатрейдере - это время постановки транзакции в очередь на отправку от терминала к серверу. Транзакция ещё находится  у вас в терминале ожидает отправки, а управление снова отдано скрипту.  
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
Михаил Филимонов написал:
посылая первый приказ, ожидается ответ и по приходу ответасовершается вторая сделка. Интернет 100 Мб. Брокер - Открывашка
пинг до сервера замерял? :)  
 
Цитата
s_mike@rambler.ru написал:
Цитата
8 мсек в метатрейдере - это время постановки транзакции в очередь на отправку от терминала к серверу. Транзакция ещё находится  у вас в терминале ожидает отправки, а управление снова отдано скрипту.
Не нужно фантазировать. В МТ5, 8 мс - это с момента время отправки транзакци  + время получения ответа от сервера:

Реал

2019.02.06 18:27:25.902 Trades 'xxxxx': cancel order #99190769 sell limit 1.00 SNGR-6.19 at 28521
2019.02.06 18:27:25.908 Trades 'xxxxx': accepted cancel order #99190769 sell limit 1.00 SNGR-6.19 at 28521
2019.02.06 18:27:25.909 Trades 'xxxxx': cancel order #99190769 sell limit 1.00 SNGR-6.19 at 28521 placed for execution in 7.386 ms
 
Михаил.

выше уже писали про замер пинга до сервера. Вряд ли время пинга будет 6 миллисекунд, если вы не медью с сервером соединены )

померьте и сделайте вывод.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
s_mike@rambler.ru написал:
Михаил.

выше уже писали про замер пинга до сервера. Вряд ли время пинга будет 6 миллисекунд, если вы не медью с сервером соединены )

померьте и сделайте вывод.
У меня нет нужды сравнивать Квик с МТ5 - вывод очевиден (оба оставляют желать лучшего).
Но с точки зрения создания торговых роботов второй на несколько порядков выше первого, да и скорость
исполнения торговых приказов во втором гораздо выше.
Но ни в первом, ни во втором невозможно КАЧЕСТВЕННО торговать роботами на MOEX
Приходится из г...на шарики катать :)

P.S как на этом сайте вставить изображение?
 
Цитата
Михаил Филимонов написал:
Не нужно фантазировать. В МТ5, 8 мс - это с момента время отправки транзакци  + время получения ответа от сервера:

Приложите соответствующий тому логу кусок кода?
Можно в личку
 
Здравствуйте, Михаил Филимонов.
Загрузить изображение можно перенеся файл изображение в поле под полем ввода сообщения.
QUIK clients support
 
Цитата
Imersio Arrigo написал:
Цитата
Приложите соответствующий тому логу кусок кода?
Можно в личку

А что это Вам даст?

//+------------------------------------------------------------------+
//| Place order                                                      |
//+------------------------------------------------------------------+
void COrder::Place(const double price, const double volume, const bool buy_sell)
{
 MqlTradeRequest request = {0};
 MqlTradeResult  result  = {0};
 ticket = 0;
 req_id = 0;
 mem_magic = magic_storage + 1;
 check_count = 0;
 if(magic_storage >= (magic_number + 65530)) mem_magic = magic_number;
//--- Fill structure
 request.action = TRADE_ACTION_PENDING;
 request.magic  = mem_magic;
 request.symbol = a_symbol;
 request.volume = volume;
 request.price  = price;
 if(buy_sell)
 {
   request.type = ORDER_TYPE_BUY_LIMIT;
 }
 else
 {
   request.type = ORDER_TYPE_SELL_LIMIT;
 }
 request.comment = "Отложенный ордер...";      
 request.type_filling = ORDER_FILLING_RETURN;
 request.type_time = ORDER_TIME_DAY;
//--- Send order
 if(OrderSendAsync(request, result) == true)
 {
   if((result.retcode == TRADE_RETCODE_PLACED) || (result.retcode == TRADE_RETCODE_DONE))
   {
     req_id = result.request_id;
     magic_storage = mem_magic;
     state = ORD_DO_SET;
     mem_time = GetMicrosecondCount();
     mem_start_time = TimeCurrent();
     SetTransCount();
   }
   else
   {
     mem_magic = 0;
     mem_time = 0;
     mem_start_time = 0;
     CheckError(result.retcode, "Place: Ордер не установлен! Причина: ", order_status, ticket);
   }
 }
 else
 {
   mem_magic = 0;
   mem_time = 0;
   mem_start_time = 0;
   CheckError(result.retcode, "Place: Ордер не отослан! Причина: ", order_status, ticket);
 }
}
 
Цитата
новичок написал:
Цитата
пинг до сервера замерял? :)  
 
Цитата
Александр Копяткевич написал:
Здравствуйте, Михаил Филимонов.
Загрузить изображение можно перенеся файл изображение в поле под полем ввода сообщения.
Спасибо
 
Цитата
Михаил Филимонов написал:
Цитата
новичок написал:
   пинг до сервера замерял? :)  
ну и как при этом может получиться отправка сигнала, обработка его на сервере и обратный возврат ответа за 7 миллисекунд?
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
s_mike@rambler.ru написал:
Цитата
Михаил Филимонов написал:
 
Цитата
новичок  написал:
   пинг до сервера замерял? :)  
 
ну и как при этом может получиться отправка сигнала, обработка его на сервере и обратный возврат ответа за 7 миллисекунд?
Ну, а как пинг до роутера 1 мс?
 
И он спрашивал не про МТ5, а про КВИК
 
Пинг от вашего устройства до роутера и должен быть менее одной миллисекунды, если локальная сеть не перегружена.

а дальше вы свистнул собаке, которая бегает в поле. Она оглянулась через то время, что на вашем трасерт скриншоте. Она только оглянулась, а уже больше 7 миллисекунд, а ей ещё прибежать к вам надо.

поэтоик не принимайте на веру циферки, что вам рисует метатрейдер. Они означают другое, чем вы думаете.
www.bot4sale.ru

Пасхалочка для Алексея Иванникова: https://forum.quik.ru/messages/forum10/message63088/topic7052/#message63088
 
Цитата
s_mike@rambler.ru написал:
не принимайте на веру циферки, что вам рисует метатрейдер. Они означают другое, чем вы думаете.
Что Вы хотите сказать (доказать)?
Что одна глюкавка лучше другой?
Мне ничего рассазывать (доказывать) не нужно я и программирую и торгую (на реале) в обоих
терминалах не один год. И как они работаю мне прекрано известно.
 
Цитата
Михаил Филимонов написал:
Цитата
   s_mike@rambler.ru написал:
не принимайте на веру циферки, что вам рисует метатрейдер. Они означают другое, чем вы думаете.
Что Вы хотите сказать (доказать)?
Что одна глюкавка лучше другой?
Мне ничего рассазывать (доказывать) не нужно я и программирую и торгую (на реале) в обоих
терминалах не один год. И как они работаю мне прекрано известно.
это выглядит как упоротость.

тебе говорят, что твой раундтрип до сервера около 10 мс

тебе говорят, что МТ пишет что-то, что не может происходить в реальности

адекватный технарь задумался бы, ты - машешь руками и брызгаешь слюнями

"выпей отвар их трав " (с)
 
Цитата
Михаил Филимонов написал:
А что это Вам даст?
Понять хочу как ведётся замер.
в этом куске не вижу строк выдающих логи:
Цитата
Михаил Филимонов написал:
2019.02.06 18:27:25.902 Trades 'xxxxx': cancel order #99190769 sell limit 1.00 SNGR-6.19 at 285212019.02.06 18:27:25.908 Trades 'xxxxx': accepted cancel order #99190769 sell limit 1.00 SNGR-6.19 at 28521
я нехочу наехать или оскорбить, я хочу лишь понять.
Просто воплей о том что МТ работает супер быстро миллион а по факту оказывается что люди замеряют время возврата из OrderSendAsync :)

Забегая вперёд, хочу сказать что раунд-трип это не просто время ответа сервера. Это время маршрута тернимал-сервер-биржа-сервер-терминал.
И 7 мс мне кажутся очень подозрительными.
 
Цитата
Imersio Arrigo написал:
Цитата
Михаил Филимонов написал:
А что это Вам даст?
Понять хочу как ведётся замер.
в этом куске не вижу строк выдающих логи:
Цитата
Михаил Филимонов написал:
2019.02.06 18:27:25.902 Trades 'xxxxx': cancel order #99190769 sell limit 1.00 SNGR-6.19 at 285212019.02.06 18:27:25.908 Trades 'xxxxx': accepted cancel order #99190769 sell limit 1.00 SNGR-6.19 at 28521
я нехочу наехать или оскорбить, я хочу лишь понять.
Просто воплей о том что МТ работает супер быстро миллион а по факту оказывается что люди замеряют время возврата из OrderSendAsync :)

Забегая вперёд, хочу сказать что раунд-трип это не просто время ответа сервера. Это время маршрута тернимал-сервер-биржа-сервер-терминал.
И 7 мс мне кажутся очень подозрительными.
Да вообще по-барабану сколько мс 7-15 мс.
Я вообще не собирался что-то доказывать и измерять.
Просто к слову сказал, то что я сам вижу в обоих терминалах.
На мой взляд МТ5 работает гораздо быстрее, но он имеет очень много
"своих" недостатков (н-р только фьючерсы). К слову будет сказано, что лично
у меня больше претензий имеено к МТ5 нежели к квик, но последний (как платформа для роботов) ....
 
Цитата
Imersio Arrigo написал:
Цитата
Михаил Филимонов написал:
А что это Вам даст?
Понять хочу как ведётся замер.
в этом куске не вижу строк выдающих логи:
Цитата
Михаил Филимонов написал:
2019.02.06 18:27:25.902 Trades 'xxxxx': cancel order #99190769 sell limit 1.00 SNGR-6.19 at 285212019.02.06 18:27:25.908 Trades 'xxxxx': accepted cancel order #99190769 sell limit 1.00 SNGR-6.19 at 28521
я нехочу наехать или оскорбить, я хочу лишь понять.
Просто воплей о том что МТ работает супер быстро миллион а по факту оказывается что люди замеряют время возврата из OrderSendAsync :)

Забегая вперёд, хочу сказать что раунд-трип это не просто время ответа сервера. Это время маршрута тернимал-сервер-биржа-сервер-терминал.
И 7 мс мне кажутся очень подозрительными.
Если Вы программировали в МТ5 (тогда будет понятен смысл моих слов), то лично для Вас (из принципа) могу сделать коректный замер.
Т.е сделаю GetMicrosecondCount(); перед отправкой ассинхронного ордера, и GetMicrosecondCount(); когда придет ответ от cервера
в OnTradeTransaction(). Я раньше это делал (у меня получалось 5-9 мс)
 
Цитата
Михаил Филимонов написал:
Да вообще по-барабану сколько мс 7-15 мс
да мне по большому счёту тоже. Просто интересно.
Цитата
Михаил Филимонов написал:
Если Вы программировали в МТ5 (
в 4. Но понятие о работе асинхронных вызовов имею.
 
Цитата
Imersio Arrigo написал:
Цитата
в 4. Но понятие о работе асинхронных вызовов имею.
в 4 не было OnTradeTransaction() многое изменилось...
 
Цитата
Михаил Филимонов написал:
4 не было OnTradeTransaction() многое изменилось
Я понимаю )) поэтому и спрашиваю.
Неохота самому разбираться и пробовать.
 
Цитата
Imersio Arrigo написал:
Цитата
Михаил Филимонов написал:
4 не было OnTradeTransaction() многое изменилось
Я понимаю )) поэтому и спрашиваю.
Неохота самому разбираться и пробовать.
*)*)
MT5
2019.02.07 12:12:59.299 Trades 'ххххх': buy limit 2.00 LKOH-9.19 at 54273
2019.02.07 12:12:59.308 Trades 'ххххх': accepted buy limit 2.00 LKOH-9.19 at 54273
2019.02.07 12:12:59.309 Trades 'ххххх': buy limit 2.00 LKOH-9.19 at 54273 placed for execution in 10.614 ms

Советник
Print(__FUNCTION__, " Ордер ", trans.order, " размещен за ", DoubleToString(NormalizeDouble(MathAbs((stop_time_test - start_time_test) /1000), 3)));

2019.02.07 12:12:59.316 FCS_Trader (LKOH-6.19,M1) OnTradeTransaction Ордер 99220131 размещен за 17.00000000
 
Цитата
новичок написал:
Цитата
Михаил Филимонов написал:
 
Цитата
это выглядит как упоротость.

тебе говорят, что твой раундтрип до сервера около 10 мс

тебе говорят, что МТ пишет что-то, что не может происходить в реальности

адекватный технарь задумался бы, ты - машешь руками и брызгаешь слюнями

"выпей отвар их трав " (с)
Модераторы!
Немного странно, что Вы становитесь на сторону откровенного хама, удаляя сообщение одной из сторон.
Может быть Вам не нравятся не лестные отзывы о Вашем "детище"?
 
Цитата
Михаил Филимонов написал:
Цитата
новичок написал:
 
Цитата
Михаил Филимонов  написал:
 это выглядит как упоротость.

тебе говорят, что твой раундтрип до сервера около 10 мс

тебе говорят, что МТ пишет что-то, что не может происходить в реальности

адекватный технарь задумался бы, ты - машешь руками и брызгаешь слюнями

"выпей отвар их трав " (с)
Модераторы!
Немного странно, что Вы становитесь на сторону откровенного хама, удаляя сообщение одной из сторон.
Может быть Вам не нравятся не лестные отзывы о Вашем "детище"?
вот именно!

пс: Мишаня, ты со мной примерно в одной временной линии, ткчт в зеркало глянь таки.
ппс: поменьше углеводов :))
 
Цитата
новичок написал:
Цитата
Михаил Филимонов написал:
 
Цитата
новичок  написал:
 
Цитата
 Михаил Филимонов   написал:
вот именно!

пс: Мишаня, ты со мной примерно в одной временной линии, ткчт в зеркало глянь таки.
ппс: поменьше углеводов :))
Я, тебе хам, не Мишаня!
Поучи свою жену ЩИ варить, а я уж как-нибудь сам разбурусь куда мне
смотреть и что делать!
 
Цитата
Михаил Филимонов написал:
Цитата
новичок написал:
 
Цитата
Михаил Филимонов  написал:
 это выглядит как упоротость.

тебе говорят, что твой раундтрип до сервера около 10 мс

тебе говорят, что МТ пишет что-то, что не может происходить в реальности

адекватный технарь задумался бы, ты - машешь руками и брызгаешь слюнями

"выпей отвар их трав " (с)
Модераторы!
Немного странно, что Вы становитесь на сторону откровенного хама, удаляя сообщение одной из сторон.
Может быть Вам не нравятся не лестные отзывы о Вашем "детище"?
Добрый день.

Мы не становимся на чью-либо сторону, и призываем вести диалог в позитивной и взаимоуважительной форме. Мы всегда весьма толерантно относимся к участникам обсуждения, несмотря на, в том числе, "не лестные отзывы о нашем детище". В то же время если кто-то думает, что мы постесняемся применить к нему меры карательного воздействия - то он сильно ошибается. Поэтому настоятельно рекомендуем участникам обсуждения снизить накал дискуссии.
 
Цитата
Михаил Филимонов написал:
Цитата
Imersio Arrigo написал:
 
Цитата
Михаил Филимонов  написал:
4 не было OnTradeTransaction() многое изменилось
 Я понимаю )) поэтому и спрашиваю.
Неохота самому разбираться и пробовать.
*)*)
MT5
2019.02.07 12:12:59.299 Trades 'ххххх': buy limit 2.00 LKOH-9.19 at 54273
2019.02.07 12:12:59.308 Trades 'ххххх': accepted buy limit 2.00 LKOH-9.19 at 54273
2019.02.07 12:12:59.309 Trades 'ххххх': buy limit 2.00 LKOH-9.19 at 54273 placed for execution in 10.614 ms

Советник
Print(__FUNCTION__, " Ордер ", trans.order, " размещен за ", DoubleToString(NormalizeDouble(MathAbs((stop_time_test - start_time_test) /1000), 3)));

2019.02.07 12:12:59.316 FCS_Trader (LKOH-6.19,M1) OnTradeTransaction Ордер 99220131 размещен за 17.00000000
Сегодня попробовал сделать то же самое в КВИКе
Вот что получилось

Правда, конец измерения приходится не на колбэк TRANS2QUIK_TRADE_STATUS_CALLBACK
а на TRANS2QUIK_ORDER_STATUS_CALLBACK, т.к в первом случае мы получаем несколько сообщений,
а во втором просто проверяем nStatus

Но самое интересное не в этом. У меня в Открывашке на реале стоит квик 7.19.0.51
Если посмотреть время выставления ордеров (ассинхронные ордера) и время их исполнения, то из этих данных
вообще ничго понять не возможно (время одинаковое)
 
Цитата
Михаил Филимонов написал:
Если посмотреть время выставления ордеров (ассинхронные ордера) и время их исполнения, то из этих данныхвообще ничго понять не возможно (время одинаковое)
Заявки рыночные? (Или по цене сильно хуже стакана?)
Если да, то нормально, что выставленная заявка была мгновенно исполнена. не?

Покажите эти же таблицы, но где видно цену заявки.

И эта, время ответа колбека, в общем случае, не равно времени выставления/исполнения.
Т.е. заявка может быть исполнена мгновенно, а колбек вызван через полсекунды.

Это происходит потому что время выставления/исполнения выставляется биржей, а вызов колбека зависит от потока которым присылает сервер квик в термниал, и от того насколько собственно терминал тормозит.
 
Цитата
Imersio Arrigo написал:
Цитата
Михаил Филимонов написал:
Если посмотреть время выставления ордеров (ассинхронные ордера) и время их исполнения, то из этих данныхвообще ничго понять не возможно (время одинаковое)
Заявки рыночные? (Или по цене сильно хуже стакана?)
Если да, то нормально, что выставленная заявка была мгновенно исполнена. не?

Покажите эти же таблицы, но где видно цену заявки.

И эта, время ответа колбека, в общем случае, не равно времени выставления/исполнения.
Т.е. заявка может быть исполнена мгновенно, а колбек вызван через полсекунды.

Это происходит потому что время выставления/исполнения выставляется биржей, а вызов колбека зависит от потока которым присылает сервер квик в термниал, и от того насколько собственно терминал тормозит.
Вы хоть когда-нибудь торговали?
Что значит мгновенно? Так вообще не бывает да же на FIX, Plaza II и пр.
Не фантазируйте, пожалуйста!
 
Цитата
Михаил Филимонов написал:
Вы хоть когда-нибудь торговали?
Не, зачем это мне. Я только советы на форуме раздаю. Бесплатные.

Еще раз: скриншоты таблиц с ценами на которых видна описываемая ситуация?
Без них продолжать дискурс считаю бессмысленным.
 
Цитата
Imersio Arrigo написал:
Цитата
Не, зачем это мне. Я только советы на форуме раздаю. Бесплатные.

Еще раз: скриншоты таблиц с ценами на которых видна описываемая ситуация?
Без них продолжать дискурс считаю бессмысленным.
Я не сохранил скрины полностью таблиц.
Фьючерс выставлялся лимитником (т.е цена не могла изменится).
outStr:= 'ACCOUNT=' + ExpData.FutAccaunt + '; TYPE=L; TRANS_ID=' + id +
          '; CLASSCODE=' + ExpData.FutData.ClassCode + '; SECCODE=' +
          ExpData.FutData.SecCode + '; ACTION=NEW_ORDER; OPERATION=' + s +
          '; EXECUTION_CONDITION=KILL_BALANCE' + '; PRICE=' + FloatToStr(price) +
          '; QUANTITY=' + FloatToStr(Qnty) + ';';
Страницы: 1
Читают тему
Наверх