Давненько я
не брал в руки шашки не писал индикаторов на Lua. Вчера ближе к ночи приспичило перенести старый отработанный индикатор с Python в терминал на Lua-QLua.
Взял, как водится, какой-то готовый, и начал его переделывать. Дел, в общем, немного, вместо одной линии нарисовать три, и оставив болванку везде поменять код. Python, в общем, похож на Lua (все языки программирования оч. похожи), а потому, берем код Python, в Notepad++ копипастим его в Lua индикатор, немного исправляем синтаксис, немного исправляем код под особенности индикаторов, и через 20 минут готово.
Пытаемся добавить на график. Счас! Индикатор вообще не виден.
Начинаем корежить код и танцевать с бубном. Че сделали, так и не поняли, но индикатор в меню настроек появился — победа! Но, не тут-то было. Однако, добавить не удается, тут же вылетает. Опять танцы с бубном.
Теперь добавляется, но Quik наглухо виснет и падает. Но, зато начал писать ошибку — строка 86, там какой-то nil. Какой еще nil, там строка, типа, buff[i] = a*b[i]^2 + c*d[i]^2. Да, сколько можно? Откуда там nil? Бредятина какая-то.
Пишем туда несколько message(), может до выпадания в осадок успеет что вывести? Успел, вывел — тысячи три чисел, никакого nil в помине нет, сообщение об ошибке исчезло, но Quik все равно упал.
Снимаем все message(), кидаем индикатор на график — все работает. Чудеса.) Че, в итоге, сделал, и с чего это вдруг заработало, сам не понял. И чего ему с самого начала было не работать?
Ну, и вот что в итоге получилось:
Практически тот же Bollinger Bands, только алгоритм другой, и много настроек. Задумано было, чтобы средняя была максимально приближена к линии регрессии, и сглажены линии СТО.
А исходя из чего каналы считаются и строятся?
И исходя из каких данных считается волатильность?
Алгоритмы другие, но сути не меняет.