Лучшая замена Print в тестере? - страница 2

 
Alexey Volchanskiy:

Вопрос решен, анекдот ))

Была папка проекта в \MQL5\Projects\, вчера скопировал в \MQL5\Shared Projects\, решил там работать

Ну и как-то вышло по невнимательности, редактирую и компилирую из \MQL5\Projects\, а запускаю из \MQL5\Shared Projects\ )) Соответственно изменения в минус. Блин, вроде и не пил давно...

Когда-то у нас был один сотрудник, у кого голова не работала до тех пор, пока не пил как минимум 50 г.

Это для него служила как топливо.  :)

 
Ihor Herasko:

Проверил. Все отображается, как заявлено. Попробуйте перекомпилировать индикатор.

нашел уже, забыл что он не по торговой истории работает, а по объектам на графике, если отключить отображение сделок на графике, он не отображает

 
Petros Shatakhtsyan:

Когда-то у нас был один сотрудник, у кого голова не работала до тех пор, пока не пил как минимум 50 г.

Это для него служил как топливо.  :)

Не-е, тут на форуме как-то обсуждался этот вопрос. Лично для меня программирование и алко несовместимы )) Просто вчера ночью сидел, проект перекинул, а в редакторе переоткрыть забыл. Теряю былую легкость ))


 
Alexey Volchanskiy:

а сам удивлен, в доке написано, что Print не работает в режиме оптимизации, однако вставил вот такой код и в журнале агента этого принта нет

Пробовал в обычном режиме и в визуализации
OnTimer не работает в тестере
 
Aleksei Beliakov:
OnTimer не работает в тестере

Это в МТ4, в МТ5 работает.

 
Alexey Volchanskiy:
В тестере не работает Print, чем вы его заменяете и вообще, какая лучшая замена?

единственно разумная замена - вызов DLL , чтобы гарантировано написала журнал, мы же не в тряпичные кегли играем, нам нужны гарантии.
Можно даже сразу в журналы приложений Windows или открыло pop-up окно а-ля Alert.

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

 
Maxim Kuznetsov:

единственно разумная замена - вызов DLL , чтобы гарантировано написала журнал, мы же не в тряпичные кегли играем, нам нужны гарантии.
Можно даже сразу в журналы приложений Windows или открыло pop-up окно а-ля Alert.

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

Запись в файл - это понятно, я основные операции логгирую. Но зачем сразу DLL? 

 
Alexey Volchanskiy:

Запись в файл - это понятно, я основные операции логгирую. Но зачем сразу DLL? 

потому что FileWrite буферизуется, файл логов может быть удалён/перемещён/повреждён. и даже начинающий какер в первую очередь перезапишет файловый журнал.
то есть этот способ не подходит для критических логов.

Но есть штатный способ любой ОС - "ведение журналов". Ось должна костьми лечь, но будет гарантировать эти записи, на край отдаст через AD. И есть такие-же штатные способы их чтения

Можно поднять документацию Win и ntfs - они там много чего предпринимают для этого.

А кроме как через DLL к сервису не достучаться :-(

 
Maxim Kuznetsov:

потому что FileWrite буферизуется, файл логов может быть удалён/перемещён/повреждён. и даже начинающий какер в первую очередь перезапишет файловый журнал.
то есть этот способ не подходит для критических логов.

Но есть штатный способ любой ОС - "ведение журналов". Ось должна костьми лечь, но будет гарантировать эти записи, на край отдаст через AD. И есть такие-же штатные способы их чтения

Можно поднять документацию Win и ntfs - они там много чего предпринимают для этого.

А кроме как через DLL к сервису не достучаться :-(

Суровый подход )) Но у меня не так все критично. Но мысль заценил.

Пока я для сброса буферов просто периодически закрываю/открываю файлы логов, такое чувство, что FileFlush вообще не работает.

 
Есть еще предложение - просить разработчиков добавить какой-нибудь #define, который бы разрешал Print в оптимизаторе.
Причина обращения: