Разностное исчисление, примеры. - страница 3

 
Nikolai Semko:


Я не об этом. Я не говорил, что "при интерполяции это "трассер", и  совсем не регрессии". 

Честно говоря я даже не понимаю смысл этой фразы. 
Я имел ввиду, что все виды интерполяции являются перерисовываемые ( и Ваша версия тоже перерисовываемая). А неперерисовываемой является только трассирующий след от этих интерполяционных функций, чем слова свои подкрепил анимационными gif - ками. Советую еще раз их внимательно изучить. На этих гифках трассирующий след - это двухцветная сине-фиолетовая линия. Но она не является интерполяционной функцией. Синий цвет означает, что интерполяционная функция в этой точке направлена вверх, а фиолетовая - вниз.
При степени полинома = 0 этот трассирующий след обычная машка (Moving Avarage)


Эти буферы не перерисовываются. Первый интерполяция второй экстраполяция. Видно же по коду, на каждом баре одно значение.

 
      a1_Buffer[i]=((open[i] - Znach)    +5061600*a1_Buffer[i+1 ]-7489800   *a1_Buffer[i+2 ]+4926624*a1_Buffer[i+3 ]-1215450*a1_Buffer[i+4 ])/1282975;

      a2_Buffer[i]=  3160*a1_Buffer[i]   -6240   *a1_Buffer[i+1 ]    +  3081*a1_Buffer[i+2 ];
 
Nikolai Semko:


Я не об этом. Я не говорил, что "при интерполяции это "трассер", и  совсем не регрессии". 

Честно говоря я даже не понимаю смысл этой фразы. 
Я имел ввиду, что все виды интерполяции являются перерисовываемые ( и Ваша версия тоже перерисовываемая). А неперерисовываемой является только трассирующий след от этих интерполяционных функций, чем слова свои подкрепил анимационными gif - ками. Советую еще раз их внимательно изучить. На этих гифках трассирующий след - это двухцветная сине-фиолетовая линия. Но она не является интерполяционной функцией. Синий цвет означает, что интерполяционная функция в этой точке направлена вверх, а фиолетовая - вниз.
При степени полинома = 0 этот трассирующий след обычная машка (Moving Avarage)


а чем и как вы видео снимали ?
(вечно мучающий вопрос, потому как всякому "нехудожнику" мучительно больно оформлять софт для маркета :-) писать проще )
 

Добавил еще перерисовываемых линий построения: первой (красная), второй (серая) и третьей (зеленая) степеней.

      a1_Buffer[i]=((open[i] - Znach)    +5061600*a1_Buffer[i+1 ]-7489800   *a1_Buffer[i+2 ]+4926624*a1_Buffer[i+3 ]-1215450*a1_Buffer[i+4 ])/1282975;

      a2_Buffer[i]=  2701*a1_Buffer[i]   -5328   *a1_Buffer[i+1 ]    +  2628 *a1_Buffer[i+2 ];

      a4_Buffer[i+92]=a1_Buffer[i];   if(i<=1) { for(z=92-1;z>=0;z--){        a4_Buffer[i+0+z]=  5*a4_Buffer[i+1+z]  -  10*a4_Buffer[i+2+z]   +   10*a4_Buffer[i+3+z]  -  5*a4_Buffer[i+4+z]  +  1*a4_Buffer[i+5+z];  }}

      a3_Buffer[i+92]=a1_Buffer[i];   if(i<=1) { for(z=92-1;z>=0;z--){        a3_Buffer[i+0+z]=  4*a3_Buffer[i+1+z]  -  6*a3_Buffer[i+2+z]   +   4*a3_Buffer[i+3+z]  -  1*a3_Buffer[i+4+z] ;  }}

      a5_Buffer[i+92]=a1_Buffer[i];   if(i<=1) { for(z=92-1;z>=0;z--){        a5_Buffer[i+0+z]=  3*a5_Buffer[i+1+z]  -  3*a5_Buffer[i+2+z]   +   1*a5_Buffer[i+3+z]   ;  }}

      a6_Buffer[i+92]=a1_Buffer[i];   if(i<=1) { for(z=92-1;z>=0;z--){        a6_Buffer[i+0+z]=  2*a6_Buffer[i+1+z]  -  1*a6_Buffer[i+2+z]     ;  }}

//----
   SetIndexShift(2,-72);
   SetIndexShift(5,20);
   SetIndexShift(4,20);
   SetIndexShift(0,20);
   SetIndexShift(1,20);

Получилось:

Полином второй степени (серая) касается экстраполированной линии в последней точке, как и должно быть.

Файлы:
 
Aleksey Panfilov:

Предлагаю собрать в эту ветку индикаторы и эксперты на разностном исчислении, в открытом коде.

Если будет интерес со временем соберем или нарисуем, что нибудь путное. :)

Для примера переписал индикатор в более наглядном варианте:


Вы ещё Юлианский и Григорианский календарь сравните с Китайским новым годом.

 
Vladimir Zubov:

Вы ещё Юлианский и Григорианский календарь сравните с Китайским новым годом.


Любопытно. Зачем? )))

Вы видимо проводите параллель  с разностным и дифференциальным исчислениями? 

Думаю это вполне оправданно. )))

 
Yousufkhodja Sultonov:

Не пробовали по этой формуле?:

Y = a0 + a1X + a2X^2 + a3X^3 + a4X^4


Попробуйте по такой формуле:

Y = a0 + a1X + a2X^3 + a3X^5 

 
Petr Doroshenko:

Попробуйте по такой формуле:

Y = a0 + a1X + a2X^3 + a3X^5 

Я могу и Y = a0 + a1X + a2X^3 + a3X^5  + a4X^7, но, в чем смысл? Как обосновываете именно такой подход?

Сейчас делаю:

X5 = a0 + a1X1 + a2X2 + a3X3 + a4X4

т.е., исследую зависимость цены последнего бара (Х5) от цен предыдущих  4-х баров (Х1, Х2, Х3,Х4) и буду смотреть на изменения коэффициентов a0, a1, a2, a3, a4. Интересные вещи получаются, скоро сообщу рез-ты.

 
Maxim Kuznetsov:
а чем и как вы видео снимали ?
(вечно мучающий вопрос, потому как всякому "нехудожнику" мучительно больно оформлять софт для маркета :-) писать проще )

Съемка видео с экрана и формирование с него gif-файла осуществлялось программой Camtasia 9. В ютубе много информации.

 
Aleksey Panfilov:

Эти буферы не перерисовываются. Первый интерполяция второй экстраполяция. Видно же по коду, на каждом баре одно значение.


Да, я ошибся. Думал, что Вы, действительно, используете аппроксимацию. Посмотрел повнимательней Ваш код и понял, что это не аппроксимация, а просто банальное усреднение, пусть и весьма необычное. После чего Вы сдвигаете фиолетовую линию и красную линию на 72 бара влево, а красный хвостик из 92 баров дорисовываете, и он как раз перерисовывается с каждым новым баром. Синяя линия формируется из сдвинутой фиолетовой. И, кстати, правильнее использовать цену close, а не open. Если поменять на close, то сразу видно, что с каждым тиком красный хвостик из 92 баров прыгает.

Сдвижка влево скользящих средних не несет в себе никакой полезности и практического применения. А только служит для красивости, подгонки и обалванивания. 

Нужно понять разницу между аппроксимацией и сглаживанием (усреднением). При аппроксимации вычисляются на заданном отрезке данных коэффициенты какой-то функции (полиномиальные, Фурье, Безье, сплайны и т.д.) и  эти коэффициенты как правило меняются все с изменением хотя бы одного значения данных, поэтому функция и перерисовывается на всем промежутке наблюдаемых данных. А вот при усреднении считается только одна текущая точка на основе предыдущих данных, поэтому усреднения (сглаживания) не перерисовываются, но зато всегда запаздывают от данных в отличии от аппроксимации.
И не понял я, при чем здесь полином какой-то степени и бином Ньютона, если даже степеней то в коде никаких нет.

 

Приветик, Мальчишки.

Нет, все это интересно, конечно. С точки зрения занятости. Но! Различные трюки с переносом результата и построения линий в прошлый период??? В вашем примере { (Типа)  a4_Buffer[i+0+z]=  5*a4_Buffer[i+1+z] и ТД. } К чему могут привести?? Правильно! К получению результата на последнем тике и возможностью Его использованию только на графике. В виде совершенно потрясающей картинки.

Причина обращения: