Да что ж это творится то??? - страница 6

 
Сергей Таболин:

если сделать несколько раз оптимизацию, то при одинаковых параметрах советника результаты разных оптимизаций совпадают? если совпадают, то проблема в разнице работы оптимизатора и одиночного прохода. если не совпадают - то проблема однозначно в коде советника.

 

поясню - модное тут написание в стиле :

if (condition) {

} else if (!condition) {

}

якобы повышающее читабельность и понимание кода, на самом деле злое зло

и плюс к этому с double надо работать очень-очень аккуратно

 
Andrey Dik:

полагаете, что глобальная переменная советника сохраняет своё значение при прошлых запусках оптимизатора и переносится в следующие? данунах.

Да, примерно так. Нарывался.

Только была не просто гл. переменная, а то ли статик член класса, то ли гл. переменная терминала, то ли что-то еще.


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

В общем, нужно все инициализировать и скрупулезно за этим следить.


ps: нет, вспомнил. У меня с инициализацией было все ок, это один из билдов глючно статики инициализировал. Оперативно исправили.

 
Andrey Dik:

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

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

ждем отчета ТС о распринтованных сделках, интрига, однако. 

Не настроен на холи вор.

Смысл, как всегда, простой — советник не выгружается, чтобы оптимизация шла быстрее. EX-файлы бывают большими.

 

Только сегодня появилось время заняться проблемой вплотную. Решил начать с малого. По порядку. В том числе и с проверки открываемых файлов. Код такой:

      int      h     = FileOpen(filename, FILE_BIN|FILE_READ|FILE_COMMON);
      if(h == INVALID_HANDLE)
      {
         Print("Ошибка открытия файла обученной сети по индикатору >>> ",name);
         writeErrorFile(program_name,program_version,"======= "+IntegerToString(bars_count-1)+" === Ошибка открытия файла обученной сети по индикатору >>> "+name);
         writeOptTestFile(file_Opt_Tst,"======= "+IntegerToString(bars_count-1)+" === Ошибка открытия файла обученной сети по индикатору >>> "+name+"\n");
         FileClose(h);
         return(TRADESIGNAL_NO);
      }

Запустил оптимизацию, а затем одиночный тест. В результате получил два файла:

1_100_100_300_300_.opt
1_100_100_300_300_.tst

Открыл эти два файла в программке WinMerge. И вот что я там увидел

В оптимизаторе проблема с открытием файлов. Заметьте, ни одной подобной ошибки в тестере нет!

 
Сергей Таболин:

В оптимизаторе проблема с открытием файлов. Заметьте, ни одной подобной ошибки в тестере нет!

Несколько ядер открывают файл одновременно. Один открывает, остальные обламываются.
Нужен код с ожиданием, или, как минимум, флаг FILE_SHARE_READ

 

Если вы:

  • из эксперта обращаетесь к одному и тому же файлу в коммон зоне
  • получаете ошибки доступа
  • никак не защищаетесь от совместного доступа при множественных паралельных процессах, не пытаетесь повторить с таймаутом
То конечно вы будете получать разницу в оптимизаторе и одиночном проходе. Это логическая ошибка.
 
Andrey Khatimlianskii:

Несколько ядер открывают файл одновременно. Один открывает, остальные обламываются.
Нужен код с ожиданием, или, как минимум, флаг FILE_SHARE_READ

Ну я же не писал код специально для оптимизатора. Ожидаемо было что оптимизатор уже будет следить за подобными ньюансами. Флаг попробую добавить, хуже не будет. )))

Renat Fatkhullin:

Если вы:

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

  1. Коммон зону я включаю исключительно для удобства нахождения файлов.
  2. ....
  3. Нет у меня совместного доступа. К этим файлам обращается только один советник.
 

Так как кода все еще нет, условия тестирования никак не описаны, а вы выдаете явно ошибочные заявления, то разбирайтесь дальше сами.

Если у вас даже файлы не открываются, значит там немало проблем в эксперте.

Вы даже имена этих файлов скрыли.

 
Renat Fatkhullin:

Так как кода все еще нет, условия тестирования никак не описаны, а вы выдаете явно ошибочные заявления, то разбирайтесь дальше сами.

Если у вас даже файлы не открываются, значит там немало проблем в эксперте.

Вы даже имена этих файлов скрыли.

Кода нет потому что добавление шары реально проблему решило. Теперь результаты оптимизации и одиночные прогоны полностью соответствуют.

Просто я до этого практически не использовал файлы в советниках (по крайней мере вся запись/чтение при оптимизации/тестировании была отключена), но думал, что в оптимизаторе решён вопрос доступа из одного советника.

Причина обращения: