Andrey Khatimlianskii: Все правильно, сетевая задержка. И ордер долго отправляется (или получается подтверждение), и событие теряется.
Нет, не правильно!
1. Это не "сетевая" задержка, а задержка сервера МТ5 (может быть железа брокера)
2. TradeTransaction НЕ всегда теряется (ИНОГДА), как видно выше, задержка была 409 ms, а событие не потерялось
Поэтому-то я и утверждаю, что в задержках виновата не сеть, а сервер МТ5 (железо брокера).
Время ожидания ответа сервера функции CheckOrders() составляет от 700 до 1200 мс (в зависимости
в какой момент таймера (период 500 мс) была отослана команда), что в 100 раз больше времени работы (в моей конфигурации) в обычном режиме ( 7-9 мс )
Тот факт, что при задержке в 18 мс событие потерялось, а при 409 мс - нет, как раз и позволяет говорить, что это "косяк" сервера МТ5, а не другие
причины.
И еще... Моий приятель, живёт в моём доме, торгует на двух терминалах моим роботом через моего провайдера через тот же роутер в доме, и почему-то у него
в это время не было задержек!
2015.10.2214:14:05.041 Trades 'xxxxx': modify order #22486145 buy limit 2.00 ED-6.16 at 1.1326 sl: 0.0000 tp: 0.0000 -> 1.1332, sl: 0.0000 tp: 0.00002015.10.2214:14:05.049 Trades 'xxxxx': modify order #22486145 buy limit 2.00 ED-6.16 at 1.1326 sl: 0.0000 tp: 0.0000 -> 1.1332, sl: 0.0000 tp: 0.0000 placed for execution in8 ms
2015.10.2214:14:38.389 Trades 'xxxxx': cancel order #22486314 sell limit 2.00 Eu-12.16 at 828672015.10.2214:14:38.397 Trades 'xxxxx': cancel order #22486314 sell limit 2.00 Eu-12.16 at 82867 placed for execution in8 ms
То естьоткрываем позициюордером, закрываем ее обратным ордером, смотрим объем позиции в результате.
Ожидается 0 (ноль), имеем 1 (один). Логи ниже (начало внизу).
2015.10.2716:28:11.4762015.10.2610:05:08ExpertRemove() function called
2015.10.2716:28:11.4652015.10.2610:03:14 INFO>> *** VOLUME=1.0 *** ID=2 *** TYPE=POSITION_TYPE_SELL *** OrdersTotal()=02015.10.2716:28:11.4502015.10.2610:01:47 CLOSE Volume=1.02015.10.2716:28:11.4502015.10.2610:01:47 CLOSE OrdersTotal()=02015.10.2716:28:11.4502015.10.2610:01:47 CLOSE Deal=32015.10.2716:28:11.4502015.10.2610:01:47 CLOSE Order=32015.10.2716:28:11.4502015.10.2610:01:47 CLOSE Retcode=100092015.10.2716:28:11.4502015.10.2610:01:47 CLOSE OrderSend=true2015.10.2716:28:11.4492015.10.2610:01:47 order performed buy 1.00 at 9249 [#3buy 1.00 SBRF-12.15 at 9249]
2015.10.2716:28:11.4492015.10.2610:01:47 deal performed [#3buy 1.00 SBRF-12.15 at 9249]
2015.10.2716:28:11.4492015.10.2610:01:47 deal #3buy 1.00 SBRF-12.15 at 9249 done (based on order #3)
2015.10.2716:28:11.4492015.10.2610:01:47 exchange buy 1.00 SBRF-12.15 at 9249 (9242 / 9249 / 9242)
2015.10.2716:28:11.4492015.10.2610:01:47 CLOSE>> *** VOLUME=1.0 *** ID=2 *** TYPE=POSITION_TYPE_SELL *** OrdersTotal()=02015.10.2716:28:11.4222015.10.2610:00:57 order performed sell 1.00 at 9205 [#2sell stop 1.00 SBRF-12.15 at 9205]
2015.10.2716:28:11.4222015.10.2610:00:57 deal performed [#2sell 1.00 SBRF-12.15 at 9205]
2015.10.2716:28:11.4222015.10.2610:00:57 deal #2sell 1.00 SBRF-12.15 at 9205 done (based on order #2)
2015.10.2716:28:11.4222015.10.2610:00:57 order [#2sell stop 1.00 SBRF-12.15 at 9205] triggered
2015.10.2716:28:11.4222015.10.2610:00:57 OPEN Volume=0.02015.10.2716:28:11.4222015.10.2610:00:57 OPEN OrdersTotal()=12015.10.2716:28:11.4222015.10.2610:00:57 OPEN Deal=02015.10.2716:28:11.4222015.10.2610:00:57 OPEN Order=22015.10.2716:28:11.4222015.10.2610:00:57 OPEN Retcode=100092015.10.2716:28:11.4222015.10.2610:00:57 OPEN OrderSend=true2015.10.2716:28:11.4222015.10.2610:00:57 sell stop 1.00 SBRF-12.15 at 9205 (9205 / 9227 / 9205)
2015.10.2716:28:11.4222015.10.2610:00:57 OPEN>> *** VOLUME=0.0 *** ID=0 *** TYPE=POSITION_TYPE_BUY *** OrdersTotal()=02015.10.2716:28:11.344 SBRF-12.15,M1: testing of Experts\Projects\CoinAge5\Helper_v01\mq5\Tst\TST006_Open_Close_Positions_001.ex5 from 2015.10.2600:00 to 2015.10.2700:00 started
Нет, не проще. Так я разбираюсь со своим кодом, а в Вашем варианте мне пришлось бы анализировать библиотеку написанную не мной. Если Вы загляните внутрь этой библиотеки, то обнаружите там примерно такой же набор операций как у меня. Поэтому я сначала хочу разобраться с механизмом выставления ордеров на ФОРТС, а уже затем, возможно, использовать стандартные библиотеки.
Все правильно, сетевая задержка. И ордер долго отправляется (или получается подтверждение), и событие теряется.
Нет, не правильно!
1. Это не "сетевая" задержка, а задержка сервера МТ5 (может быть железа брокера)
2. TradeTransaction НЕ всегда теряется (ИНОГДА), как видно выше, задержка была 409 ms, а событие не потерялось
Поэтому-то я и утверждаю, что в задержках виновата не сеть, а сервер МТ5 (железо брокера).
Время ожидания ответа сервера функции CheckOrders() составляет от 700 до 1200 мс (в зависимости
в какой момент таймера (период 500 мс) была отослана команда), что в 100 раз больше времени работы (в моей конфигурации) в обычном режиме ( 7-9 мс )
Тот факт, что при задержке в 18 мс событие потерялось, а при 409 мс - нет, как раз и позволяет говорить, что это "косяк" сервера МТ5, а не другие
причины.
И еще... Моий приятель, живёт в моём доме, торгует на двух терминалах моим роботом через моего провайдера через тот же роутер в доме, и почему-то у него
в это время не было задержек!
Михаил, не редактируйте, пожалуйста, посты. Лучше добавляйте новые, чтоб обновления не приходилось выискивать глазами.
Чиго?
В скрипте перед удалением на каждый ордер делается OrderSelect и если он выбрался - значит он не в истории и активный, какие ошибки?
После удаления одного ордера номера оставшихся необработанных смещаются на 1.
Михаил, давай что-ли очередную "простыню" с задержками, а то что-то скучно стало. :))))
Когда в Открытие поедешь? :)))))))
Есть следующий код:
То есть открываем позицию ордером, закрываем ее обратным ордером, смотрим объем позиции в результате.
Ожидается 0 (ноль), имеем 1 (один). Логи ниже (начало внизу).
В чем причина?
Вот есть вопрос у меня, к знатокам. Как обнулить позицию? (ФОРТС, Открытие-Брокер, Реал)
Есть следующий код:
То есть открываем позицию ордером, закрываем ее обратным ордером, смотрим объем позиции в результате.
Ожидается 0 (ноль), имеем 1 (один). Логи ниже (начало внизу).
В чем причина?
А не проще:
?
В чем причина?
А не проще:
?
Нет, не проще. Так я разбираюсь со своим кодом, а в Вашем варианте мне пришлось бы анализировать библиотеку написанную не мной. Если Вы загляните внутрь этой библиотеки, то обнаружите там примерно такой же набор операций как у меня. Поэтому я сначала хочу разобраться с механизмом выставления ордеров на ФОРТС, а уже затем, возможно, использовать стандартные библиотеки.