ФОРТС. Вопросы по исполнению - страница 9

 
Renat:
Это терминал 1060, а сервер все еще 1035.
Понято))
 

Добрый день, Ренат!

Проектируя "аварийный" режим отслеживания ордера (на случай если не придёт событие OnTradeTransaction),

я обнаружил, что РЫНОЧНЫЙ ордер, появляется в истории БОЛЕЕ, чем через 3 СЕКУНДЫ:

CN      0       07:10:26.424    History_bug (Eu-3.15,H1)        Ордер отослан =  2015.02.10 07:10:26
CE      0       07:10:26.424    History_bug (Eu-3.15,H1)        Уникальный номер ордера (mem_magic) = 1010000
CG      0       07:10:27.554    History_bug (Eu-3.15,H1)        Время ожидания составило = 1138 мсек
NN      0       07:10:27.554    History_bug (Eu-3.15,H1)        CheckOrders: Не получен билет ордера!
JD      0       07:10:29.328    History_bug (Eu-3.15,H1)        Ордер отослан =  2015.02.10 07:10:29
DK      0       07:10:29.328    History_bug (Eu-3.15,H1)        Уникальный номер ордера (mem_magic) = 1010001
EP      0       07:10:30.596    History_bug (Eu-3.15,H1)        Время ожидания составило = 1279 мсек
RE      0       07:10:30.596    History_bug (Eu-3.15,H1)        CheckOrders: Не получен билет ордера!
KJ      0       07:10:41.112    History_bug (Eu-3.15,H1)        Ордер отослан =  2015.02.10 07:10:41
LQ      0       07:10:41.112    History_bug (Eu-3.15,H1)        Уникальный номер ордера (mem_magic) = 1010000
GJ      0       07:10:43.123    History_bug (Eu-3.15,H1)        Время ожидания составило = 2012 мсек
HK      0       07:10:43.123    History_bug (Eu-3.15,H1)        CheckOrders: Не получен билет ордера!
IQ      0       07:10:46.176    History_bug (Eu-3.15,H1)        Ордер отослан =  2015.02.10 07:10:46
LG      0       07:10:46.176    History_bug (Eu-3.15,H1)        Уникальный номер ордера (mem_magic) = 1010001
DD      0       07:10:48.193    History_bug (Eu-3.15,H1)        Время ожидания составило = 2028 мсек
LQ      0       07:10:48.193    History_bug (Eu-3.15,H1)        CheckOrders: Не получен билет ордера!
EG      0       07:10:58.440    History_bug (Eu-3.15,H1)        Ордер отослан =  2015.02.10 07:10:58
NL      0       07:10:58.440    History_bug (Eu-3.15,H1)        Уникальный номер ордера (mem_magic) = 1010000
NN      0       07:11:01.531    History_bug (Eu-3.15,H1)        Время ожидания составило = 3104 мсек
PG      0       07:11:01.531    History_bug (Eu-3.15,H1)        CheckOrders: Не получен билет ордера!
DM      0       07:11:06.359    History_bug (Eu-3.15,H1)        Ордер отослан =  2015.02.10 07:11:06
NR      0       07:11:06.359    History_bug (Eu-3.15,H1)        Уникальный номер ордера (mem_magic) = 1010001
RG      0       07:11:09.649    History_bug (Eu-3.15,H1)        Время ожидания составило = 3292 мсек
HN      0       07:11:09.649    History_bug (Eu-3.15,H1)        CheckOrders: Не получен билет ордера!
LS      0       07:11:19.636    History_bug (Eu-3.15,H1)        Ордер отослан =  2015.02.10 07:11:19
GH      0       07:11:19.636    History_bug (Eu-3.15,H1)        Уникальный номер ордера (mem_magic) = 1010000
RQ      0       07:11:23.808    History_bug (Eu-3.15,H1)        Время ожидания составило = 4180 мсек
PF      0       07:11:23.808    History_bug (Eu-3.15,H1)        CheckOrders: Билет получен = 9833674
QE      0       07:11:27.865    History_bug (Eu-3.15,H1)        Время ожидания составило = 4056 мсек
HN      0       07:11:27.865    History_bug (Eu-3.15,H1)        CheckOrders: Сделка совершена, билет = 9833674
HD      0       07:11:30.832    History_bug (Eu-3.15,H1)        Ордер отослан =  2015.02.10 07:11:30
IK      0       07:11:30.832    History_bug (Eu-3.15,H1)        Уникальный номер ордера (mem_magic) = 1010001
LP      0       07:11:34.962    History_bug (Eu-3.15,H1)        Время ожидания составило = 4134 мсек
DG      0       07:11:34.962    History_bug (Eu-3.15,H1)        CheckOrders: Билет получен = 9833675
CD      0       07:11:39.018    History_bug (Eu-3.15,H1)        Время ожидания составило = 4057 мсек
JN      0       07:11:39.018    History_bug (Eu-3.15,H1)        CheckOrders: Сделка совершена, билет = 9833675

 Код советника, выдавший этот лог, прикреплён.

Сначала, время ожидания было 1000 мсек, затем 2000, 3000 и , наконец 4000 мсек 

Посылалось 2 команды для каждого периода(открытие позиции - закрытие) 

Не слишком ли долго для РЫНОЧНОГО ордера? 

P/S Демо-Открытие (билд терминала 1060) 

Файлы:
History_bug.mq5  10 kb
 

Код еще не запускал, но исходнику видна классическая ошибка неправильной конечной даты в HistorySelect.

Каждый первый программист вызывает эту функцию с неправильной датой, постоянно закусывает конец истории и обнаруживает "долгое попадание сделки в историю". 

 

Вероятно, такова функция, коль "каждый первый" допускает "классическую ошибку".

В том файле есть попытка прочитать историю с некоторой даты до текущего момента. Не подскажите как это сделать корректно, чтоб не "закусывать конец истории"?

 

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

Достаточно указать в качестве конечной заведомо дальнюю дату, а не устаревший serverTime.

 
Renat:

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

Достаточно указать в качестве конечной заведомо дальнюю дату, а не устаревший serverTime.

 Может быть тогда можно и справку, с примером в ней поправить?

https://www.mql5.com/ru/docs/trading/historyselect 

Документация по MQL5: Торговые функции / HistorySelect
Документация по MQL5: Торговые функции / HistorySelect
  • www.mql5.com
Торговые функции / HistorySelect - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
papaklass:

Renat, работу с функцией OnTradeTransaction() еще не проводили?

Нет, к сожалению, очень занят.

Попробуйте сами на нашем демо-сервере MetaQuotes-Demo, пожалуйста.

 

Из фразы Рената

Достаточно указать в качестве конечной заведомо дальнюю дату, а не устаревший serverTime.

 

я понял, что в качестве конечной надо указать завтрашнюю дату (или еще более дальнюю) и будет счастье.

 
Renat:

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

Достаточно указать в качестве конечной заведомо дальнюю дату, а не устаревший serverTime.

А к качестве начальной даты, значит и "устаревший" TimeTradeServer() устраивает?
 
Mikalas:
А к качестве начальной даты, значит и "устаревший" TimeTradeServer() устраивает?

И начальная и конечная дата должна устанавливаться с осознанием погрешностей и с обязательным запасом. То есть минус N сек и плюс N сек как минимум.

TimeTradeServer() - это не рилтайм точное время, а обновляется исключительно по ценовым тикам, приходящим в обзор рынка.


Если у вас в выборке истории вдруг нет данных, значит 99% что ошибка в границах запроса.

Причина обращения: