선형 회귀 채널 - 페이지 13

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

나는 지금 시도 할거야.

 

여기 하나

계산은 다음과 같습니다.

 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);
  }

공식을 확인하는 가속 알고리즘이 아닙니다. 아마도 그는 그것을 올바르게하지 않았습니까?

파일:
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 :
당신과 내기를하지 마십시오. 2. 침묵의 날을 부탁합니다.
어쨌든 Hennessy를 얻지 못할 것입니다.) 그러나 내 질량을 망칠 것입니다.

음주는 나쁘다. 소리안. 내가 먼저였다. ))

 

구글 " 표준편차 이동"

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 :

여기

계산은 다음과 같습니다.

공식을 확인하는 가속 알고리즘이 아닙니다. 아마도 그는 그것을 올바르게하지 않았습니까?

새 데이터의 도착과 이전 데이터를 삭제할 필요성(창 외부)을 고려하지 않습니다.

니콜라스가 해냅니다. 메시지 아래의 코드를 참조하십시오.

 

좋아... 내 마지막 메시지.

유리는 개인 메시지로 어디로 배달하거나 인증서를 구입하거나 방법을 쓰게하십시오.

거기 있어. 나는 한 달 안에 나타날 것이다.

 
Nikolai Semko :

음주는 나쁘다. 소리안. 내가 먼저였다. ))

건강에. 경주할 생각은 아니었어요. 그는 방해하지 말라고, 그리고 아는 사람들에게만 조용히 해달라고 요청했습니다.
알고리즘은 예, 실질적으로 동일합니다. 주제의 1-2 페이지에서 이에 대해 썼습니다.
드미트리, 죄송합니다. 입증되었지만 유감스럽게도 Hennessy를 받아 들일 수 없습니다.
코드를 작성하는 것은 의미가 없다고 생각합니다. Semko가 와서 그게 다야 ... 나는 우선 순위를 원했습니다.)) Dmitry를 제외한 모든 사람이 의심하는 것처럼.
직접 가게에 가야 해요.((요즘 어느 날.
 
Dmitry Fedoseev :

좋아... 내 마지막 메시지.

유리는 개인 메시지로 어디로 배달하거나 인증서를 구입하거나 방법을 쓰게하십시오.

거기 있어. 나는 한 달 안에 나타날 것이다.

내가 부러워. 유익한 작업!
내 메시지는 이것이 단순한 Mashka에 대한 RMS뿐만 아니라 모든 차수의 다항식에 대해서도 수행될 수 있다는 것입니다.
사실, 공식은 다항식의 차수가 증가함에 따라 기하급수적 으로 커집니다.