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++; } }
Regresyon hesaplamasını (yalnızca doğrusal değil) hiçbir döngü olmadan uyguladım. Daha doğrusu, başlatma sırasında döngünün yalnızca bir kez ihtiyacı vardır.
Sonuç olarak, hesaplama hızı binlerce kat daha hızlıdır.
ve kod daha kısadır.
Ama üzgünüm, kodu göndermeyeceğim. Gizli.
Sadece gerçek olduğunu söylüyorum.
Yardımcı olacak iki makale var

- www.mql5.com
Regresyon hesaplamasını (sadece lineer değil) hiçbir döngü olmadan uyguladım. Daha doğrusu, başlatma sırasında döngünün yalnızca bir kez ihtiyacı vardır.
Sonuç olarak, hesaplama hızı binlerce kat daha hızlıdır.
ve kod daha kısadır.
Ama üzgünüm, kodu göndermeyeceğim. Gizli.
Sadece gerçek olduğunu söylüyorum.
Kod çok basit. Mevcut kareleri ekliyoruz, gidenleri aralıktan çıkarıyoruz. Herşey. Bütün sır.)
Bunu yapmak daha da ilginç olabilir, ancak başka ilkeler üzerinde.
Kod çok basit. Mevcut kareleri ekliyoruz, gidenleri aralıktan çıkarıyoruz. Herşey. Bütün sır.)
gülümsedi))
Tamamen komik hale getirmek için, kanaldan değil, döngüler olmadan bir regresyon polinom çizgisinin nasıl yapılacağından bahsetmek mümkün olacaktır. Ama bunu kesinlikle yapmayacağım.)) Buna ihtiyacınız yok.
Regresyon hesaplamasını (yalnızca doğrusal değil) herhangi bir döngü olmadan uyguladım. Daha doğrusu, başlatma sırasında döngünün yalnızca bir kez ihtiyacı vardır.
Sonuç olarak, hesaplama hızı binlerce kat daha hızlıdır.
ve kod daha kısadır.
Ama üzgünüm, kodu göndermeyeceğim. Gizli.
Sadece gerçek olduğunu söylüyorum.
Binlerce kat daha hızlı ve giriş değerleri üzerinde döngü olmadan???
İnanmıyorum !!!
En azından giriş parametreleri arasında bir döngü gereklidir!
Regresyon hesaplamasını (sadece lineer değil) hiçbir döngü olmadan uyguladım. Daha doğrusu, başlatma sırasında döngünün yalnızca bir kez ihtiyacı vardır.
Sonuç olarak, hesaplama hızı binlerce kat daha hızlıdır.
ve kod daha kısadır.
Ama üzgünüm, kodu göndermeyeceğim. Gizli.
Sadece gerçek olduğunu söylüyorum.
Ve x*y toplama döngüsü olmadan bile mi? Ya x ve y doğrular değilse?
Binlerce kat daha hızlı ve giriş değerleri üzerinde döngü olmadan???
İnanmıyorum !!!
Asgari olarak, giriş parametreleri arasında bir döngü gereklidir!
Ve x*y toplama döngüsü olmadan bile mi? Ya x ve y doğrular değilse?
Sağlığınıza güvenmeyin.
Rashid makaleleri düşürdü. Dikkatlice okuyoruz. Başka bir makaleye bağlantı var:
https://www.mql5.com/en/articles/270
7-8. sınıf matematik seviyesinde beyninizi zorlarsanız, o zaman benzer bir şekilde bir döngü olmadan, sadece hareketli olanı değil, kanalı almak için standart sapmayı alabilirsiniz. Bunu, yalnızca ilk (doğrusal regresyon) için değil, herhangi bir derecede bir polinom için uyguladım. Piyasadaki demo versiyonunda bunu hissedebilirsiniz.
ZY Döngünün başlatma sırasında bir kez gerekli olduğunu yazdım.
Binlerce kat daha hızlı - bu, standart sapmanın hesaplanmasını (yani kanal genişliğini) hesaba katar
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Doğrusal bir regresyon göstergesi vardır.
Hesaplaması bir EA'ya nasıl gömülür ve çubuk 0 veya çubuk 1'de veri nasıl alınır.
Bunu şöyle yapmaya çalıştım:
Ama bir şeyler doğru görünmüyor...