Создание файла параметров (*.set)

 

Всем привет! Столкнулся с проблемой: мой советник содержит много переменных и после переустановки его на графике приходится делать много рутинной работы, заполняя "Параметры" вручную. Решил автоматизировать данный процесс: взял структуру файла параметров *.set (открыл через тотал коммандер F4) и сделал (как мне кажется) идентичный файл, формируемый советником (ТХТ потом меняю вручную расширение файла на set). Но, он не загружается в параметры. Видимо не тот формат. Решил дальше не ковыряться, а спросить: Как вы делаете файл Параметров программно? На что обратить внимание при формировании данного файла?

Кусок кода:

filehandle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_TXT|FILE_COMMON);
FileWrite(filehandle,"itochvhodvverh=",tochvhodvverh,"||0||1||10||N\n\r",
"iBidpovtvverh=",Bidpovtvverh,"||10.00000000||1.000000||100.000000||N\n\r");
 
string fname="SetName"/"+".set";
int handle = FileOpen(fname, FILE_CSV | FILE_WRITE | FILE_ANSI);
string strstr=""
/*
тут наполняем строковую переменную желаемым содержимым
*/
FileWriteString(handle,strstr);
FileClose(handle);

как то так.

ЗЫ. странно, вставил код правильно, а подсветки почему то нет...

MQL5.community - Памятка пользователя
MQL5.community - Памятка пользователя
  • 2010.02.23
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы недавно зарегистрировались и у вас возникли вопросы: Как вставить картинку в сообщение на форуме, как красиво оформить исходный код MQL5, где находятся ваши Личные сообщения? В этой статье мы подготовили для вас несколько практических советов, которые помогут быстрее освоиться на сайте MQL5.community и позволят в полной мере воспользоваться доступными функциональными возможностями.
 

В процессе загрузки советника на график, когда меняете параметры вречную, после того как все поменяли как вам надо - нажать Save и сохранить этот файл. Назвать его можно как угодно, например eurusdm15 (расширение set).

Если я тестирую на VPS, то у меня было такое что VPS сама перезагружается, и Метатрейдер, когда снова открывается - то с советником с настройками по умолчанию (настройки сбиваются). Поэтому просто для себя, в МетаЕдиторе меняю настройки на мои и переименовываю советник на [имя советника]_eurusd_m15 (например). Вообще-то переименовывать советники не рекомендуется ... но я иногда делаю это просто для себя (для собственного использования). Если торгую советником на eurusd m15 и gbpusd h1 на VPS'е, то меняю настройки в МетаЕдиторе на нужные, и переименовываю на [имя советника]_eurusd_m15 и [имя советника]_gbpusd_h1.

Если использую set файл, то смотрю его в блокноте.

PS. Вы имеете в виду программно? Программно не знаю - я не программист сорри

 
joo:

как то так.

ЗЫ. странно, вставил код правильно, а подсветки почему то нет...

Вы для своего советника формируете файл параметров автоматически? 

У меня 140 строк в set файле они уместятся все в строковую переменную? И помимо текста, там есть еще значения. Т.е. структура строки "текст",переменная, "текст".

Мне почему-то кажется, что у меня внутренняя структура генерируемого файла не совпадает с необходимой для set файла. Но при открытии через F4 все гуд, а вот через F3 в генерируемом файле появляются какие-то пробелы.

Поэтому мой вопрос скорее не теоретический, а практический, т.е. к тем кто выгружает данные в set файл и у кого это получается. 

 
Forex_Noob:

1. Вы для своего советника формируете файл параметров автоматически? 

2. У меня 140 строк в set файле они уместятся все в строковую переменную? И помимо текста, там есть еще значения. Т.е. структура строки "текст",переменная, "текст".

3. Мне почему-то кажется, что у меня внутренняя структура генерируемого файла не совпадает с необходимой для set файла. Но при открытии через F4 все гуд, а вот через F3 в генерируемом файле появляются какие-то пробелы.

4. Поэтому мой вопрос скорее не теоретический, а практический, т.е. к тем кто выгружает данные в set файл и у кого это получается. 

1. Да (я бы выразился так: "программно").

2. В файл уместится всё и вся, он почти резиновый и может занять весь HDD. Другое дело что параметров не может быть более чем 1024

3. См. в моём примере параметры функции FileOpen()

4. У кого как конечно, а меня получается. :)

 
Forex_Noob:

Всем привет! Столкнулся с проблемой: мой советник содержит много переменных и после переустановки его на графике приходится делать много рутинной работы, заполняя "Параметры" вручную. Решил автоматизировать данный процесс: взял структуру файла параметров *.set (открыл через тотал коммандер F4) и сделал (как мне кажется) идентичный файл, формируемый советником (ТХТ потом меняю вручную расширение файла на set). Но, он не загружается в параметры. Видимо не тот формат. Решил дальше не ковыряться, а спросить: Как вы делаете файл Параметров программно? На что обратить внимание при формировании данного файла?

Кусок кода:

По умолчанию файл открывается в кодировке UNICODE. Поставь флаг  FILE_ANSI  и всё будет нормально. Попробуй открыть свои файлы с помощью текстового редактора WordPad и увидешь разницу.

А зачем менять расширение файла вручную? Задай расшрение в программе при создании файла. 

Удачи! 

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов - Документация по MQL5
 
Keon:

По умолчанию файл открывается в кодировке UNICODE. Поставь флаг  FILE_ANSI  и всё будет нормально. Попробуй открыть свои файлы с помощью текстового редактора WordPad и увидешь разницу.

А зачем менять расширение файла вручную? Задай расшрение в программе при создании файла. 

Удачи! 

ok. Спасибо всем.

Юникод заменил на Анси . Теперь другая проблема при переводе каретки посредством "\n\r" , новая строка начинается с табуляции, а не от края... Как быть? Уже подумываю над тем, чтобы убрать \n\r и для каждой строки писать 

FileSeek(filehandle,0,SEEK_END); 

но мне кажется, что это не совсем правильно...

ЗЫ Там где табуляции от начала строки нет - все гуд, значение переменных без проблем загружаются... 

 
Forex_Noob:

ok. Спасибо всем.

Юникод заменил на Анси . Теперь другая проблема при переводе каретки посредством "\n\r" , новая строка начинается с табуляции, а не от края... Как быть? Уже подумываю над тем, чтобы убрать \n\r и для каждой строки писать 

но мне кажется, что это не совсем правильно...

ЗЫ Там где табуляции от начала строки нет - все гуд, значение переменных без проблем загружаются... 

Я данные в файл вывожу построчно и всё нормально.

Нимер в вашем слуае:

FileWriteString(filehandle,"itochvhodvverh="+tochvhodvverh+"||0||1||10||N\n\r");
FileWriteString(filehandle,"iBidpovtvverh="+Bidpovtvverh+"||10.00000000||1.000000||100.000000||N\n\r");
 
Keon:

Я данные в файл вывожу построчно и всё нормально.

Нимер в вашем слуае:

Я так и сделал, только \n\r заменил на FileSeek . Щас посмотрю, что выйдет.

ЗЫ. Все отлично! Еще раз всем спасибо. 

 

Всем привет. Подскажите в сетах прописывается для каких счетов они предназначены центовых или долларовых??? И можно ли их исправить на нужный мне?!

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