Исходные положения:
1. Имеются около 120 сетевых агентов в пределах локальной сети.
2. Одновременно тестируются 2 советника (в двух терминалах) с перебором около 9000 проходов по двум параметрам. Параметры представляют собой периоды быстрой и медленной тиковых EMA.
3. Вид оптимизации: Медленная (полный перебор параметров), каждый тик на основе реальных тиков, .
4. Критерий: Максимум пользовательского критерия.
5. Аномальные результаты тестирования были нормализованы следующим образом (фрагмент кода):
double OnTester() { double Testr1=0; switch(OnTesterMode){ case 0: //оптимизируем по Прибыльности { Testr1=TesterStatistics(STAT_PROFIT_FACTOR); return( (TestRes<=0.5) //Если преднамеренное прерывание выполнения ?(0.75) //0.75 - на выход :( //Иначе ((Testr1>0.0)&&(Testr1<999999.0))//Если нормальный результат тестирования ?(Testr1) //Расчетный результат - на выход :(0.7) //Иначе 0.7 на выход ) ); break; } default: Testr1=AccountInfoDouble(ACCOUNT_BALANCE);break;//оптимизируем по балансу }//switch(OnTesterMode) return(Testr1); }//OnTester
То есть при получении запредельных значений профит-фактора тестером возвращается значение 0.7. Кроме того это значение возвращается при диагностировании некоторых аварийных ситуаций.
При преднамеренном завершении прохода, например когда период медленной EMA оказывается меньше или равен периоду быстрой EMA, тестером возвращается значение 0.75.
5. Список сетевых агентов тестирования идентичен в каждом из терминалов.
6. Интервал тестирования около 6 месяцев. Общее время тестирования около 2 суток.
Описание обнаруженной проблемы:
При просмотре результатов тестирования представленных в виде "Плоский график 2D", были обнаружены аномальные значения в области параметров где их появление не ожидалось.
Что проявляется в виде белых прямоугольников в верхней части 2D графика.
Были проанализированы некоторые проходы, возвращающие аномальные результаты.
Так например проход 6826 с параметрами 2 и 92:
Был произведён на агенте <PC9231:01>:
2018.10.29 02:33:57.603 PC9231:01 pass 6826 returned result 0.70 in 0:28:30.192
Соответствующий фрагмент лога агента PC9231:01:
LQ 0 02:04:57.516 Tester optimization pass 6826 started CE 0 02:04:57.519 LibreNetka_v4.304V (EURUSD,M1) 2018.05.28 00:00:00 Build >> 1930 Ping >> 0 ms LJ 0 02:04:57.519 LibreNetka_v4.304V (EURUSD,M1) 2018.05.28 00:00:00 3971. OnInitM >> FileIsExist [librenews.csv] InFileIsExist=true NewsFileCommon=false ErrorСode=5019 ErrorСode1=0 JO 0 02:04:57.519 LibreNetka_v4.304V (EURUSD,M1) 2018.05.28 00:00:00 250. OnInitM>> res=1 HistoryFirstDate=2017.01.02 00:00:00 HistoryBars=521674 QP 0 02:04:57.519 LibreNetka_v4.304V (EURUSD,M1) 2018.05.28 00:00:00 DeleteEvents Error Open File <5018488_EURUSD_librenews1.csv> MN 2 02:05:32.164 192.168.1.24 cannot accept connect, agent is busy DE 2 02:06:32.173 192.168.1.24 cannot accept connect, agent is busy EM 2 02:07:32.269 192.168.1.24 cannot accept connect, agent is busy PD 2 02:08:33.093 192.168.1.24 cannot accept connect, agent is busy NK 2 02:09:33.421 192.168.1.24 cannot accept connect, agent is busy RS 2 02:10:33.511 192.168.1.24 cannot accept connect, agent is busy QJ 2 02:11:33.483 192.168.1.24 cannot accept connect, agent is busy IQ 2 02:12:33.727 192.168.1.24 cannot accept connect, agent is busy QI 2 02:13:33.652 192.168.1.24 cannot accept connect, agent is busy LP 2 02:14:33.917 192.168.1.24 cannot accept connect, agent is busy IH 2 02:15:33.830 192.168.1.24 cannot accept connect, agent is busy DO 2 02:16:33.832 192.168.1.24 cannot accept connect, agent is busy EF 2 02:17:33.742 192.168.1.24 cannot accept connect, agent is busy EN 2 02:18:33.321 192.168.1.24 cannot accept connect, agent is busy LE 2 02:19:33.374 192.168.1.24 cannot accept connect, agent is busy FL 2 02:20:33.336 192.168.1.24 cannot accept connect, agent is busy LD 2 02:21:34.000 192.168.1.24 cannot accept connect, agent is busy RK 2 02:22:34.128 192.168.1.24 cannot accept connect, agent is busy JS 2 02:23:34.118 192.168.1.24 cannot accept connect, agent is busy RJ 2 02:24:34.463 192.168.1.24 cannot accept connect, agent is busy JQ 2 02:25:35.065 192.168.1.24 cannot accept connect, agent is busy CI 2 02:26:35.944 192.168.1.24 cannot accept connect, agent is busy EP 2 02:27:35.891 192.168.1.24 cannot accept connect, agent is busy QG 2 02:28:35.467 192.168.1.24 cannot accept connect, agent is busy DO 2 02:29:35.742 192.168.1.24 cannot accept connect, agent is busy GF 2 02:30:35.222 192.168.1.24 cannot accept connect, agent is busy CN 2 02:31:35.409 192.168.1.24 cannot accept connect, agent is busy FE 2 02:32:35.038 192.168.1.24 cannot accept connect, agent is busy KP 0 02:33:27.621 Tester 6826 OnTester result 0.7 : passed in 0:28:30.192
То есть в данном случае, при занятости агента тестер вернул аномальный результат и не вернул проход в очередь.
Решение для обхода данной проблемы не найдено.
Похожая проблема была обнаружена ранее, когда был задан файл подгружаемый в советник при тестировании:
#property tester_file "librenews.csv"
При некоторых проходах тестирования, когда подгрузка файла не происходила, был искусственно сформирован аномальный результат прохода тестирования.
При этом проходы тестирования в очередь не были возвращены.
В данном случае возможно существует вариант решения с принудительным возвращением задания в очередь.
Конструктивная критика приветствуется.