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

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

Уважаемые, просто к слову, ведь никто, для кого работа с файлами важна, до момента моей распечатки тоже не предположил, что проблема может быть в этом ;) :) Ну да ладно, разобрались.

Теперь вопрос отвлечённый: чем отличаются следующие строки?

   filename = "ERR_dir\\"+filename+(MQLInfoInteger(MQL_OPTIMIZATION) ? ".opt" : ".tst");
   filename = "ERR_dir\\"+filename+(MQLInfoInteger(MQL_TESTER) ? ".tst" : ".opt");

И, если можно, пояснения - почему?

Режим оптимизации

Режим тестера

В режим тестера входит и режим оптимизации, но не наоборот.

Ваши обе строки ошибочны.

Первая:

Если режим оптимизации, то расширение .opt, иначе - расширение .tst. Но в случае "иначе" может быть и вовсе не тестер.

Вторая:

Если режим тестера, то расширение .tst, иначе - расширение .opt. Но в случае "иначе" может быть и вовсе не тестер.

Правильно так:

  • Если режим тестера
    • Если режим оптимизации, то расширение .opt
      • иначе - расширение .tst
 
Artyom Trishkin:

Режим оптимизации

Режим тестера

В режим тестера входит и режим оптимизации, но не наоборот.

Ваши обе строки ошибочны.

Первая:

Если режим оптимизации, то расширение .opt, иначе - расширение .tst. Но в случае "иначе" может быть и вовсе не тестер.

Вторая:

Если режим тестера, то расширение .tst, иначе - расширение .opt. Но в случае "иначе" может быть и вовсе не тестер.

Правильно так:

  • Если режим тестера
    • Если режим оптимизации, то расширение .opt
      • иначе - расширение .tst

этого достаточно.

если конечно не требуется проверять не работает ли советник на чарте или в тестере.

 
Andrey Dik:

этого достаточно.

А если не тестер вообще, то что?

 
Artyom Trishkin:

А если не тестер вообще, то что?

у него не стоит задача проверки в тестере или на чарте запущено, а только определить, простой это прогон по истории или в составе пакета оптимизации, если я правильно понял ТС'а

 
Andrey Dik:

у него не стоит задача проверки в тестере или на чарте запущено, а только определить, простой это прогон по истории или в составе пакета оптимизации, если я правильно понял ТС'а

Совершенно верно. Если не тестер или оптимизатор, то сюда вообще не заходит )))

Артём, если я правильно понял, то моя такая конструкция

if(MQLInfoInteger(MQL_OPTIMIZATION) || MQLInfoInteger(MQL_TESTER))

избыточна?

Достаточно будет

if(MQLInfoInteger(MQL_TESTER))

?

 
Maxim Kuznetsov:

если файл пишется в COMMON, то у него обязана быть SHARE_READ и довольно непростой контроль за гонкам по записи. Это как-бы прилично, не стрелять в пятку на публике.

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

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

Так ведь сам советник туда ничего и не пишет, только читает.


П.С. К тому же читает только он (в единственном экземпляре пока).
 
Сергей Таболин:

Так ведь сам советник туда ничего и не пишет, только читает.


П.С. К тому же читает только он (в единственном экземпляре пока).

если в COMMON, то SHARE_READ обязательна.

как в анекдоте - "этого нельзя понять, это надо запомнить" :-) 

PS/ когда в тестере - то читает из (отдельного на группу)common не только он, но и все параллельно тестируемые копии. Кстати это тоже потенциальный баг - сдаётся можно обмануть тестер и нарисовать грааль

 
Maxim Kuznetsov:

если в COMMON, то SHARE_READ обязательна.

ну, не обязательна.

с мульти-доступом не всё так радужно как хочется.

 
Andrey F. Zelinsky:

ну, не обязательна.

с мульти-доступом не всё так радужно как хочется.

Надеюсь, с мульти-доступом в режиме "только чтение" проблем не бывает? Или всё же бывает?

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

Совершенно верно. Если не тестер или оптимизатор, то сюда вообще не заходит )))

Артём, если я правильно понял, то моя такая конструкция

избыточна?

Достаточно будет

?

Нет. Наоборот.
Ну это если нужны полумеры.