Установка индивидуального параметра индикатора для различных символов в БД.
Довольно часто требуется устанавливать индивидуальные параметры для различных символов в Базе Данных.
Обычно это делается в коде индикатора перечислением символов и установкой для них соответствующих
значений параметра, что часто требует много времени. Хотелось это автоматизировать.
Написал скрипт который создает текстовый файл с именем номера подокна (
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.
Не нужные подобные файлы можно удалить в ручную.
Удачи.