Блог им. proalexey
Хочу сделать презентацию своей идеи, которая переросла в индикатор скользящей средней, построенной на основе линии линейной регрессии (ЛЛР). Код индикатора в конце поста.
Вот как эта скользяшка(PMA) выглядит рядом с SMA и EMA. Периоды построения у всех одинаковые.
Изначально была идея такая- взять ряд данных (цена Close) на каком-то участке, построить по этим данным линию линейной регрессии. ЛЛР строим следующим образом. По оси Y будут цены Close, по оси X будут порядковые номера баров. Угловой коэффициент (A) и коэффициент смещения (В) простой линейной регрессии y=A*x+B можно найти с помощью метода наименьших квадратов.
Далее была идея — посмотреть в конце участка, как цена Close отклоняется от ЛЛР. Для этого надо построить ЛЛР и найти координату Y(цена) по координате X(N бара).
Построил одну точку-> надо построить остальные. Сказано, сделано. Для каждой цены Close(ось Y) рассчитываем коэффициенты простой линейной регрессии за определенный период и смотрим, какое значение ЛЛР (ось Y) будет на последнем баре(ось X) рассматриваемого участка. Все значения собираем в список. В результате получилась скользящая средняя, рассчитанная на основе линии линейной регрессии.
public static IList<double> PMA(this IList<double> Xseries, int Period) //Prosvirin Moving Average { var result = new List<double>(); double SumOfPowX, SumOfX, n, SumOfXY, SumOfY, x, y, det, a, b; for (int bar = 0; bar < Period; bar++) { result.Add(Xseries[bar]); } for (int bar = Period; bar < Xseries.Count; bar++) { SumOfPowX = 0; SumOfX = 0; n = Period; SumOfXY = 0; SumOfY = 0; for (int i = 0; i < Period; i++) { x = bar - i; y = Xseries[bar - i]; SumOfPowX += x * x; SumOfX += x; SumOfXY += x * y; SumOfY += y; } det = SumOfPowX * n - Math.Pow(SumOfX, 2); a = (SumOfXY * n - SumOfX * SumOfY) / det; b = (SumOfY - a * SumOfX) / n; result.Add(bar * a + b); } return result; }
На первый взгляд, перспективная скользяшка. Но только, если не сравнивать ее с JURIK MOVING AVERAGE (JMA). Вот как PMA выглядит на фоне JMA с тем же периодом.
Может до меня такой индикатор уже кто-то делал, но я не встречал. Поэтому решил сделать пост и выложить код индикатора и библиотеку с индикатором для ТсЛаб в открытый доступ. Эту скользяшку я не скромно назвал PMA (Prosvirin Moving Average)
ССЫЛКА НА БИБЛИОТЕКУ ДЛЯ ТСЛАБ И КОД ИНДИКАТОРА
См.
ru.wikipedia.org/wiki/Фильтр_Ходрика_—_Прескотта
А авторский код джурика у Вас есть ?
www.forexfactory.com/thread/696822-jurik-indicators
(хотя файлы в формате mq4, алгоритм из них легко достается)
… но только, если не сравнивать ее с JMA ;)
херня это все, ребята…
2) На бэк-тесте проверяли? Какой результат?