Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
ВЫ В ЭТОМ УВЕРЕНЫ ?
4 секунды ???? , да нееет! Реально полагаете процессор завис на 4 секунды или память выделялась освобождалась 4 секунды ? Вы шутите.
Более вероятно это очередь записи на диск.
Диск устройство более медленное чем память и процессор.
А потом flush() , есть такая команда в языке Си, наверняка знаете, она выполняется когда ей удобно и комфортно и может выполнятся с некоторой задержкой чаще связанной с загрузкой диска.
Именно ее вызывают когда нужно сбросить буфера на диск.
Ну я не то чтобы уверен, т.к. экспериментально именно в МТ не проверял. Но это вроде как стандарт - зачем в логе время записи на диск, если важнее время события которое эту запись в лог вызвало, логично же?
Да и если предположить что в лог пишется время записи на диск, и если диск загружен, всё равно же у вас задержка будет в физической записи, а время будет стоять отправки команды на запись в буфер записи.
т.е. флаш не изменяет буфер - он просто его сбрасывает чуть позже если есть задержки.
з.ы. верно подметили что писать надо и время, т.к. в любом случае лишь на то время которое формирует сам терминал при записи в лог, ориентироваться нет смысла.
Ну я не то чтобы уверен, т.к. экспериментально именно в МТ не проверял. Но это вроде как стандарт - зачем в логе время записи на диск, если важнее время события которое эту запись в лог вызвало, логично же?
Да и если предположить что в лог пишется время записи на диск, и если диск загружен, всё равно же у вас задержка будет в физической записи, а время будет стоять отправки команды на запись в буфер записи.
т.е. флаш не изменяет буфер - он просто его сбрасывает чуть позже если есть задержки.
з.ы. верно подметили что писать надо и время, т.к. в любом случае лишь на то время которое формирует сам терминал при записи в лог, ориентироваться нет смысла.
я предположил - что время вставляется непосредственно перед записью на диск, тогда все срастается.
давайте попробуем расписать сценарий по шагам - что бы было понятней
1-пришел тик ( попал в OnTick ) - надо бы распечатать
2-в OnTick стоит принт лога - он успешно записался
3-В ОнБок тоже ЭТОТ тик приходит - и его тоже надо бы распечатать.
4-и тут начинается КОШМАР Виндовс вдруг ВЫЛИВАЕТ 20 потоков данных на диск от разных программ в этот момент и временно блокирует диск -
так как драйвер переместил магнитную головку для записи своих данных в другое место -) и что то там пишет свое.
5-В этот момент метатрейдер пытается что то отправить на ДИСК
НО ДИСК УЖАСНО ЗАНЯТ ОПЕРАЦИОННОЙ СИТСТЕМОЙ Виндовс - Операционка говорит метатрейдеру извините MQ у меня тут более важные задачи - потерпи
6- Проходит 4 секунды винда за 4 секунды сделала свое дело
7- и тут виндовс после 4 секунд - освободила очередь к диску - и говорит метатредеру - уважаемый терминал торговый - ты там что то хотел записать на диск ? - ладно пиши!
8-метатрейдер пишет на диск с задержкой в 4 секунды и фиксирует ВРЕМЯ В ЛОГЕ не тогда КОГДА ОН ХОТЕЛ записать данные на диск - а ПО ФАКТУ.
вот отсюда 4 секунды и берутся
---
Вот любой другой сценарий, типа терминал время поместил в буфер локальное время - но запись отложилась на 4 секунды - НЕ КАТИТ ТАКОЙ СЦЕНАРИЙ
иначе время бы совпало!
Ну я не то чтобы уверен, т.к. экспериментально именно в МТ не проверял. Но это вроде как стандарт - зачем в логе время записи на диск, если важнее время события которое эту запись в лог вызвало, логично же?
Да и если предположить что в лог пишется время записи на диск, и если диск загружен, всё равно же у вас задержка будет в физической записи, а время будет стоять отправки команды на запись в буфер записи.
т.е. флаш не изменяет буфер - он просто его сбрасывает чуть позже если есть задержки.
з.ы. верно подметили что писать надо и время, т.к. в любом случае лишь на то время которое формирует сам терминал при записи в лог, ориентироваться нет смысла.
А если не проверял, то и не хрен трындеть.
Вы хоть понимаете о чем речь в этой ветке?
Покажи тест, иначе кыш отсюда
Ну я не то чтобы уверен, т.к. экспериментально именно в МТ не проверял. Но это вроде как стандарт - зачем в логе время записи на диск, если важнее время события которое эту запись в лог вызвало, логично же?
Да и если предположить что в лог пишется время записи на диск, и если диск загружен, всё равно же у вас задержка будет в физической записи, а время будет стоять отправки команды на запись в буфер записи.
т.е. флаш не изменяет буфер - он просто его сбрасывает чуть позже если есть задержки.
з.ы. верно подметили что писать надо и время, т.к. в любом случае лишь на то время которое формирует сам терминал при записи в лог, ориентироваться нет смысла.
как раз в нашем случае получается время записи на диск!
А вот время события можно организовать в процедуре GetTickDescription , чуть выше я автору ветки писал об этом.
И если бы он его туда поместил , то мы бы сейчас точно не обсуждали возможную причину задержку в 4 секунды. В логе скорее всего локальное время приехало бы одинаково для ОнБок и ОнТик , а вот время записи на диск кук раз отличалось бы на 4 секунды.
А если не проверял, то и не хрен трындеть.
Вы хоть понимаете о чем речь в этой ветке?
Покажи тест, иначе кыш отсюда
ну зачем так жестко.
По идее можно доработать эту ловлю тиков, поставить на недельку - другую, и может быть получится еще раз поймать момент когда дата записи в лог расползется с датой события.
можно конечно ускорить этот процесс периодически нагружая диск на запись.
Другой вопрос, самый важный . а нахрена тратить время на это исследование :-))) , какой от этого практический выхлоп.
---
На текущий момент ясно то что тики сначала прилетают в OnTick и только затем прилетают в OnБук , что приятно OnBuk вызывается не только при тиках а например при изменении объемов на бирже, иными словами кто то открыл ордер закрыл или удалил изменились объемы. И для биржи это достаточно важная информация.
И конечно следуя логике торговые решения на рынке АКЦИЙ / ФЬЮ логичней принимать именно в ОнБок а не в ОнТик.
А если не проверял, то и не хрен трындеть.
Вы хоть понимаете о чем речь в этой ветке?
Покажи тест, иначе кыш отсюда
Это вы тут трындите, хрен, 16 страниц не додумались время срабатывания события перед Print-ом запоминать и писать, скорость они измеряют, специалисты блин)
То о чём вы мне с такой горделивостью указали мол я не проверял а говорю, вы сами толком не поняли про что речь, готов поспорить. Но вам этого скорее всего не понять.
А то что это время точно не время записи на диск, это проверено.
А если не проверял, то и не хрен трындеть.
Вы хоть понимаете о чем речь в этой ветке?
Покажи тест, иначе кыш отсюда
А давай так, умник, показываешь хоть какой-то достоверный способ чтобы проверить то до чего ты докопался, и я свалю и признаю что не понимал, иначе признавай что ты сам не понимаешь, извиняешься, или валишь сам.
А именно - хоть один достоверный на 100% способ экспериментально проверить, какое именно время пишет терминал в лог, а именно основные варианты:
1. время получения терминалом команды Print в очередь.
2. время начала выполнения команды Print.
3. время завершения печати в буфер, а вдруг)
Этот вариант может додумаетесь что точно нет:
4. время выполнения печати на диск.
А давай так, умник, показываешь хоть какой-то достоверный способ чтобы проверить то до чего ты докопался, и я свалю и признаю что не понимал, иначе признавай что ты сам не понимаешь, извиняешься, или валишь сам.
А именно - хоть один достоверный на 100% способ экспериментально проверить, какое именно время пишет терминал в лог, а именно основные варианты:
1. время получения терминалом команды Print в очередь.
2. время начала выполнения команды Print.
3. время завершения печати в буфер, а вдруг)
Этот вариант может додумаетесь что точно нет:
4. время выполнения печати на диск.
Ну так за чем же дело?
Ждем Ваш код...
Ну так за чем же дело?
Ждем Ваш код...
Какой код вы ждёте? Я вам что-то обещал накодить? На какой цене договорились напомните?)
p/s/ вы тоже не поняли, как и ваш друг, о чем я говорю.Пока споры спорятся, провел еще 1 эксперимент.
Т.е при инициализации засекаю микросекундное время,
и перед каждым принтом вновь буру время
В идеале должно быть так
Но очень часто получается так (выдержки лога):
Так что локальное время записывается в принт, когда принт вызывается.
Но это не как не вяжется с 4 секндами...