При тестировании стираются исходные файлы

Михаил  

Тестирую советник в МТ5. В процессе работы он создаёт и по ходу торговли модифицирует файлы. При повторном тестировании созданные файлы (они должны быть исходными) стираются и создаются заново. Это не ошибка советника, стираются все файлы из рабочего каталога. Пробовал и в текущей папке (...Tester\Agent-127.0.0.1-3000\MQL5\Files) и в общей (...AppData\Roaming\MetaQuotes\Terminal\Common\Files). Очень неожиданная неприятность, в МТ4 такого не было. Как решить данный вопрос, ведь в МТ5 можно работать только в "песочнице", убрали возможность явно задавать сторонний путь.

Может быть в рабочем режиме при запуске советника файлы стираться не будут, но как отлаживать советник? 

Alexey Viktorov  
Михаил:

Тестирую советник в МТ5. В процессе работы он создаёт и по ходу торговли модифицирует файлы. При повторном тестировании созданные файлы (они должны быть исходными) стираются и создаются заново. Это не ошибка советника, стираются все файлы из рабочего каталога. Пробовал и в текущей папке (...Tester\Agent-127.0.0.1-3000\MQL5\Files) и в общей (...AppData\Roaming\MetaQuotes\Terminal\Common\Files). Очень неожиданная неприятность, в МТ4 такого не было. Как решить данный вопрос, ведь в МТ5 можно работать только в "песочнице", убрали возможность явно задавать сторонний путь.

Может быть в рабочем режиме при запуске советника файлы стираться не будут, но как отлаживать советник? 

А где это в агент-папке вдруг появилась папка MQL5 да ещё и с вложенной в неё папкой Files?

И разве была когда-то возможность писать файлы в сторонний путь???

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

Михаил  
Alexey Viktorov:

А где это в агент-папке вдруг появилась папка MQL5 да ещё и с вложенной в неё папкой Files?

И разве была когда-то возможность писать файлы в сторонний путь???

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

1. Есть такая папка :). Она появляется, когда пишешь в файл.  Дистрибутив МТ5 от binary.com я недавно скачал ещё изучаю. Заодним и переписал свой старый советник с МТ4. Получил такую проблемку. А старый советник пишет файлы туда, куда я напишу. Единственно, что необходимо пописать полный путь с именем диска.

2. Открываю файлы с флагами: FILE_READ|FILE_WRITE|FILE_BIN|FILE_COMMON .Это файл для записи структуры. Второй проще, текстовый. Пробовал и с флагом  FILE_COMMON  и без него, результат одинаковый.

Alexey Viktorov  
Михаил:

1. Есть такая папка :). Она появляется, когда пишешь в файл.  Дистрибутив МТ5 от binary.com я недавно скачал ещё изучаю. Заодним и переписал свой старый советник с МТ4. Получил такую проблемку. А старый советник пишет файлы туда, куда я напишу. Единственно, что необходимо пописать полный путь с именем диска.

2. Открываю файлы с флагами: FILE_READ|FILE_WRITE|FILE_BIN|FILE_COMMON .Это файл для записи структуры. Второй проще, текстовый. Пробовал и с флагом  FILE_COMMON  и без него, результат одинаковый.

Выдержка из документации

Примечание

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

Так было всегда. И в mql4 тоже. Мне почему-то больше нравится писать в общую папку. От 6** билда МТ4 и не искал никогда куда будет писать из тестера если не использовать FILE_COMMON.

Может не перемещается указатель в конец файла? Потому и перезаписывает файл...

Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
Файловые операции / FileOpen - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Михаил  
Alexey Viktorov:

Выдержка из документации

Так было всегда. И в mql4 тоже. Мне почему-то больше нравится писать в общую папку. От 6** билда МТ4 и не искал никогда куда будет писать из тестера если не использовать FILE_COMMON.

Может не перемещается указатель в конец файла? Потому и перезаписывает файл...

1. Проверил. Действительно в последнем билде МТ4 тот мой старый советник не пишет файлы. Давно этим не пользовался и не обратил внимания когда это запретили. Я старым советником уже несколько лет не пользуюсь. Это уже неважно. Я тоже пришёл к выводу, что надо использовать COMMON, единственно, что будет неудобно, это искать эти файлы сторонними программами, особенно на виртуальных серверах.

2. Указатель я перемещаю нормально, ведь пока советник работает у меня записи дописываются (они пишутся по одной). Я пробовал в эту папку FILES просто левые файлы копировать. Агент при пуске всю папку чистит. В папке COMMON этой проблемы нет, буду пользоваться ей. Спасибо за подсказку.

И ещё одна недоработка в MQL5 - если я при тестировании нажимаю кнопку "Стоп", то DELINIT() не выполняется и я не получаю итоговую статистику. В MQL4 такой ошибки нет, я этим постоянно пользуюсь.