Linearer Regressionskanal - Seite 13

 
Задача: Подсчет среднего значения и дисперсии числового ряда
Задача: Подсчет среднего значения и дисперсии числового ряда
  • Stimmen: 2
  • 2015.10.16
  • Google+
  • purecodecpp.com
Эта задача имеет очень большое практическое применение: в статистической обработке данных, обработке временных рядов, в цифровой обработке сигналов применительно к цифровым отсчётам сигнала. Постановка задачи такая: – вводится последовательность (вещественных) чисел … – нужно просчитать, в итоге, среднее значение и дисперсию (или СКО...
 

Ich werde es ausprobieren.

 

Hier ist 1

Hier ist die Berechnung:

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {

   int start;
   if(prev_calculated==0){
      start=period;
      double ms=0;
      for(int i=0;i<period;i++){
         ms+=close[i];
      }
      ma[period-1]=ms/period;
   }
   else{
      start=prev_calculated-1;
   }

   for(int i=start;i<rates_total;i++){      
      //ma[i]=ma[i-1]+(-close[i-period]+close[i])/period;      
      double s1=0;
      double s2=0;
      for(int j=i-period+1;j<=i;j++){
         s1+=close[j];
         s2+=close[j]*close[j];
      }
      s1/=period;
      s2=s2/period-s1*s1;
      Label1Buffer[i]=s2;
   }

   return(rates_total);
  }

Es handelt sich nicht um einen beschleunigten Algorithmus zur Überprüfung der Formel. Vielleicht habe ich etwas falsch gemacht?

Dateien:
stdX4.mq5  6 kb
 
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- input parameters
input int      period=14;
//--- indicator buffers
double         Label1Buffer[];

int OnInit()
  {
   SetIndexBuffer(0,Label1Buffer,INDICATOR_DATA);


//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   static double ms,ms2;
   int start;
   if(prev_calculated==0)
     {
      start=period;
      ms=0; ms2=0;
      for(int i=0;i<period;i++)
        {
         ms +=close[i];
         ms2+=close[i]*close[i];
        }
     }
   else
     {
      start=prev_calculated-1;
     }

   for(int i=start;i<rates_total;i++)
     {
      double Ms =ms +(-close[i-period]+close[i]);
      double Ms2=ms2+(-close[i-period]*close[i-period]+close[i]*close[i]);
      double s=Ms/period;
      Label1Buffer[i]=sqrt(s*s+(Ms2-2*Ms*s)/period);
      ms=Ms;
      ms2=Ms2;
     }
   return(rates_total);
  }
 
Yuriy Asaulenko:
Nicht, wenn Sie wetten. 2. Tage der Stille, bitte.
Sie werden sowieso keinen Hennessy bekommen.) Aber Sie verderben mir das Abendessen.

Trinken ist schlecht für dich. Entschuldigung. Ich war zuerst hier. ))

 

Google "Gleitende Standardabweichung"

https://www.johndcook.com/blog/standard_deviation/

Accurately computing running variance
  • www.johndcook.com
The most direct way of computing sample variance or standard deviation can have severe numerical problems. Mathematically, sample variance can be computed as follows. The most obvious way to compute variance then would be to have two sums: one to accumulate the sum of the x‘s and another to accumulate the sums of the squares of the x‘s. If the...
 
Dmitry Fedoseev:

Hier ist

Hier ist die Berechnung:

Es handelt sich nicht um einen beschleunigten Algorithmus zur Überprüfung der Formel. Vielleicht haben Sie etwas falsch gemacht?

Sie berücksichtigen nicht das Eintreffen neuer Daten und die Notwendigkeit, alte Daten zu löschen (weg vom Fenster).

Nikolai tut es. siehe den Code unter Ihrer Nachricht.

 

Also... meine letzte Botschaft.

Sagen Sie Yuri, er soll mir persönlich mitteilen, wo ich es abgeben soll, oder ein Zertifikat kaufen, oder was auch immer.

Wir sehen uns. In einem Monat bin ich wieder da.

 
Nikolai Semko:

es ist ungesund, es zu trinken. Entschuldigung. Ich war der Erste. ))

Bitte sehr. Ich hatte nicht vor, ein Rennen zu fahren. Ich habe sie nur gebeten, sich nicht einzumischen, und diejenigen, die es wissen, sollen den Mund halten.
Ja, der Algorithmus ist praktisch gleichwertig, ich habe auf Seite 1-2 des Threads darüber geschrieben.
Dimitri, leider kann ich Hennessy nicht annehmen, obwohl er sich bewährt hat, zu meinem Bedauern.
Ich nehme an, dass es keinen Sinn macht, diesen Code zu schreiben. Komm Semko, und das war's... Vorrangig gesucht)). Als ob irgendjemand außer Dimitri irgendwelche Zweifel hätte.
Ich werde selbst in den Laden gehen müssen.
 
Dmitry Fedoseev:

Also... meine letzte Botschaft.

Sagen Sie Yuri, er soll mir persönlich mitteilen, wo ich es abgeben soll, oder ein Zertifikat kaufen, oder was auch immer.

Wir sehen uns. In einem Monat bin ich wieder da.

Ich beneide Sie. Fruchtbare Arbeit!
Meine Botschaft war, dass dies nicht nur mit RMS für eine einfache Wellenmaschine, sondern auch für ein Polynom beliebigen Grades möglich ist.
Es stimmt, dass die Formel exponentiell wächst, wenn der Grad des Polynoms zunimmt.