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