Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нет времени торговать самому? Подпишись на сигнал!
Roman Starinskij
1870
Roman Starinskij 2015.09.02 06:33 

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

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

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

Спасибо. 

Renat Akhtyamov
4792
Renat Akhtyamov 2015.09.02 07:07  
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
7683
Rustamzhan Salidzhanov 2015.09.02 10:51  
если в названии файла несколько точек, то файл средствами МКЛ не создается.
Roman Starinskij
1870
Roman Starinskij 2015.09.02 11:30  
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
6372
Alexey Kozitsyn 2015.09.02 12:17  
Roman Starinskiy:

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

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

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

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

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

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

Rustamzhan Salidzhanov
7683
Rustamzhan Salidzhanov 2015.09.02 16:00  
Roman Starinskiy:

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

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

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