Вопрос по времени тестирования.

 
Сделал многовариантную систему на пробой канала. Период с 01.01.2009 по 01.01.2013.  Прогнал на евробаксе, М5 по ценам открытия - заняло около 80 часов. Фунтобакс, М5 по ценам открытия - 72 часа. При этом оптимизация шла на более слабой машине (двух ядерный 2.2 Ггц, 2 г оперативки, система XP SP3). Евройена, М5 по ценам открытия - показывал более 700 часов, даже ждать не стал.  Для сравнения прогнал ту же систему на более мощном железе (четырех ядерный AMD 3.0 Ггц, 4 г оперативки, стоит WIN7): евробакс, М5 по ценам открытия - заняло около 60 часов; фунтобакс, М5 по ценам открытия - 57 часов. Евройена, М5 по ценам открытия - показывает более 400 часов. Время сократилось конечно, но почему такое отличие на том же участке времени для евройены???
 
Если будут дополнительные вопросы - буду через 7-8 часов , отвечу.
 

Время показывается рассчитанное на основании статистики первых проходов. С каждым новым проходом ожидаемое время может существенно меняться.

Хинт - каждый новый проход это новый набор параметров. А входные параметры могут очень сильно влиять на алгоритм эксперта. Например, при таком параметре n мы вообще никаких расчётов не производим, при таком параметре t мы расчёты производим, но не торгуем, а вот тут мы торгуем в полный рост и у нас включается алгоритм учёта открытых и закрытых позиций

 
stringo:

Время показывается рассчитанное на основании статистики первых проходов. С каждым новым проходом ожидаемое время может существенно меняться.

Хинт - каждый новый проход это новый набор параметров. А входные параметры могут очень сильно влиять на алгоритм эксперта. Например, при таком параметре n мы вообще никаких расчётов не производим, при таком параметре t мы расчёты производим, но не торгуем, а вот тут мы торгуем в полный рост и у нас включается алгоритм учёта открытых и закрытых позиций


Ну, да, это я понимаю. Для примера - один проход по евробаксу дает около 1700 сделок. За то же время проход по евройене дает около 800 сделок. Общее количество сделок больше в случае с евробаксом и их удержание в памяти на один прогон должно по идее занимать больше времени. Есть правда эффект группы, если эти сделки идут группой, то их одновременное удержание в пямяти займет больше ресурсов, чем в случае переворотника например. Но все равно, разница по времени слишком велика. 60 часов и более 400 часов. Это меня как то настораживает, может дело именно в йеносодержащих парах? Кстати, счас показывает 519 часов.

 
locol91:

Ну, да, это я понимаю. Для примера - один проход по евробаксу дает около 1700 сделок. За то же время проход по евройене дает около 800 сделок. Общее количество сделок больше в случае с евробаксом и их удержание в памяти на один прогон должно по идее занимать больше времени. Есть правда эффект группы, если эти сделки идут группой, то их одновременное удержание в пямяти займет больше ресурсов, чем в случае переворотника например. Но все равно, разница по времени слишком велика. 60 часов и более 400 часов. Это меня как то настораживает, может дело именно в йеносодержащих парах? Кстати, счас показывает 519 часов.


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


Еще совет: с помощью конструкции if(IsTesting()) {} или if(IsOptimization()) {} отключите обращения к MarketInfo(), Print(), Alert() и тому подобным ненужным во время тестирования функциям. Здорово помогает.

 
alsu:

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


Еще совет: с помощью конструкции if(IsTesting()) {} или if(IsOptimization()) {} отключите обращения к MarketInfo(), Print(), Alert() и тому подобным ненужным во время тестирования функциям. Здорово помогает.


Спасибо за совет, принтами пользуюсь при отладке, кое что действительно не отключаю. А так - после отладки почти все принты и почти все алерты сталю за //. И вопрос - перечень и основания для занесения в этот перечень "и тому подобным ненужным во время тестирования функциям." где нибудь есть?
 
locol91:

Спасибо за совет, принтами пользуюсь при отладке, кое что действительно не отключаю. А так - после отладки почти все принты и почти все алерты сталю за //. И вопрос - перечень и основания для занесения в этот перечень "и тому подобным ненужным во время тестирования функциям." где нибудь есть?

пройдитесь по собственному коду, вам виднее будет. Например, вместо сложной функции отправки ордера со всяческими проверками и т.д. в тестере можно просто поставить OrderSend. Вообще, все, что касается проверки состояния можно на период теста выпиливать. Мы же тестируем логику торговли, правильно? Ну так и оставляем только логику, остальное - под нож (точнее, под if(!IsTesting())).
Причина обращения: