Системный индикатор Султонова - страница 113

 
Олег avtomat:

Метод наименьших квадратов имеет очень большую колебательность. Именно поэтому он не является грубым. И не является оптимальным. Это хорошо известно. 

Для решения вашей задачи, Юсуф, наиболее пригодными являются градиентные методы.

Опишите, пож., градиентные методы, вкратце или укажите источники наиболее полно раскрывающие суть метода.

 
Yousufkhodja Sultonov:

Опишите, пож., градиентные методы, вкратце или укажите источники наиболее полно раскрывающие суть метода.

Вкратце: Градиентные методы.

Более развёрнуто здесь.

там же есть указания на литературу. 

 

 

.

 

 

.

 

 

.

 

 

.

 
Yousufkhodja Sultonov:

Тогда, следуйте рекомендациям и пророчествам Семко, я не навязываю Вам какую-либо ТС.

Юсуф, не надо сочинять. Я никаких рекомендаций не давал и ничего не пророчил.

Все, что я лишь пытался делать, так это  сэкономить Вам время, чтобы Вы его не тратили на всякую бесполезную хрень. А так же, чтобы Вы этой хренью не отнимали время у других.

Yousufkhodja Sultonov:

Вам ведь, объяснили, это совсем из другой оперы. Из серии: "Ищу то, не знаю, что!"

Я практически не сомневался, что Вы зацепитесь за отсутствие свободного члена. И Вы не поняли, что Федосеев глумился именно над Вами )))

Но, признаться, во мне все же жила надежда, что Вы более благоразумный человек, чем кажетесь, и понимаете, что СЛАУ со свободным членом и без него по сути одно и тоже - те же яйца, только в профиль. И что в этот хаос свободный член порядка не добавит.

Ну посудите сами. 
Вот для примера обычный СЛАУ:

x0 = a1*x1 + a2*x2 + a3*x3

x1 = a1*x2 + a2*x3 + a3*x4 

x2 = a1*x3 + a2*x4 + a3*x5

а вот со свободным членом

x0 = a0 + a1*x1 + a2*x2 + a3*x3

x1 = a0 + a1*x2 + a2*x3 + a3*x4 

x2 = a0 + a1*x3 + a2*x4 + a3*x5

после сложения трех уравнений

получаем:

a0 = S0 - a1*S1 - a2*S2 - a3*S3

где S0..S3     - среднее арифметическое столбцов матрицы
S0 = (x0+x1+x2)/3
S1 = (x1+x2+x3)/3
S2 = (x2+x3+x4)/3
S3 = (x3+x4+x5)/3

после подстановки снова получаем СЛАУ без свободного члена

∆x0 = a1*∆x1 + a2*∆x2 + a3*∆x3

∆x1 = a1*∆x2 + a2*∆x3 + a3*∆x4 

∆x2 = a1*∆x3 + a2*∆x4 + a3*∆x5

где ∆x0..∆x5  - дельта (приращение) цены к среднему арифметическому текущего столбца.

где ∆x0 = x0-S0 = x0-(x0+x1+x2)/3 и т.д.

Т.е. если самом первом случае была СЛАУ из цен, то в случае СЛАУ со свободным членом a0 трансформируется в обычную СЛАУ из приращений.

Математика 7 класса.

Ну и какая разница!

Если попытка применения СЛАУ для анализа и прогноза цены - это просто глупость, то ввод свободного члена A0 - это глупость в квадрате. 

И как бы Вы эту глупость высокопарно не называли ("Свое отступление скомпенсируем введением понятия Ц0 - учет давления исторических данных на цену к началу анализа, полагая, что, рынок обладает памятью.") - глупость все равно останется глупостью. 
  


Тем более мой индикатор очень легко переделать под Ваш СЛАУ со свободным членом А0. Достаточно добавить несколько строк кода не меняя основную функцию расчета SLAU()

Какой только в этом смысл?  Будет тот же белый шум и та же доходность, что и при прогнозе движения цены с помощью монетки. 

Но я не поленюсь. Потрачу еще 30 минут и сделаю.

 

Коля, Ваше заблуждение покажу на простом примере, после чего, вынуждены будете признать, что, в подобных случаях, наличие свободного члена абсолютно необходимо. Рассмотрим приведенные Вами примеры:

Вот для примера обычный СЛАУ:

x0 = a1*x1 + a2*x2 + a3*x3

x1 = a1*x2 + a2*x3 + a3*x4 

x2 = a1*x3 + a2*x4 + a3*x5

Если представить, что, между х-сами нет никакой зависимомти, то, а1=0; а2=0, а3=0 и получим, что и х0=0, х1=0 и х3=0! Получили нулевые расчетные значения х-сов. Это нонсенс.

а вот со свободным членом

x0 = a0 + a1*x1 + a2*x2 + a3*x3

x1 = a0 + a1*x2 + a2*x3 + a3*x4 

x2 = a0 + a1*x3 + a2*x4 + a3*x5
В этом случае, получим х1=а0, х2=а0, х3=а0, что указывет, всего навсего, на отсутствие зависимости между х-сами, без каких-либо парадоксов. Тепеь, поняли своё заблуждение?

 
Nikolai Semko:

Юсуф, не надо сочинять. Я никаких рекомендаций не давал и ничего не пророчил.

Все, что я лишь пытался делать, так это  сэкономить Вам время, чтобы Вы его не тратили на всякую бесполезную хрень. А так же, чтобы Вы этой хренью не отнимали время у других.

Я практически не сомневался, что Вы зацепитесь за отсутствие свободного члена. И Вы не поняли, что Федосеев глумился именно над Вами )))

Но, признаться, во мне все же жила надежда, что Вы более благоразумный человек, чем кажетесь, и понимаете, что СЛАУ со свободным членом и без него по сути одно и тоже - те же яйца, только в профиль. И что в этот хаос свободный член порядка не добавит.

Ну посудите сами. 
Вот для примера обычный СЛАУ:

а вот со свободным членом

после сложения трех уравнений

получаем:

после подстановки снова получаем СЛАУ без свободного члена

Т.е. если самом первом случае была СЛАУ из цен, то в случае СЛАУ со свободным членом a0 трансформируется в обычную СЛАУ из приращений.

Математика 7 класса.

Ну и какая разница!

Если попытка применения СЛАУ для анализа и прогноза цены - это просто глупость, то ввод свободного члена A0 - это глупость в квадрате. 

И как бы Вы эту глупость высокопарно не называли ("Свое отступление скомпенсируем введением понятия Ц0 - учет давления исторических данных на цену к началу анализа, полагая, что, рынок обладает памятью.") - глупость все равно останется глупостью. 
  


Тем более мой индикатор очень легко переделать под Ваш СЛАУ со свободным членом А0. Достаточно добавить несколько строк кода не меняя основную функцию расчета SLAU()

Какой только в этом смысл?  Будет тот же белый шум и та же доходность, что и при прогнозе движения цены с помощью монетки. 

Но я не поленюсь. Потрачу еще 30 минут и сделаю.

В общем и целом -- чушь.

По пунктам:

1) это глумление происходит не от большого ума, а от отсутствия знания и понимания;

2) отсутствие понимания роли свободного члена приводит к таким вот заявлениям : "что СЛАУ со свободным членом и без него по сути одно и тоже";

3) для решения задачи вот это делать не надо : "после сложения трех уравнений";

4) это ещё одно косвенное подтверждение устранения трендовой составляющей на приращениях: "после подстановки снова получаем СЛАУ без свободного члена";

5) для решения оптимизационных задач "математики 7 класса" явно недостаточно, поэтому надо расширять свой кругозор;

6) восклицания "глупость", "глупость в квадрате" и прочие вариации с "глупостью" -- это от отсутствия знания и понимания (см. п.1);

7) вместо переделки индикатора с задачи решения системы линейных алгебраических уравнений, надо сделать ещё один индикатор с решением оптимизационной задачи, а затем сравнить их показания, и в результате увидеть и понять насколько различными будут их показания, т.е. решения и постановки задач.

 

Вот Ваш пресловутый a0 (он же Ц0) 

Белый шум - он и в Африке белый шум


Такое ощущение, что СЛАУ из 5 уравнений Вы рожали годами. И овеяли это ореолом меганаучной сенсации и бредом величия. А это математика 7 класса средней школы.

Моя же коротенькая функция SLAU() легко решает СЛАУ из 50 уравнений и родил я ее и отладил меньше, чем за 1 день. Я не знаю, каким способом я решил СЛАУ, т.к. мне всегда лень изучать чужие существующие методы, а проще придумать свой. Скорей всего мой способ не является оптимальным и, конечно же, я не придумал ничего нового, я в теории не силен. Но компактнее я не встречал. 

void SLAU(double &x[],double &f[],double &a[],int m)
  {
   int k=m-1;
   if(m>1)
     {
      double xx[],ff[];
      double g=x[0]; if(g==0) g=1.0e-100;
      for(int i=0;i<ArraySize(x);i++) x[i]/=g;
      for(int i=0;i<ArraySize(f);i++) f[i]/=g;
      ArrayResize(ff,k);
      ArrayResize(xx,k*k);
      for(int i=0; i<k; i++)
        {
         ff[i]=f[0]*x[(i+1)*m]-f[i+1]*x[0];
         for(int j=0;j<k;j++) xx[i*k+j]=x[j+1]*x[(i+1)*m]-x[(i+1)*m+j+1]*x[0];
        }
      int i=0;
      for(;i<k; i++) if(xx[i*k]!=0) break;
      if(i>0 && i<k) for(int j=0;j<k;j++) {double t=xx[j]; xx[j]=xx[i*k+j]; xx[i*k+j]=t;}
      SLAU(xx,ff,a,k);
     }
   double sum=0;
   for(int i=1; i<m;i++) sum+=a[n-m+i]*x[i];
   if(x[0]!=0 && x[0]==x[0]) a[n-m]=(f[0]-sum)/x[0]; else a[n-m]=1.0/n;
   if(m!=n) return;
  }
Файлы:
SLAUPlus.mq5  28 kb