Eğilimli planimetri yöntemi - sayfa 4

 
Mathemat :

ancak o zaman standart metakota algoritmasını geçersiz kılmanız gerekir.


Reddedilmelidir . Tabii zaman önemliyse.
 
Mathemat :

Sorun şu ki, makinelerin kendilerinin standart metakota paketindekinden bile daha optimum şekilde hesaplamayı öğrenmesi gerekiyor. N periyodunun bilinen işaretinin N + 1 periyodunun işaretini hesaplamak için kullanıldığı keneleri hesaplamak için bir tür tekrarlayan algoritmaya ihtiyacımız var. Prensipte basittir, ancak daha sonra standart metakota algoritmasını reddetmeniz gerekir.

Kenelerin yoğunluğu ile ilgili olarak: burada açıkça bir tür kümeleme algoritmasına ihtiyaç vardır, çünkü bunlar çok düzgün olmayan bir şekilde dikey olarak yerleştirilebildikleri için (belirli bir çubuk için). Kısacası, görev teknik olarak oldukça zor.

Son yüz (yüz kene kullanırsanız) değerlerinin kene değerlerini döndürdüğü bir gösterge yapabilirsiniz. Ancak bu durumda sadece SMA hakkında konuşacağız. Diğer arabaların biraz farklı bir algoritması var, ancak prensipte bu da mümkün.
 

Tam olarak anlamıyorum, Victor . Lütfen daha ayrıntılı olarak açıklayın. "Son yüz" nedir? Tek boyutlu dizide mi?

Prensip olarak, meta alıntı algoritmasındaki tekrarlama zaten tüm arabalar için yerleşiktir. Ancak bir dönemin damalarını aramak için iyidir. Ve her seferinde farklı dönemlerde bize bir şeyler verin.

 
Mathemat :

Prensip olarak, meta alıntı algoritmasındaki tekrarlama zaten tüm arabalar için yerleşiktir. Ancak tek noktalı kontrolörlerin çağrıları için iyidir. Ve her seferinde farklı dönemlerde bize bir şeyler verin.

 for ( i = 2 ; i <= N ; i ++ ) {
  Sum += Close [ i ] ;
  MA [ i ] = Sum / i ;
}
PS Görünüşe göre toplamlar da diziler yapılmalı :)
 
Mathemat :

Tam olarak anlamıyorum, Victor . Lütfen daha ayrıntılı olarak açıklayın. "Son yüz" nedir? Tek boyutlu dizide mi?

Prensip olarak, meta alıntı algoritmasındaki tekrarlama zaten tüm arabalar için yerleşiktir. Ancak bir dönemin damalarını aramak için iyidir. Ve her seferinde farklı dönemlerde bize bir şeyler verin.


Ortalama dikkate alındığında,

 int i , j ;
double sum = 0 , Count ;
for ( i = 0 ; i < 100 ; i ++ ) {
   for ( j = 0 ; j <s tep ; j ++ ) {
       sum += Close [ i * step + j ] ;
       Count ++;
   }
   Buffer [ i ] = sum / Count ;
}
Gibi bir şey.
 

Ben başka bir şey kastetmiştim.

 double SMA ( int newperiod , int sh , double SMAprev )
{
   return ( ( SMAprev * ( newperiod - 1 ) + Close [ sh + newperiod - 1 ] ) / newperiod ) ;
}

Pahalı iMA () çağrısı (bir sürü terimi toplayacak) yerine, periyot ne olursa olsun, keneyi 1 artan periyotla hesaplar. ilki ve sonuncusu olmak üzere yalnızca bir kez çağrılabilir.

EMA için, çok açık olmasa da benzer bir algoritma da tekrarlanıyor. SMMA, EMA'ya eşdeğerdir, yalnızca LWMA'yı görmek için kalır.

 
Herhangi bir işlevi çağırmak ek bir ek yüktür. Toplamı hatırlamak için SMPrev yerine, birkaç işlemden kurtulmak mümkün olacaktır.
 
Evet, miktar hatırlanır, daha doğrusu eski SMA. Standart yöntemi kullanarak tek bir çubukta bin hesaplama yapan iki kodu ve aynısını kendi yöntemimle göndermek sorun değil. Ve performanslarını karşılaştırın.
 

Tabii ki daha hızlı. Ama "daha da hızlı" hakkında konuşuyorum :). Yukarıdaki benimkiyle karşılaştırın.

 
Aha, Candid , şimdi anlaşıldı. sh vardiyalı isteğe bağlı bir çubuk için:

 // размер массива SMA[] уже установлен равным N+1 перед вызовом функции
void createSMAsArray ( int sh , double & SMA [] ) 
{
   double Sum = 0;
   for ( int i = 1 ; i <= N ; i ++ ) 
   {
     Sum += Close [ sh + i - 1 ] ;
     SMA [ i ] = Sum / i ;
   }
   return;
}
Ne olmuş? İlk toplam indeksine dikkat edin.