Satır:
if(period<=1 || rates_total-begin<period) return(0);
katı olmayan bir eşitlik olmalıdır:
if(period<1 || rates_total-begin<period) return(0);Aksi takdirde, örneğin MACD.mq5 teslim kodunu derlerseniz ve InpSignalSMA=1 olarak ayarlarsanız, MACD çizgisine eşit olması gerekirken Sinyal çizgisi sıfıra eşit olacaktır.
Neden son parametre weightsum'a ihtiyacınız var?
int LinearWeightedMAOnBuffer(const int rates_total,const int prev_calculated,const int begin,const int period,const double& price[],double& buffer[],int &weightsum)
diğer 3 fonksiyonda ise yoktur. Eğer hala ihtiyaç duyuluyorsa, weightsum=0 harici değişkenini başlatırken nasıl kullanılacağı, diğer fonksiyonlar çarpık çalışır ve sıfıra bölme hatası üretir.
ExponentiaMA fonksiyonunda 3. parametre prev_value girmenin anlamını tam olarak anlamıyorum. Ortalamayı hesaplamak için saf bir formülde önceki dönemin değerine ihtiyacınız olduğu açıktır, ancak bence işlev bu değeri dahili olarak sayarsa ortalama bir kişi için daha net olur ve SimpleMA'da olduğu gibi işleve yalnızca 3 veri girilmelidir.
Kesinlikle katılıyorum! Nasıl kullanılacağı net değil. Sonunda ExponentialMAOnBuffer'ı seçtim çünkü prev_value'yu nereden alacağımı anlamadım. Bu işlevler, Uzman Danışmandan harici bir gösterge çağırmak için değil, içindeki her şeyi okumak için gereklidir. Geliştirici ne önerdi?
Bana "Prostokvashino" karikatüründen bir alıntıyı hatırlatıyor - "İhtiyacınız olmayan bir şeyi satmak için önce ihtiyacınız olmayan bir şeyi satın almalısınız ve paramız yok".
Kesinlikle katılıyorum! Nasıl kullanılacağı açık değil. Sonunda, ExponentialMAOnBuffer'ı seçtim çünkü prev_value'yu nereden alacağımı anlamadım. Bu işlevler, Uzman Danışmandan harici bir gösterge çağırmak için değil, içindeki her şeyi okumak için gereklidir. Geliştirici ne önerdi?
Bu bana "Prostokvashino" çizgi filminden bir alıntıyı hatırlatıyor: "İhtiyacınız olmayan bir şeyi satmak için önce ihtiyacınız olmayan bir şeyi satın almalısınız ve bizim paramız yok".
Evet, katılıyorum. Aynısı için de geçerli:
//+------------------------------------------------------------------+ //| Düzeltilmiş Hareketli Ortalama| //+------------------------------------------------------------------+ double SmoothedMA(const int position,const int period,const double prev_value,const double &price[]) { double result=0.0; //--- kontrol süresi if(period>0 && period<=(position+1)) { if(position==period-1) { for(int i=0; i<period; i++) result+=price[position-i]; result/=period; } result=(prev_value*(period-1)+price[position])/period; } return(result); }
Sarı renkteki kodun nasıl hesaplandığı önemli değildir. Sonuç yine de yeşil bir dize olacaktır. Ve bu standart MT5 kütüphanelerinde! Evet!
İşlevi geliştirin, aksi takdirde işe yaramaz. MQL5'te, birkaç enstrümanda MA değerlerini hesaplamanız gerektiğinde çok kullanışlıdır. Ve hangilerinin olduğu önceden bilinmemektedir. Piyasaya genel bakıştan tüm enstrümanların MA tutamaçlarını oluşturamazsınız!
Kesinlikle katılıyorum! Nasıl kullanılacağı açık değil. Sonunda, ExponentialMAOnBuffer'ı seçtim çünkü prev_value'yu nereden alacağımı anlamadım. Bu işlevler, Uzman Danışmandan harici bir gösterge çağırmak için değil, içindeki her şeyi okumak için gereklidir. Geliştirici ne önerdi?
Bu bana "Prostokvashino" çizgi filminden bir alıntıyı hatırlatıyor: "İhtiyacınız olmayan bir şeyi satmak için önce ihtiyacınız olmayan bir şeyi satın almalısınız ve bizim paramız yok".
Evet, size katılıyorum. Aynı durum aşağıdakiler için de geçerlidir:
Sarı renkle vurgulanan kodun nasıl hesaplandığı önemli değildir. Sonuç yine de yeşil bir dize olacaktır. Ve bu standart MT5 kütüphanelerinde! Evet!
İşlevi geliştirin, aksi takdirde işe yaramaz. MQL5'te, birkaç enstrümanda MA değerlerini hesaplamanız gerektiğinde çok kullanışlıdır. Ve hangilerinin olduğu önceden bilinmemektedir. Piyasaya genel bakıştan tüm enstrümanların MA kollarını oluşturamazsınız!
CodeBase'de arama yapabilir ve oraya bakabilirsiniz. Bu kütüphaneyi kullanan tek kişi ben değilim...

Affedersiniz, "pozisyon" değişkeni nedir?
double SimpleMA(const int position,const int period,const double &price[])
double SimpleMA( const int position, const int period, const double &price[]) { double result= 0.0 ; //--- kontrol süresi if (period> 0 && period<=(position+ 1 )) { for ( int i= 0 ; i<period; i++) result+=price[position-i]; result/=period; } return (result); }
Günaydın
Böyle daha mı net?
Hayır, pozisyonun 20 periyot istersem örnek 20 olarak hesaplanacak ilk çubuk olduğunu düşünerek zaten gördüm ama emin değilim.
fiyat [pozisyon - 1] (ve +1 değil) çünkü mql5 varsayılan olarak seri olarak ayarlanmıyor mu?

- Ü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
MovingAverages:
MovingAverages kütüphanesi, farklı hareketli ortalama türlerinin hesaplanması için fonksiyonlar içerir.
Yazar: MetaQuotes