Yazarın diyalogu. Alexander Smirnov. - sayfa 37

 
İşte formül RMS ^ 2 = M[X ^ 2] - (M [X]) ^ 2 , aslında dispersiyon içindir, yani ideal karakteristik içindir. Büyük olasılıkla, geri çekildiğinde, "çapraz" toplamlar açıkça veya dolaylı olarak sıfıra ayarlandı. Büyük numuneler için bu yeterince doğrudur. Ancak küçük numuneler için gerçek standart sapma farklı olabilir. İşte gerçeği kontrol etmeden önce eller henüz ulaşmadı.
 
Mathemat :

Yura , RMS'yi standart işlevden daha hızlı hesaplamak istiyorum. Birdenbire işe yarayacak mı? Tek bir arama ile, dilde yazılmış herhangi bir koddan daha hızlı olmalıdır, ancak toplu arama ile (tüm grafiği hesaplayarak) maliyetlerden tasarruf etmek oldukça mümkündür.


Doğrusal regresyon hatalarından bahsediyorsak, o zaman formüle göre bir adımda analitik olarak kabul edilir.

RMS^2=D[Y] - D[X]*A^2 ,

burada D[Y]=M[Y^2]-M[Y]^2 , D[X]=M[X^2]-M[X]^2 ve A doğrusal regresyon katsayısı Y=A* 'dır X + B

Yani burada özyineleme gerekli değildir.

PS Ve çapraz toplamlar açıkça ve tamamen analitik olarak sıfıra ayarlanır. Örnek boyutunun bununla hiçbir ilgisi yoktur.

 
Prival :

Hala hata 2008.02.15 17:07:22 2007.01.11 12:15 OTF_1 EURUSD,M1: MathSqrt işlevi için negatif argüman

Hatanın içeriğine bağlı olarak, köpek MathSqrt(lambda*lambda*lambda*lambda+16.0*lambda*lambda) burada bir yeri didik didik aradı. Ancak lambda=MathAbs(Value1[i]/Value2[i]) ; negatif olamaz.
Bu nedenle her itfaiyecinin aklına gelen tek şey önce lambda=0.0;
ve/veya MathSqrt(MathAbs(lambda*lambda*lambda*lambda+16.0*lambda*lambda)) bu hatadan kalıcı olarak kurtulmak için.
//---- Ana döngü
çift alfa, lambda=0.0 ;
//******************************************************* **********************************************************
için (i = limit; i >= 0; i--)
{
Fiyat[i]=(Yüksek[i]+Düşük[i])/2.0;
}
için (i = limit; i >= 0; i--)
{
Değer1[i]=SC*(Fiyat[i]-Fiyat[i+1])+4*SC*Değer1[i+1];
Değer2[i]=SC*(Yüksek[i]-Düşük[i])+4*SC*Değer2[i+1];
}
için (i = limit; i >= 0; i--)
{
if(Değer2[i]< Nokta)Değer2[i]= Nokta;else lambda=MathAbs(Değer1[i]/Değer2[i]);

alpha=(-lambda*lambda+ MathSqrt(lambda*lambda*lambda*lambda+16.0*lambda*lambda))/8.0;

Değer3[i]=alfa*Fiyat[i]+(1.0-alpha)*Değer3[i+1];
}
//******************************************************* **********************************************************

PS Vooooobschem saçmalığı. Bu hata muhtemelen test cihazınızda mı çıkıyor?
PPS Büyük olasılıkla çift lambda değişkeninin başlatılması; varsayılan olarak çok az negatif çöp üretti. Ardından double lambda=0.0 ifadesi; yardım etmelisin.
Bize öğretiyor, Slava bize öğretiyor - asla varsayılan olarak çalışmamayı, ama öğrenmiyoruz!
 
VBAG :
Özel :

Hala hata 2008.02.15 17:07:22 2007.01.11 12:15 OTF_1 EURUSD,M1: MathSqrt işlevi için negatif argüman


PS Vooooobschem saçmalığı. Bu hata muhtemelen test cihazınızda mı çıkıyor?
PPS Büyük olasılıkla çift lambda değişkeninin başlatılması; varsayılan olarak çok az negatif çöp üretti. Ardından double lambda=0.0 ifadesi; yardım etmelisin.
Bize öğretiyor, Slava bize öğretiyor - asla varsayılan olarak çalışmamayı, ama öğrenmiyoruz!

Buradaki botanikçiler her zaman tekerleği yeniden icat etmek isterler.

Çok terletmeyin. Özel hindiler arasında Bands.mq4 var - RMS'yi hesaplamak için bir algoritma var
 

RMS^2=D[Y] - D[X]*A^2 ,

burada D[Y]=M[Y^2]-M[Y]^2 , D[X]=M[X^2]-M[X]^2 ve A doğrusal regresyon katsayısı Y=A* 'dır X + B

Yani burada özyineleme gerekli değildir.

Bu formüllerde çok fazla fazlalık var.
Ve yinelemeye gerek yok ne demek, toplamlar nasıl hesaplanacak? Yoksa beklentiyi ortalamayla değiştirmeden nasıl yapılacağına dair bir fikir var mı?

Not Bu arada, çapraz toplamlar kendiliğinden kaybolmaz. En azından ben ayrılmadım. Varyanslarla değil, "gerçek" bir ifadeyle çalışmayı deneyin
 
Herhangi bir işlev için RMS

 sq = 0.0 ;
for ( int n = 0 ; n < period ; n ++ )
{
   dc = Close [ n ] - fx [ n ] ;
   sq += dc * dc ;
}
sq = MathSqrt ( sq / period ) ;
Bu nedenle, lineer regresyon için

 sq = 0.0 ;
for ( n = 0 ; n < p ; n ++ )
{
   lr = b + a * n ;  
   dc = Close [ n ] - lr ;
   sq += dc * dc ;
}
sq = MathSqrt ( sq / p ) ;
 
ANG3110 :
Bu nedenle, lineer regresyon için

 sq = 0.0 ;
for ( n = 0 ; n < p ; n ++ )
{
   lr = b + a * n ;  
   dc = Close [ n ] - lr ;
   sq += dc * dc ;
}
sq = MathSqrt ( sq / p ) ;

Bu tanım gereğidir. LR oldukça kısa değilse, ek bir döngü olmadan RMS'yi daha hızlı hesaplamak mümkündür. RMS'yi hesaplama kodu orijinal MovingLR.mq4'tedir, yalnızca yorumlanır ve RMS'ye rmsY adı verilir.
 
lna01 :

RMS^2=D[Y] - D[X]*A^2 ,

burada D[Y]=M[Y^2]-M[Y]^2 , D[X]=M[X^2]-M[X]^2 ve A doğrusal regresyon katsayısı Y=A* 'dır X + B

Yani burada özyineleme gerekli değildir.

Bu formüllerde çok fazla fazlalık var.
Ve yinelemeye gerek yok ne demek, toplamlar nasıl hesaplanacak? Yoksa beklentiyi ortalamayla değiştirmeden nasıl yapılacağına dair bir fikir var mı?

Not Bu arada, çapraz toplamlar kendiliğinden kaybolmaz. En azından ben ayrılmadım. Varyanslarla değil, "gerçek" bir ifadeyle çalışmayı deneyin


Bu formüllerde neyin gereksiz olabileceğini gerçekten bilmek istiyorum. :-)

MO, elbette, ortalama ile değiştirilir ve toplamlar hesaplanmalıdır. Ancak, bu yineleme veya hatta bir döngü gerektirmez. formülü kullanmanız yeterli

S(X)[i+1]=S(X)[i] - X[i-N+1] + X[i+1] , burada S(X)[i]=Sum(X[k]; k=i-N+1, i-N+2, ...,i-1,i )

Ancak, yineleme hakkında konuşurken kastettiğiniz ifade bu olabilir mi? O zaman elbette haklısın.

"Gerçek ifade"ye gelince, tüm bu formüllerin nereden geldiğini düşünüyorsunuz? Şimdi, bu "gerçek ifadeye", A ve B için LSM yardımıyla elde edilen nihai formülleri koyarsak, standart sapma için yukarıdaki ifade elde edilecektir. İlgili analitik hesaplamaları verebilirim.

 
Yurixx :
lna01 :


İlgili analitik hesaplamaları verebilirim.


buradan daha ayrıntılı olarak karmaşıklaştırmazsanız. yeni verilerin ortaya çıkmasıyla, A ve B katsayıları değişebilir, öyle görünüyor ki, yanılıyor olsam da :-). LR için karar verilmiş gibi görünüyor, ancak parabolik regresyon için nasıl?
 
lna01 :
Bu tanım gereğidir. LR oldukça kısa değilse, ek bir döngü olmadan RMS'yi daha hızlı hesaplamak mümkündür. RMS'yi hesaplama kodu orijinal MovingLR.mq4'tedir, yalnızca yorumlanır ve RMS'ye rmsY adı verilir.
Evet, başlangıçta toplamı bir kez hesaplayabilir ve sadece son öğeyi çıkarabilir ve yeni bir ilk ekleyebilirsiniz. Sonra bir döngü olmadan çıkıyor. MT3'te mql2'de böyle şeyler yaptım. Ve şimdi onu sadece lineer regresyon için değil, gerektiğinde ekliyorum.