void calcPolynomialRegression(double &PricesArray[],double &RegressionArray[], int power) { ArrayResize(RegressionArray, ArraySize(PricesArray)); ArraySetAsSeries(RegressionArray,ArrayGetAsSeries(PricesArray)); double summ_x_value[21],summ_y_value[11],constant[11],matrix[11][11]; ArrayInitialize(summ_x_value,0); ArrayInitialize(summ_y_value,0); ArrayInitialize(constant,0); ArrayInitialize(matrix,0); double summ=0,summ_x=0,summ_y=0; int pos=ArraySize(PricesArray)-1; summ_x_value[0]=ArraySize(PricesArray); for(int exp_n=1; exp_n<=2*power; exp_n++) { summ_x=0; summ_y=0; for(int k=1; k<=ArraySize(PricesArray); k++) { summ_x+=MathPow(k,exp_n); if(exp_n==1) summ_y+=PricesArray[pos-k+1]; else if(exp_n<=power+1) summ_y+=PricesArray[pos-k+1]*MathPow(k,exp_n-1); } summ_x_value[exp_n]=summ_x; if(summ_y!=0) summ_y_value[exp_n-1]=summ_y; } for(int row=0; row<=power; row++) for(int col=0; col<=power; col++) matrix[row][col]=summ_x_value[row+col]; int initial_row=1; int initial_col=1; for(int i=1; i<=power; i++) { for(int row=initial_row; row<=power; row++) { summ_y_value[row]=summ_y_value[row]-(matrix[row][i-1]/matrix[i-1][i-1])*summ_y_value[i-1]; for(int col=initial_col; col<=power; col++) matrix[row][col]=matrix[row][col]-(matrix[row][i-1]/matrix[i-1][i-1])*matrix[i-1][col]; } initial_col++; initial_row++; } int j=0; for(int i=power; i>=0; i--) { if(j==0) constant[i]=summ_y_value[i]/matrix[i][i]; else { summ=0; for(int k=j; k>=1; k--) summ+=constant[i+k]*matrix[i][i+k]; constant[i]=(summ_y_value[i]-summ)/matrix[i][i]; } j++; } int k=1; for(int i=ArraySize(PricesArray)-1; i>=0; i--) { summ=0; for(int n=0; n<=power; n++) summ+=constant[n]*MathPow(k,n); RegressionArray[i]=summ; k++; } }
나는 사이클 없이 회귀(선형뿐만 아니라) 계산을 구현했습니다. 더 정확하게는 루프는 초기화 중에 한 번만 필요합니다.
결과적으로 계산 속도는 수천 배 더 빠릅니다.
코드가 더 짧습니다.
하지만 죄송합니다. 코드는 게시하지 않겠습니다. 비밀.
난 그냥 진짜라고 말하는거야.
도움이 될 두 개의 기사가 있습니다
- www.mql5.com
나는 사이클 없이 회귀(선형뿐만 아니라) 계산을 구현했습니다. 더 정확하게는 루프는 초기화 중에 한 번만 필요합니다.
결과적으로 계산 속도는 수천 배 더 빠릅니다.
코드가 더 짧습니다.
하지만 죄송합니다. 코드는 게시하지 않겠습니다. 비밀.
난 그냥 진짜라고 말하는거야.
코드는 매우 간단합니다. 현재 제곱을 추가하고 간격에서 나가는 것을 뺍니다. 모두. 모든 비밀.)
하는 것이 훨씬 더 흥미로울 수 있지만 다른 원칙에 따릅니다.
코드는 매우 간단합니다. 현재 제곱을 추가하고 간격에서 나가는 것을 뺍니다. 모두. 모든 비밀.)
미소))
완전히 웃기게 하려면 채널이 아니라 순환 없는 회귀 다항식을 만드는 방법에 대해 말할 수 있습니다. 하지만, 나는 이것을 하지 않을 것이다.)) 당신은 이것을 필요로 하지 않는다.
나는 사이클 없이 회귀(선형뿐만 아니라) 계산을 구현했습니다. 더 정확하게는 루프는 초기화 중에 한 번만 필요합니다.
결과적으로 계산 속도는 수천 배 더 빠릅니다.
코드가 더 짧습니다.
하지만 죄송합니다. 코드는 게시하지 않겠습니다. 비밀.
난 그냥 진짜라고 말하는거야.
수천 배 더 빠르고 입력 값을 반복하지 않고???
난 믿지 않아 !!!
최소한 입력 매개변수를 통한 루프가 필요합니다!
나는 사이클 없이 회귀(선형뿐만 아니라) 계산을 구현했습니다. 더 정확하게는 루프는 초기화 중에 한 번만 필요합니다.
결과적으로 계산 속도는 수천 배 더 빠릅니다.
코드가 더 짧습니다.
하지만 죄송합니다. 코드는 게시하지 않겠습니다. 비밀.
난 그냥 진짜라고 말하는거야.
그리고 합산 루프가 없어도 x*y? x와 y가 직선이 아니면 어떻게 될까요?
수천 배 더 빠르고 입력 값을 반복하지 않고???
난 믿지 않아 !!!
최소한 입력 매개변수를 통한 루프가 필요합니다!
그리고 합산 루프가 없어도 x*y? x와 y가 직선이 아니면 어떻게 될까요?
건강을 믿지 마세요.
Rashid는 기사를 삭제했습니다. 우리는 주의 깊게 읽습니다. 다른 기사에 대한 링크가 있습니다.
https://www.mql5.com/en/articles/270
7-8 학년 수학 수준에서 두뇌를 긴장시키면주기없이 비슷한 방식으로 이동하는 것이 아니라 채널을 얻기 위해 표준 편차를 얻을 수 있습니다. 나는 첫 번째(선형 회귀)뿐만 아니라 모든 정도의 다항식에 대해 이것을 구현했습니다. 시중에 나와 있는 데모 버전에서 느낄 수 있습니다.
ZY 초기화시 한번 사이클이 필요하다고 썼습니다.
수천 배 더 빠름 - 이것은 표준 편차(즉, 채널 폭)의 계산을 고려한 것입니다.
선형 회귀 지표가 있습니다.
계산을 EA에 포함하고 막대 0 또는 막대 1에서 데이터를 가져오는 방법.
다음과 같이 시도했습니다.
근데 뭔가 안맞는듯...