"Daha İyi Bir Programcı Nasıl Olunur? (2. Bölüm): Başarılı bir MQL5 programcısı olma yolunda şu 5 kötü alışkanlıktan daha kurtulun" makalesi için tartışma
Merhaba arkadaşlar,
Ben bir acemiyim. Çok fazla programlama deneyimim var ancak MQL5'te kod yazmaya yeni başlıyorum - bu benim C++'a benzer ilk dilim. Referans dokümanları okudum ancak hatamı bulamadım - expoMA'dan döndürülmesini beklediğim değer grafiğime 0.0 olarak yazdırılıyor/yorumlanıyor - bir tür sözdizimi hatası mı yapıyorum? Derlerken herhangi bir sorun/hata almıyorum. Herhangi bir girdiniz harika olurdu
void OnTick( { int days = 3; double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits); double Bid = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits); double movingAverageValues[]; double bidAskAverage = (Ask + Bid)/2; int exponentialMovingAverage = iMA(_Symbol,_Period,MA_Period,0,MODE_EMA,PRICE_CLOSE); ArraySetAsSeries(movingAverageValues,true); CopyBuffer(exponentialMovingAverage,0,0,3,movingAverageValues); double alpha = expoMA(days); double dEMA = bidAskAverage - movingAverageValues[1]; // indeks 1 burada t - 1 değerinin EMA'sını temsil eder Comment("The ask price is: " + DoubleToString(Ask,5) + "\n" "The bid price is: " + DoubleToString(Bid,5) + "\n" "The average price is: " + DoubleToString(bidAskAverage,5) + "\n" "The custom expoMA value is: " + DoubleToString(alpha,5) + "\n" "The dEMA value is: " + DoubleToString(dEMA,5)) ; } double expoMA(int days=2) { double alpha = 2 / (days + 1); NormalizeDouble(alpha,5); return(alpha); }
Merhaba arkadaşlar,
Ben bir acemiyim. Çok fazla programlama deneyimim var ancak MQL5'te kod yazmaya yeni başlıyorum - bu benim C++'a benzer ilk dilim. Referans dokümanları okudum ancak hatamı bulamadım - expoMA'dan döndürülmesini beklediğim değer grafiğime 0.0 olarak yazdırılıyor/yorumlanıyor - bir tür sözdizimi hatası mı yapıyorum? Derlerken herhangi bir sorun/hata almıyorum. Her türlü katkınız harika olacaktır
double expoMA(int days=2) { double alpha = 2.0 / (days + 1); //... }
2/4'ü tam sayılara (0) bölüyorsunuz ve sonra bu bir double'a ayrıştırılıyor. Bunun yerine, bölen veya bölenlerden birinin double olması gerekir (böylece bölme işlemi "en ayrıntılı" veri türünde yapılır)
Diğer seçenekler (günlerin bir int olması) olabilir:
double alpha = double(2) / (days + 1); double alpha = 2 / (days + 1.0); double alpha = 2 / double(days + 1);Bu muhtemelen pitonvari bir hata heheh
Manuel Alejandro Cercos Perez:
2/4'ü tam sayılara (0) bölüyorsunuz ve sonra bu bir double'a ayrıştırılıyor. Bunun yerine, bölen veya bölenlerden birinin double olmasını sağlamalısınız (böylece bölme işlemi "en ayrıntılı" veri türünde yapılır)
Diğer seçenekler (günlerin bir int olması) olabilir:
Bu muhtemelen pitonvari bir hata hehehHey Manuel,
Çok teşekkürler! Yukarıdaki ipucu bir cazibe gibi çalıştı. Beni kök nedeni bulmak için daha fazla saat harcamaktan kurtardınız.
Aksi takdirde bunu alınan her tikte yapacaksınız.
Son sorunuz: açık zamanı alın ve
Çevirmenlere tebrikler.
İlk makaleden sonra şüphelerim vardı, ancak şimdi yazarın moron programcılara moron olduklarını açıklamak istediğinden eminim. Yazar, alınmayın ama makale sizin için yazılmış. Ayrıca, okuyucularınıza hitap ettiğiniz kibir, çalışmanızı geçersiz kılıyor.
- Ü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
Yeni makale Daha İyi Bir Programcı Nasıl Olunur? (2. Bölüm): Başarılı bir MQL5 programcısı olma yolunda şu 5 kötü alışkanlıktan daha kurtulun yayınlandı:
Bu makale, programlama kariyerini geliştirmek isteyen herkesin okuması gereken bir makaledir. Bu makale dizisinin amacı, ne kadar deneyimli olursanız olun, sizi olabileceğiniz en iyi programcı yapmaktır. Makalede açıklanan fikirler hem yeni başlayan hem de profesyonel MQL5 programcıları için işe yarardır.
Bu makale dizisinde MQL5 programlama konusunda daha az deneyime sahip birini tanımlamak için noob kelimesini çok kullanıyorum (buna gücenmeyin). Bu sadece ifade etmemi kolaylaştırıyor. Bu, makalelerin özellikle acemiler veya yeni başlayanlar için olduğu anlamına gelmiyor. Tabi ki değil! Bu makale dizisi, sahip olduğunuz programlama deneyiminden bağımsız olarak herkese yöneliktir, çünkü sizi noob yapan ya da yapmayan şey kodlama yaptığınız yıl sayısı değil, alışkanlıklarınız ve davranışlarınızdır.
İlk makaleyi okumayanlar için işte burada. Bu makalede de noobları profesyonellere dönüştürme görevime devam ediyorum.
Yazar: Omega J Msigwa