FileOpen не работает

 

Не хочет читать фаилы никакие из  Files


Вот например фаил  Files/fusion.txt


int file_handle = FileOpen("fusion.txt", FILE_READ );

int file_handle = FileOpen("fusion.txt", FILE_READ|FILE_CSV|FILE_COMMON,";" );


и так и сяк пробовал. возвращает -1

Фаил не занят. 

Документация по MQL5: Константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
Документация по MQL5: Константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
  • www.mql5.com
Значения флагов, определяющих режим работы с файлом. Флаги определены следующим образом: При открытии файла можно указать один или более флагов...
 
Попробуйте для начала добавить код из этого раздела справки, и убедиться, что терминал открывает файл именно из той папки, в которой он лежит. Она должна быть внутри TERMINAL_DATA_PATH/MQL5 или внутри TERMINAL_COMMONDATA_PATH, если используется флаг FILE_COMMON.
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
  • www.mql5.com
Идентификаторы для получения информации о клиентском терминале функциями TerminalInfoInteger() и TerminalInfoString() . В качестве параметра эти...
 
andreysneg:
FileOpen("fusion.txt"

FILE_BIN

FILE_ANSI

 
М.б. UAC не дает?
 

Вот такое возвращает:

Когда запускаю в тестере:

2024.10.08 15:17:58.052 2024.01.01 00:00:00   TERMINAL_PATH = D:\_web\mt\fusion

2024.10.08 15:17:58.052 2024.01.01 00:00:00   TERMINAL_DATA_PATH = D:\_web\mt\fusion\Tester\Agent-127.0.0.1-3000

2024.10.08 15:17:58.052 2024.01.01 00:00:00   TERMINAL_COMMONDATA_PATH = C:\Users\ss\AppData\Roaming\MetaQuotes\Terminal\Common



Когда запускаю на реале:

2024.10.08 15:20:27.718 ex1 (AUDUSD,H1) TERMINAL_PATH = D:\_web\mt\fusion

2024.10.08 15:20:27.718 ex1 (AUDUSD,H1) TERMINAL_DATA_PATH = D:\_web\mt\fusion

2024.10.08 15:20:27.718 ex1 (AUDUSD,H1) TERMINAL_COMMONDATA_PATH = C:\Users\ss\AppData\Roaming\MetaQuotes\Terminal\Common


Файлы находятся в  D:\_web\mt\fusion\MQL5\Files\fusion.txt


По любому не читает фаил ни в тестере ни в реале. Ошибка 5004 . ни о чем не говорящяя.


Вот картинка файла

https://i.imgur.com/kPj4kdy.png



 
andreysneg #:

Вот такое возвращает:


Файлы находятся в  D:\_web\mt\fusion\MQL5\Files\fusion.txt


По любому не читает фаил ни в тестере ни в реале. Ошибка 5004 . ни о чем не говорящяя.


Вот картинка файла

https://i.imgur.com/kPj4kdy.png



Так нельзя штатной функцией

--

Если нужно за пределами песочницы - нужно использовать dll

 

Так песочница MQL5/Files  или где песочница ?

TERMINAL_DATA_PATH или  TERMINAL_COMMONDATA_PATH  ?


Как всё не удобно. Можно какойто встроенный windows DLL использовать чтобы читать откуда угодно ?

 
andreysneg #:

Так песочница MQL5/Files  или где песочница ?

TERMINAL_DATA_PATH или  TERMINAL_COMMONDATA_PATH  ?

Да, песочница это MQL5/Files в папке данных терминала, а папке данных агента или в разделяемой папке. DLL там не нужна.

Код без явных ошибок. Смотрите права доступа к этому файлу на уровне системы. Убедитесь, что файл не открыт одновременно в другой программе - она может блокировать доступ. Тогда попробуйте добавить флаги FILE_SHARE_READ | FILE_SHARE_WRITE.

 
Получилось както прочитать если запустить в реале. вчера тоже самое не работало. 
 
andreysneg #:
Получилось както прочитать если запустить в реале. вчера тоже самое не работало. 

Просто в тестере "песочница" немного не там :-) и файлов в ней не оказывалось