...It's time for financial transactions...

Main menu

О настройках советников, индикаторов и скриптов

Конкретный пример. Имеется массив из четырех строк. Создаем текстовый файл 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 и записывая данные в массив.

Leave a Reply

Your email address will not be published.

eleven − six =