Проблемы при одновременном тестировании нескольких советников на одних и тех же сетевых агентах.

Проблемы при одновременном тестировании нескольких советников на одних и тех же сетевых агентах.

30 октября 2018, 07:19
Natalja Romancheva
0
154

Исходные положения:

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 графика.

Problem_0001

Были проанализированы некоторые проходы, возвращающие аномальные результаты.

Так например проход 6826 с параметрами 2 и 92:

Problem_0002

Был произведён на агенте <PC9231:01>:

Problem_0003

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"

При некоторых проходах тестирования, когда подгрузка файла не происходила, был искусственно сформирован аномальный результат прохода тестирования.

При этом проходы тестирования в очередь не были возвращены.

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

Конструктивная критика приветствуется.



Поделитесь с друзьями: