Работа агентов с файлами - страница 2

 
komposter:

Насколько я понял, речь о файле-семафоре.

Все так. Но нужно понять как изначально в платформу заложена работа с общим между агентом файлами. 3 часа читаю доки, но не врублю...
 
Figar0:
Все так. Но нужно понять как изначально в платформу заложена работа с общим между агентом файлами. 3 часа читаю доки, но не врублю...

Справочник MQL5  ->  Программы MQL5  ->  Тестирование торговых стратегий


По умолчанию все файловые операции в языке MQL5 производятся в пределах "файловой песочницы" и при тестировании эксперту доступна только собственная "файловая песочница". Для того чтобы индикатор и эксперт при тестировании работали с файлами из одной папки, использовался флаг FILE_COMMON. Пример кода из эксперта:

//--- откроем файл
   file=FileOpen(filename,FILE_WRITE|FILE_CSV|FILE_COMMON,";");
//--- проверим успешность операции
   if(file==INVALID_HANDLE)
     {
      PrintFormat("Не удалось открыть на запись файл %s. Код ошибки=%d",filename,GetLastError());
      return;
     }
   else
     {
      //--- сообщим о записи в общую папку всех клиентских терминалов и ее местоположение
      PrintFormat("Файл будет записан в папке %s",TerminalInfoString(TERMINAL_COMMONDATA_PATH));
     }

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

//--- откроем файл
   int file=FileOpen(fname,FILE_READ|FILE_CSV|FILE_COMMON,";");
//--- проверим успешность операции
   if(file==INVALID_HANDLE)
     {
      PrintFormat("Не удалось открыть на чтение файл %s. Код ошибки=%d",fname,GetLastError());
      return;
     }
   else
     {
      //--- сообщим местонахождение общей папки всех клиентских терминалов
      PrintFormat("Файл будет прочитан из папки %s",TerminalInfoString(TERMINAL_COMMONDATA_PATH));
     }

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