Установка индивидуального параметра индикатора для различных символов в БД.

Довольно часто требуется устанавливать индивидуальные параметры для различных символов в Базе Данных. Обычно это делается в коде индикатора перечислением символов и установкой для них соответствующих значений параметра, что часто требует много времени. Хотелось это автоматизировать.
Написал скрипт который создает текстовый файл с именем номера подокна (ChartID) в папке AmiBroker и автоматически сохраняет в нем параметры.
///////////////////////////////
//
//   Установка параметра
//   различного для разных символов
//
//
//   параметр по умолчанию
   pd = 6;

//   минимальное значение
   minimum = 3;

//   максимальное значение
   maximum =15;

//   шаг изменения
   step = 1;

// Для установки параметра отличного от параметра по умолчанию:
// 1. заходим в параметры
// 2. опцию "Change Parametr" ставим в положение "Enable"
// 3. устанавливаем необходимое значение параметра
// 4. опцию "Change Parametr" ставим в положение "Disable"
//
// ooo
// www.amisite.ru
//
///////////////////////////////

pd = 6;

m =
ParamToggle("Change Parametr", "Disable|Enable");
per =
Param("period", pd, minimum, maximum, step);

chart =
NumToStr(GetChartID(), format=5.0, separator = False);
symbol =
Name();
symbLen =
StrLen(symbol);

fo =
fopen(chart+".amisite", "r");

if(fo == False)
{
   fo =
fopen(chart+".amisite", "a");fclose(fo);   // создаем файл
   fo =
fopen(chart+".amisite", "r");
}

f =
fgets(fo);
fclose(fo);
pos =
StrFind(f, "="+symbol+"=");      // ищем символ в строке

if(pos == False)      // создаем символ в файле если его не было
{
   fo =
fopen(chart+".amisite", "a"
);
   symb =
"="+symbol+"="+NumToStr(pd, format=3
);
   
fputs(symb, fo);
      // пишем символ в файл с параметром по умолчанию
   
fclose(fo);
}


if(m)      // пишем в файл необходимый параметр
{
   fo =
fopen(chart+".amisite", "r");    // открываем для чтения
   sw =
fgets(fo);
   
fclose(fo);
   posw =
StrFind(sw, "="+symbol+"=");   // ищем символ в строке
   pw =
StrMid(sw, posw-1, symbLen+5);   // берем 3 знака после него
   b =
"="+symbol+"="+NumToStr(per, format=3);
   sn =
StrReplace(sw, pw, b);           // меняем значение
   fo =
fopen(chart+".amisite", "w");      
   
fputs(sn, fo);                        // пишем новую строку в файл
   
fclose(fo);
}

fo =
fopen(chart+".amisite", "r");       // открываем для чтения
st =
fgets(fo);
fclose(fo);
pos =
StrFind(st, "="+symbol+"=");               // ищем символ в строке
PN =
StrToNum(StrMid(st, pos+symbLen+1, 3));     // берем 3 знака после него

/////////////////////////////////
//
//   конец
//
//   параметр PN фиксирован для каждого символа в отдельности
//   и готов к дальнейшему использованию
//
/////////////////////////////////


//   пример

rs =RSI(PN);
Plot(rs, "RSI("+PN+")", colorRed, styleLine);

Небольшая инструкция.

Этот скрипт выдает переменную PN которая сохраняется отдельно для каждого символа в базе данных. В дальнейшем её можно использовать как параметр для Вашего индикатора. В конце скрипта есть пример подстановки в RSI.
Как пользоваться
Открываем окно параметров



Переключатель "Change Param" ставим в положение "Enable"



Изменяем параметр нашего индикатора



Важно!!!
Переключатель "Change Param" возвращаем в положение "Disable"
После чего окно параметров можно закрыть.




Внимание! При частом использовании скрипта в различных индикаторах будет создано множество файлов вида 12345.amisite в папке в которую установлен AmiBroker.
Не нужные подобные файлы можно удалить в ручную.


Удачи.