ProsvirinAlexey
ProsvirinAlexey личный блог
27 октября 2021, 11:48

Новая СуперСкользяшка (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)

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








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

      (хотя файлы в формате mq4, алгоритм из них легко достается)
      • SergeyJu
        27 октября 2021, 16:29
        Technocratus, декомпилированные видел. Разбираться в таком себе дороже. 
  • bohemian rhapsody
    27 октября 2021, 13:08
    если это на самом деле новый, не существовавший до сих пор индикатор, то круто, молодец!
    … но только, если не сравнивать ее с JMA ;)
  • kot6ra
    27 октября 2021, 13:12
    а можно его как-то в трейдинг вью закинуть?
    • Alex Turner
      27 октября 2021, 22:36
      Andrey_B, https://www.tradingview.com/pine-script-reference/#fun_linreg
  • T-800
    27 октября 2021, 13:38
    Круто, но… Надо приложить результаты тестов.
  • Loki_Lzhec
    27 октября 2021, 14:11
    дай угадаю результат применения? ))) все те же 50 на 50 минус спред ну или комиссия в долгоиграющей перспективе.  Машки чисто облегчают индикацию. ну можно  мтс  на них мутить но всегда плюс еще что то…
  • GOLD
    27 октября 2021, 16:02
    блть… сколько я делал таких «умных» машек — не счесть… ни одна не дала нормальный профит… проверял на сверхдлинных бектестах и на WFT… в разных инструментах и разных тф

    херня это все, ребята…
  • Андрей
    27 октября 2021, 17:51
    В метастоке уже лет 20 такая есть, называется TimeSeries
  • Denis
    27 октября 2021, 19:58
    Кто-то спрашивал, чем занять нейросеть — вот, пожалуйста, «хакните» юрика :)
  • Arslan
    27 октября 2021, 23:11
    Ставлю в настройках JMA период 100, но она выглядит совершенно не так, как у Вас на графике.  А какие значения Phase и Power? 
  • Korssar64
    28 октября 2021, 13:03
    1)Я заметил маленький момент, ваша скользяшка от jma отличается запозданием. Для sma 100 и для ma 100 это разное. Ema будет быстрее. Попробуйте уменьшить на своей pma период и потом сравнивайте с jma.
    2) На бэк-тесте проверяли? Какой результат?

  • Павел Дуков
    30 октября 2021, 16:25
    Алексей, спасибо.
  • Александр
    19 января 2022, 15:33
    Привет Алексей. А ты свою PMA переделал под Тслаб 2.2?

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн