Скачать MetaTrader 5

Ошибка 5002 в названии файла

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Roman Starinskij
1918
Roman Starinskij  

Один новый брокер, назовем его "G" передает названия пар таким образом: "EURUSD....".

Программа должна создать файл с названием символа "EURUSD.....txt". На что возвращает ошибку "5002", якобы не правильное название файла. Вручную файл создается нормально, а программно не хочет.

Как можно решить такое? Раньше символы были с некими префиксами "EURUSDhb" и файлы создавались нормально. Чистить название файла от посторонних символов, так в MQL нет регулярных выражений...

Спасибо. 

Renat Akhtyamov
7010
Renat Akhtyamov  
Roman Starinskiy:

Один новый брокер, назовем его "G" передает названия пар таким образом: "EURUSD....".

Программа должна создать файл с названием символа "EURUSD.....txt". На что возвращает ошибку "5002", якобы не правильное название файла. Вручную файл создается нормально, а программно не хочет.

Как можно решить такое? Раньше символы были с некими префиксами "EURUSDhb" и файлы создавались нормально. Чистить название файла от посторонних символов, так в MQL нет регулярных выражений...

Спасибо. 

MQL достаточно крутой язык для решения практически всех задач с целью построения АТС.


Вариант 1. Выведите во внешние переменные префикс в названии инструмента.

Этот префикс будет использоваться для создания имени файла для чтения/записи:

extern string Prefix="..."

Имя файла = "EURUSD"+Prefix+".txt"; //результат "EURUSD...txt""


Вариант 2. Название файла создается не прямым указанием имени инструмента, а косвенным, т.е. командой Symbol().

Имя файла = Symbol()+".txt"; //результат "EURUSD....txt"


Вариант 3. Вырезаем из имени инструмента только значимую часть

Имя файла = StringSubstr(Symbol(),0,6)+".txt"; //результат "EURUSD.txt"


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

Rustamzhan Salidzhanov
7815
Rustamzhan Salidzhanov  
если в названии файла несколько точек, то файл средствами МКЛ не создается.
Roman Starinskij
1918
Roman Starinskij  
new-rena:

MQL достаточно крутой язык для решения практически всех задач с целью построения АТС.


Вариант 1. Выведите во внешние переменные префикс в названии инструмента.

Этот префикс будет использоваться для создания имени файла для чтения/записи:

extern string Prefix="..."

Имя файла = "EURUSD"+Prefix+".txt"; //результат "EURUSD...txt""


Вариант 2. Название файла создается не прямым указанием имени инструмента, а косвенным, т.е. командой Symbol().

Имя файла = Symbol()+".txt"; //результат "EURUSD....txt"


Вариант 3. Вырезаем из имени инструмента только значимую часть

Имя файла = StringSubstr(Symbol(),0,6)+".txt"; //результат "EURUSD.txt"


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

Большое спасибо за ответы. Сейчас поясню.

Вопрос был в том, что брокер в ответ вызова функции Symbol () возвращает название символа "EURUSD...". То есть не обычный евробакс, а с префиксом "...". И префикс может меняться для другого символа.

Необходимо создавать файлы с названиями инструментов. Это может быть как форекс (6 символов), так и фонды (не фиксированное к-во символов). Через программный код создать файл с названием "EURUSD..." не получается, выдается ошибка. 

Alexey Kozitsyn
7897
Alexey Kozitsyn  
Roman Starinskiy:

Большое спасибо за ответы. Сейчас поясню.

Вопрос был в том, что брокер в ответ вызова функции Symbol () возвращает название символа "EURUSD...". То есть не обычный евробакс, а с префиксом "...". И префикс может меняться для другого символа.

Необходимо создавать файлы с названиями инструментов. Это может быть как форекс (6 символов), так и фонды (не фиксированное к-во символов). Через программный код создать файл с названием "EURUSD..." не получается, выдается ошибка. 

В момент получения имени уберите (программно) точки.
Roman Starinskij
1918
Roman Starinskij  
Tapochun:
В момент получения имени уберите (программно) точки.

Да, так и сделал. Через функцию StringReplace создал переменную с значением функции Symbol и затер точки.

Метод 100%? Есть ли еще какие-то ограничения (символы) у MQL4 для создания файлов?

Rustamzhan Salidzhanov
7815
Rustamzhan Salidzhanov  
Roman Starinskiy:

Да, так и сделал. Через функцию StringReplace создал переменную с значением функции Symbol и затер точки.

Метод 100%? Есть ли еще какие-то ограничения (символы) у MQL4 для создания файлов?

   Есть еще ограничения на расширения файлов, читайте в доке. 
Roman Starinskij
1918
Roman Starinskij  
Rustamzhan Salidzhanov:
   Есть еще ограничения на расширения файлов, читайте в доке. 
Спасибо. Буду изучать. Сейчас все работает, как и нужно было.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий