Блог им. proalexey

Новая СуперСкользяшка (PMA). Такой еще не было.

Скользящая средняя, построенная на основе линии линейной регрессии.

 

      Хочу сделать презентацию своей идеи, которая переросла в индикатор скользящей средней, построенной на основе линии линейной регрессии (ЛЛР). Код индикатора в конце поста.

Вот как эта скользяшка(PMA) выглядит рядом с SMA и EMA. Периоды построения у всех одинаковые.
Новая СуперСкользяшка (PMA). Такой еще не было.

 

        Изначально была идея такая- взять ряд данных (цена Close) на каком-то участке, построить по этим данным линию линейной регрессии. ЛЛР строим следующим образом. По оси Y будут цены Close, по оси X будут порядковые номера баров.  Угловой коэффициент (A) и коэффициент смещения (В) простой линейной регрессии y=A*x+B можно найти с помощью метода наименьших квадратов.
Новая СуперСкользяшка (PMA). Такой еще не было.
      Далее была идея — посмотреть в конце участка, как цена Close отклоняется от ЛЛР. Для этого надо построить ЛЛР и найти координату Y(цена) по координате X(N бара).
Новая СуперСкользяшка (PMA). Такой еще не было.

       Построил одну точку-> надо построить остальные. Сказано, сделано. Для каждой цены 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). Такой еще не было.

     Может до меня такой индикатор уже кто-то делал, но я не встречал. Поэтому решил сделать пост и выложить код индикатора и библиотеку с индикатором для ТсЛаб в открытый доступ. Эту скользяшку я не скромно назвал PMA (Prosvirin Moving Average)

ССЫЛКА НА БИБЛИОТЕКУ ДЛЯ ТСЛАБ И КОД ИНДИКАТОРА








★15
17 комментариев
И линейную и взвешенную линейную регрессию давно применяли. Даже на смартике можно найти. Даже более сложные вещи, типа сглаживающего сплайна, в качестве механизма построения индикатора применяли. 
См. 
ru.wikipedia.org/wiki/Фильтр_Ходрика_—_Прескотта
А авторский код джурика у Вас есть ? 
avatar
SergeyJu, авторский наверное, только у самого Юрика есть — это же платный продукт, поставляемый в виде черного ящика — дллки. Но ее декомпилированных версий по сети много гуляет, тут, например:
www.forexfactory.com/thread/696822-jurik-indicators

(хотя файлы в формате mq4, алгоритм из них легко достается)
avatar
Technocratus, декомпилированные видел. Разбираться в таком себе дороже. 
avatar
если это на самом деле новый, не существовавший до сих пор индикатор, то круто, молодец!
… но только, если не сравнивать ее с JMA ;)
avatar
а можно его как-то в трейдинг вью закинуть?
avatar
Andrey_B, https://www.tradingview.com/pine-script-reference/#fun_linreg
avatar
Круто, но… Надо приложить результаты тестов.
avatar
дай угадаю результат применения? ))) все те же 50 на 50 минус спред ну или комиссия в долгоиграющей перспективе.  Машки чисто облегчают индикацию. ну можно  мтс  на них мутить но всегда плюс еще что то…
avatar
блть… сколько я делал таких «умных» машек — не счесть… ни одна не дала нормальный профит… проверял на сверхдлинных бектестах и на WFT… в разных инструментах и разных тф

херня это все, ребята…
avatar
В метастоке уже лет 20 такая есть, называется TimeSeries
avatar
Андрей, У меня не было метастока. Вот поэтому изобрел свой велосипед. И кодом поделился. Спасибо, что направили к первоисточнику. Я этим индикатором не пользуюсь. А вот, угловым коэффициентом от него пользуюсь. И весьма успешно.
avatar
Кто-то спрашивал, чем занять нейросеть — вот, пожалуйста, «хакните» юрика :)
avatar
Ставлю в настройках JMA период 100, но она выглядит совершенно не так, как у Вас на графике.  А какие значения Phase и Power? 
avatar
1)Я заметил маленький момент, ваша скользяшка от jma отличается запозданием. Для sma 100 и для ma 100 это разное. Ema будет быстрее. Попробуйте уменьшить на своей pma период и потом сравнивайте с jma.
2) На бэк-тесте проверяли? Какой результат?

avatar
Алексей, спасибо.
avatar
Привет Алексей. А ты свою PMA переделал под Тслаб 2.2?
avatar

теги блога ProsvirinAlexey

....все тэги



UPDONW
Новый дизайн