К содержимому
Форекс
на автомате

Проверяю функции советника скриптом до тестера. Кто как делает?

Елена Дс 03.2025
Первый прогон
6сообщений
Автор темы#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); }
Прогоняю его после каждой правки, это секунда, а тестер на полгода реальных тиков минут двадцать. Дважды так поймала ошибку до тестера: в переходе на летнее время и в округлении лота. Или все проверяют только тестером?
gleb_777с 01.2023
Исследователь
10сообщений
#2
А зачем, если есть тестер? Прогнал в визуализации, посмотрел, что лот правильный, и всё. Я не спорю, правда не понимаю.
Елена Дс 03.2025
Первый прогон
6сообщений
Автор темы#3
Глеб, в визуализации ты видишь те случаи, которые случились на этом куске истории. Ошибка обычно сидит в редком: стоп ровно на минимальном лоте, баланс 99,99, символ с шагом объёма 0.1, ночь перевода часов. В тестере до такого можно не дожить, а на реале он придёт в первый же месяц. В скрипт я такие случаи кладу специально. Тестер отвечает, работает ли советник целиком, а скрипт, правильно ли считает вот эта функция.
Продолжить обсуждение

Для ответа войдите в свой аккаунт.

Войти
← Предыдущая темаСледующая тема →