О настройках советников, индикаторов и скриптов
Конкретный пример. Имеется массив из четырех строк. Создаем текстовый файл config.txt с таким содержимым:
/*Размер массива*/
[arraysize],4
/*Содержимое строк*/
[str0],one
[str1],two
[str2],three
[str3],four
Сохраняем этот файл, открываем <каталог данных> выбором меню “Файл”->”Открыть каталог данных”, открываем папку \MQL4\Files\ и кладем файл туда. Создаем тестовый сценарий. В настройках этого сценария можно будет указать имя созданного нами файла, или жестко зашить его в коде. Открываем наш файл где то в при инициализации сценария. Кроме того, в сценарии определяем такую функцию:
bool _GotoConfigSection(string section, int handle) {
if (!FileSeek(handle,0,SEEK_SET) ) return (false);
while(!FileIsEnding(handle)) {
if (FileReadString(handle) == section) return (true);
}
return (false);
}
Эта функция будет выполнять поиск и переход к нужным частям файла. Пишем примерно такой код:
string sArray[];
int h = FileOpen("config.txt", FILE_READ | FILE_SHARE_READ | FILE_CSV, ',');
_GotoConfigSection("[arraysize]", h);
int count = StringToInteger(FileReadString(h) );
ArrayResize(sArray, count);
for (int i = 0; i < count; i++) {
_GotoConfigSection("[str" + IntegerToString(i) + "]", h);
sArray[i] = FileReadString(h);
}
FileClose(h);
В результате нами инициализирован массив из четырех строк. При желании редактируем файл config.txt блокнотом и меняем количество и содержимое строк.
Еще одна распространенная задача. Хранение массива целых с последующей инициализацией массива. В файле config.txt делаем такую запись:
//Размер массива
[arrayintsize],4
//Содержимое массива
[arraycontent],1,2,3,4
Чтение таких данных элементарно. Вызываем _GotoConfigSection(“[arraycontent]”, h) , затем читаем необходимое количество строк, на месте преобразуя их в тип int и записывая данные в массив.