Стал замечать, что при запуске теста в последнем обновлении мигает окно. Сейчас решил отловить это окно и оказалось, что теперь сразу
после Старта вызывается:
Окно раздражает. Да и смысла
перекомпилировать исходники нет.
В многозадачной, многопользовательской системе, с поддержкой групповую работы над проектами, отслеживать изменения и
перекомпилировать исходники нужно обязательно.
Не в обиду будет сказано, но однозадачные подходы а-ля DOS безнадежно устарели, я давно понял, занимаясь этим много лет назад и не
могу даже представить сколько лет должно быть тем, кто этого до сих пор не понял))
Может ли кто-нибудь объяснить записи в журнале 'моего' TesterAgent 'с этого дня?
Can someone explain the log entries of 'my' TesterAgent' from this afternoon?
FH 016:49:45.825 Network 3860 bytes of account info loaded
QQ 016:49:45.825 Network 1482 bytes of tester parameters loaded
ME 016:49:45.825 Network 19132 bytes of input parameters loaded
NP 016:49:45.827 Network 17731 bytes of symbols list loaded
EG 016:49:45.828 Tester job 6713531116306827294 received from Cloud Server
KO 016:49:45.828 Tester file added, 130921 bytes loaded
OH 016:49:45.828 Network 23796 bytes of optimized inputs info loaded
EP 016:49:45.831 Tester successfully initialized
JH 016:49:45.831 Network 2985 Kb of total initialization data received
HQ 016:49:45.831 Tester Intel Core i7-8700T @ 2.40GHz, 65482 MB
OI 016:49:45.831 Tester optimization pass 5168 started
FN 016:49:45.841 Symbols GBPJPY: symbol to be synchronized
IE 016:49:47.717 Symbols GBPJPY: symbol synchronized, 3464 bytes of symbol info received
ON 016:49:52.808 History GBPJPY: load 27 bytes of history data to synchronize in0:00:05.092
GS 016:49:52.808 History GBPJPY: history synchronized from2015.01.02 to 2019.07.04
HJ 016:49:52.991 History GBPJPY,M15: history cache allocated for112493 bars and contains 24713 bars from2015.01.0200:00 to 2015.12.3120:45
CL 016:49:52.991 History GBPJPY,M15: history begins from2015.01.0200:00
PF 016:50:00.209 Symbols EURJPY: symbol to be synchronized
LQ 016:50:01.021 Symbols EURJPY: symbol synchronized, 3464 bytes of symbol info received
MJ 016:51:56.220 History EURJPY: load 13.38 Mb of history data to synchronize in0:01:55.236
QI 016:51:56.220 History EURJPY: history synchronized from2015.01.02 to 2019.07.04
NM 016:52:04.746 Symbols EURGBP: symbol to be synchronized
QH 016:52:05.466 Symbols EURGBP: symbol synchronized, 3464 bytes of symbol info received
OQ 016:52:41.085 History EURGBP: load 12.48 Mb of history data to synchronize in0:00:35.598
MR 016:52:41.085 History EURGBP: history synchronized from2015.01.02 to 2019.07.04
KE 016:57:55.556Tester tester agent shutdown started
JO 016:57:55.556Tester shutdown tester machine
PG 216:58:56.556Tester cannot stop tester process [0, 0]
QR 016:58:58.049 Network connected to agent1.mql5.net
NK 016:58:59.903 Network connected to agent2.mql5.net
ED 016:59:07.857 Network connected to agent1.mql5.net
OM 016:59:10.616 Network connected to agent2.mql5.net
QF 016:59:18.855 Network connected to agent1.mql5.net
CO 016:59:21.953 Network connected to agent2.mql5.net
EI 016:59:29.289 Network MQL5 Cloud Network server agent2.mql5.net selected after rescan (ping 172 ms)
QK 016:59:29.466 Network connected to agent2.mql5.net
CG 016:59:29.819 Network authorized on agent2.mql5.net for gooly
LE 017:00:31.211 Network connected to agent2.mql5.net
OG 017:00:31.561 Network authorized on agent2.mql5.net for gooly
LR 017:01:32.943 Network connected to agent2.mql5.net
JF 017:01:33.307 Network authorized on agent2.mql5.net for gooly
После этого в папке F: \ MetaTester \ Tester \ Agent-0.0.0.0-2001 \ temp \ я нашел
66 файлов на ~ 65 МБ:
After this in the folder F:\MetaTester\Tester\Agent-0.0.0.0-2001\temp\ I found
Просьба сделать более подробное предупреждение, с указанием местоположения предыдущего макроса. Иначе бывает трудно его отыскать,
когда в исходник включено много файлов - неизвестно в каком именно он находится. Т.е. чтоб было по аналогии с перекрытием имён
переменных: see previous declaration of 'MACRO' - щёлкнув на эту строку, попадали бы в нужно место.
bool f()
{
returnNULL; // expression not boolean
}
Ведь константа
NULL является универсальной для разных типов, автоматически преобразующаяся в нужному типу. Об этом и в справке
сказано.
Я бы предпочёл использовать NULL вместо false, так более читаемо в коде. Ибо разница между true и false визуально плохо
ощущается. Зачастую даже использую
return 0 вместо return false для лучшей наглядности. В C++ это не
вызывает предупреждений.
А вот ситуация, где должно быть предупреждение, но его нет:
Приведение double к bool (
даже явное!) - это во-первых, концептуальная ошибка. Не вижу причин, чтобы в нормальном коде такое могло
понадобиться. Во-вторых, приведения вещественных чисел должны производиться через нормализацию - это известно мало-мальскому
программисту. Какое уж тут неявное приведение...
И уж тем более, одно дело инициализация
переменной, когда всё перед глазами. И другое дело, когда вызывается некая функция, находящаяся возможно в какой-то
библиотеке, и тип аргумента этой функции нам не виден. Контроль типов - это залог качества и надёжности кода.
А вот здесь полезность предупреждения не совсем
понятна
В C++ такое, конечно, не вызывает предупреждений. Но в случае обычных арифметических операций, я
считаю, они вполне обоснованны. А вот в случае битовых операций, на мой взгляд, предупреждения не нужны, т.к. там приведение к bool
часто используется для проверки на неравенство нулю:
if (~mode & FILE_READ) Print(mode);
Иначе придётся сильно усложнять запись, нагромождая скобки из-за низкого приоритета битовых операций
Стал замечать, что при запуске теста в последнем обновлении мигает окно. Сейчас решил отловить это окно и оказалось, что теперь сразу после Старта вызывается:
Окно раздражает. Да и смысла перекомпилировать исходники нет.
Сохранение отчета тестирования тоже раздражает своим миганием.
В многозадачной, многопользовательской системе, с поддержкой групповую работы над проектами, отслеживать изменения и перекомпилировать исходники нужно обязательно.
Не в обиду будет сказано, но однозадачные подходы а-ля DOS безнадежно устарели, я давно понял, занимаясь этим много лет назад и не могу даже представить сколько лет должно быть тем, кто этого до сих пор не понял))
Может ли кто-нибудь объяснить записи в журнале 'моего' TesterAgent 'с этого дня?
Can someone explain the log entries of 'my' TesterAgent' from this afternoon?
66 файлов на ~ 65 МБ:
After this in the folder F:\MetaTester\Tester\Agent-0.0.0.0-2001\temp\ I found
66 files at ~65 MB:
как отловили вызовы с флагами?
Тулза от Марка Руссиновича
Результат
Ожидалось во втором случае
Сейчас, когда распечатываешь конец массива, не возможно понять, какие индексы на самом деле выведены.
Ошибочные предупреждения компилятора:
Просьба сделать более подробное предупреждение, с указанием местоположения предыдущего макроса. Иначе бывает трудно его отыскать, когда в исходник включено много файлов - неизвестно в каком именно он находится. Т.е. чтоб было по аналогии с перекрытием имён переменных: see previous declaration of 'MACRO' - щёлкнув на эту строку, попадали бы в нужно место.
Не оправданное предупреждение в данном случае:
Ведь константа NULL является универсальной для разных типов, автоматически преобразующаяся в нужному типу. Об этом и в справке сказано.
Я бы предпочёл использовать NULL вместо false, так более читаемо в коде. Ибо разница между true и false визуально плохо ощущается. Зачастую даже использую return 0 вместо return false для лучшей наглядности. В C++ это не вызывает предупреждений.
А вот ситуация, где должно быть предупреждение, но его нет:
Как же так? Здесь как-раз вопиющее нарушение.
А вот ситуация, где должно быть предупреждение, но его нет:
Как же так? Здесь как-раз вопиющее нарушение.
По-моему, это правильное поведение
А вот здесь полезность предупреждения не совсем понятна
По-моему, это правильное поведение
И уж тем более, одно дело инициализация переменной, когда всё перед глазами. И другое дело, когда вызывается некая функция, находящаяся возможно в какой-то библиотеке, и тип аргумента этой функции нам не виден. Контроль типов - это залог качества и надёжности кода.
А вот здесь полезность предупреждения не совсем понятна
В C++ такое, конечно, не вызывает предупреждений. Но в случае обычных арифметических операций, я считаю, они вполне обоснованны. А вот в случае битовых операций, на мой взгляд, предупреждения не нужны, т.к. там приведение к bool часто используется для проверки на неравенство нулю:
Иначе придётся сильно усложнять запись, нагромождая скобки из-за низкого приоритета битовых операций
Тулза от Марка Руссиновича
скиньте ссылку на нее если не сложно