Автор темы#1
Расскажу, как проверяю отдельные куски советника, и интересно, кто как делает. Расчёт лота, округление цены, фильтр торгового времени и разбор строки настроек вынесены у меня в отдельный include без обращений к счёту: на вход числа, на выход число. Рядом лежит скрипт, который вызывает эти функции на случаях, посчитанных заранее руками, и пишет в журнал, что не сошлось:
Прогоняю его после каждой правки, это секунда, а тестер на полгода реальных тиков минут двадцать. Дважды так поймала ошибку до тестера: в переходе на летнее время и в округлении лота. Или все проверяют только тестером?
Код:
#define CHECK(cond, name) if(!(cond)) { Print("FAIL: ", name); fails++; }
void OnStart()
{
int fails = 0;
CHECK(Eq(RoundToStep(0.037, 0.01), 0.03), "lot round down");
CHECK(Eq(LotByRisk(1000, 1.0, 250, 1.0), 0.04), "lot 1% 250pt");
CHECK(!IsTradingHour(D'2025.03.28 23:30', 2, 22), "friday late");
PrintFormat("checks done, fails: %d", fails);
}