CSymbolList slMain;
intOnInit()
{
if(!slMain.SetSymbols(inWorkSymbols)) return(-1);
for (int i = 0; i < slMain.GetSymbolCount(); i++)
Print(slMain.GetSymbolName(i));
//--- ok
return(0);
}
Но если эти же три строчки (код) вставить первыми в функцию OnInit() у эксперта, и запустить такой эксперт в режиме тестирования, то получается примерно следующее:
Во-первых, код каким-то образом срабатывает в режиме тестирования.
Во-вторых, (что более важно), теряется история первых нескольких дней тестирования. Так, в приведённом выше примере тестирование было задано с даты 2011.01.03 (что видно по первым двум строчкам), но после обработки кода (в данном случае это строчки 2-3) тестер сразу перескакивает на 17 дней вперёд, и далее тестирование идёт без учёта этих 17-ти дней.
Renat: Вы же банально словили арифметическое переполнение в в результате устроили себе ожидание на 17.5 дней.
Да я не спорю про "словили переполнение", потому что не знаю :) Вопрос в том, что такую ситуацию желательно пресекать либо компилятором, либо тестером с выдачей критической ошибки (или иным способом). Не все же будут дотошно разбираться, как работают их программы при отсутствии предупреждений со стороны терминала.
Проблему также вижу в том, что код выставляется в OnInit() первыми строчками (т.е. до закачки любых исторических данных) - но почему-то данные первых 17,5 дней теряются.
Yedelkin: Вы так уверены, что Sleep() игнорируется? - Посмотрите на разницу во времени терминала между 2-ой и 3-ей строчками.
возможно само присутствие Sleep (по сравнению с его отсутствием) в коде как то сказывается на общем времени выполнения, но то, что Sleep не считается в тестере - это точно.
Вроде как сварганил. Критика приветствуется.
Поскольку, речь видимо будет идти об экперте, то:
и:
Ставлю на то, что гарантируется. По крайней мере я постоянно на это расчитываю, и проблемы ни разу не возникло.
Ясно. В любом случае, момент щекотливый.
uncleVic
Так-то оно так. Но в моем случае это избыточно:
Как видите, при ошибке в инструментах в последнем цикле в ОнТик ниодной итерации не будет.
Ясно. В любом случае, момент щекотливый.
uncleVic
Так-то оно так. Но в моем случае это избыточно:
Как видите, при ошибке в инструментах в последнем цикле в ОнТик ниодной итерации не будет.
Да я не настаиваю. Просто проверить результат выполнения - это правильно.
Да я не настаиваю. Просто проверить результат выполнения - это правильно.
Обнаружил такую фишку. Если запустить вот этот скрипт, то он "подвисает".
Но если эти же три строчки (код) вставить первыми в функцию OnInit() у эксперта, и запустить такой эксперт в режиме тестирования, то получается примерно следующее:
Во-первых, код каким-то образом срабатывает в режиме тестирования.
Во-вторых, (что более важно), теряется история первых нескольких дней тестирования. Так, в приведённом выше примере тестирование было задано с даты 2011.01.03 (что видно по первым двум строчкам), но после обработки кода (в данном случае это строчки 2-3) тестер сразу перескакивает на 17 дней вперёд, и далее тестирование идёт без учёта этих 17-ти дней.
в результате устроили себе ожидание на 17.5 дней.
Вы же банально словили арифметическое переполнение в
в результате устроили себе ожидание на 17.5 дней.
Вы же банально словили арифметическое переполнение в
в результате устроили себе ожидание на 17.5 дней.
Да я не спорю про "словили переполнение", потому что не знаю :) Вопрос в том, что такую ситуацию желательно пресекать либо компилятором, либо тестером с выдачей критической ошибки (или иным способом). Не все же будут дотошно разбираться, как работают их программы при отсутствии предупреждений со стороны терминала.
Проблему также вижу в том, что код выставляется в OnInit() первыми строчками (т.е. до закачки любых исторических данных) - но почему-то данные первых 17,5 дней теряются.
ага, а в тестере работает, потому что в нем Sleep игнорируется.
Вы так уверены, что Sleep() игнорируется? - Посмотрите на разницу во времени терминала между 2-ой и 3-ей строчками.