Hatalar, hatalar, sorular - sayfa 3151
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Her zaman bir kontrol vardı: if(limit>1) limit=rates_total-1. Bu, hesaplamalarda i+ ancak olmadığı durumlar içindir. Varsa, bu "bir şeyler" yapıya dahil edilmelidir: limit=rates_total-1-ne kadar_bu.
Onsuz, her zaman sınırların dışında bir dizi vardı. Sonuçta, Rates_total, Bars()'tan başka bir şey değildir. Buna göre, eğer 5000 çubuk varsa ve biz 5000 indeksine atıfta bulunuyorsak, o zaman dizinin ötesine geçiyoruz (çubukların sayımı sıfırdan başlar).
Örneğinizde, limit hesaplaması doğru değil:
Bunun gibi olmalı:
Ve sonra limiti kontrol edin> 1
ve limit hala birden büyükse, limit = rate_total-1
Artyom'a teşekkürler! Ve kaynattığım için üzgünüm.
Kesinlikle, bir çek olmalı, sadece unuttum.
Kodumda hala bir yorum var
// Hesaplanan çubukların sayısının kontrol edilmesi ve hesaplanması.
Anlaşılan kopyala-yapıştır kendini hissettirmiş ve bende bir yanlış anlaşılma olmuş.
Doğrulama ile her şey olması gerektiği gibi çalışır. Teşekkür ederim.
Teşekkürler Artyom!
Kesinlikle, bir çek olmalı, sadece unuttum.
Doğrulama ile her şey olması gerektiği gibi çalışır. Teşekkür ederim.
Rica ederim. Limitin doğru hesaplanması. Sizin için doğru değil - Yukarıda buna dikkat çektim.
-1 burada olmamalıydı .
Rates_total 5000'e eşitse ve ayrıca önceki OnCalculate() çağrısında (önceki_hesaplanmış) hesaplanan 5000 çubuk varsa, o zaman limit -1'e eşit olacaktır. Buna göre, döngü hiç yürütülmeyecektir.
Göstergenin nasıl hesaplanacağını seçmek istiyorsanız (sıfır çubuğundaki işaretlerle veya yalnızca yenisinin açılışında), o zaman nasıl hesaplanacağını gösteren bir değişken girin:
int end = (her tik ? WRONG_VALUE : 0);
o zaman döngü şu şekilde olacaktır: for(int i=limit; i>end; i--) { //... }
ve limit hesaplaması doğru olacak ve döngü istediğiniz gibi olacaktır.
Doğru kod.
her tik için i>=0
i>0 yeni çubuk için
Veya
Ne yapacağını bile sormadın... Telepatlar tatilden döndü mü? ;)
Doğru kod.
her tik için i>=0
i>0 yeni çubuk için
OnInit()'e taşımak daha iyidir
Ne yapacağını bile sormadın... Telepatlar tatilden döndü mü? ;)
:)
Artem, bir kişinin birkaç dakika önce kayıt olduğunu ve ilk gördüğü şeyin "Hatalar, buglar, sorular " olduğunu görmek için telepat olmaya gerek yok.
Lahanayı ücretsiz kesmenin mümkün olup olmadığını soran dişbudak kütüğü ve çok fazla zorlamamak için ...
:)
Artem, bir kişinin birkaç dakika önce kayıt olduğunu ve ilk gördüğü şeyin "Hatalar, buglar, sorular " olduğunu görmek için telepat olmaya gerek yok.
Lahanayı ücretsiz kesmenin mümkün olup olmadığını soran dişbudak kütüğü ve çok fazla zorlamamak için ...
Belki de bir öğretmene yatırım yaparak bir Bentley için kendi parasını kesmek için bir programcının sıkı çalışmasını kullanmaya karar verdi? :)
Belki de bir öğretmene yatırım yaparak bir Bentley için kendi parasını kesmek için bir programcının sıkı çalışmasını kullanmaya karar verdi? :)
En sinir bozucu olan ne biliyor musun? Herhangi bir davranışın sessizce, uyarı yapılmadan değiştirilmesi.
Ve sonra insanlar acı çekiyor. Bu metatrader'dan bıktınız.
sadece gösterge döngüsünün tasarımının, hiç düşünmeden kopyala-yapıştır yöntemi (ve otomatik doldurma eğrileri) kullanılarak eski zamanlardan sürüklenmesidir.
hala sadece mevcut arayüzle:
for(int bar=prev_calculated>0?prev_calculates-1:0 ; bar<rates_total; bar++) {
int i=rates_total-1; // i используем если обращения как ArraySetSeries(x,true), иначе bar
....
}
return rates_total;
her aramada son çubuğu yeniden hesaplamanız gerekiyorsa, bu durumda prev_calculated-1 ile kalabalık gerekir.
sadece gösterge döngüsünün tasarımı, hiç düşünmeden kopyala-yapıştır yöntemi (ve otomatik tamamlama eğrileri) kullanılarak eski zamanlardan sürüklenir.
hala sadece mevcut arayüzle:
for(int bar=prev_calculated>0?prev_calculates-1:0 ; bar<rates_total; bar++) {
int i=rates_total-1; // i используем если обращения как ArraySetSeries(x,true), иначе bar
....
}
return rates_total;
her aramada son çubuğu yeniden hesaplamanız gerekiyorsa, bu durumda prev_calculated-1 ile kalabalık gerekir.
Evet, açıklamayla heyecanlandım.
Sadece bir şey eskiden işe yarıyordu, ama şimdi çalışmıyor, sinir tikleri başlıyor))
Ve her şeyi tekrar kontrol etmeye başlıyorsunuz ve kesinlikle hatırlamadığınız bazı özellikleri unutarak, kırdığınız şey için mantıksız bir şekilde günah işliyorsunuz.
Ve hepsi copypasta'nın suçu. Sanırım bir çok kişi bunu yaşamıştır.
Genel olarak, geliştiricilere göstergeler ve uzmanlar için özel şablonlar yapmalarını önermek istedim.
Sihirbaz penceresinde bunları seçebilmeniz için.
Bazı C/C++ düzenleyicilerinde bu özellik bulunur.
Çok uygun, esas olarak çalıştığınız ana boşlukları perçinledim ve ardından bunları master'a yüklüyorsunuz.
Standart MQL şablonları, pek de değil.
Yine de şablonlar yazabileceğinizi ve ardından kopyalayıp yapıştırabileceğinizi söyleyebileceğiniz açıktır.
Ve yine sinsi kopyala-yapıştır kelimesine dönüyoruz. Ve otomatikleştirmenin ve programcının kaderini hafifletmenin mümkün olduğu gerçeği bir şekilde dikkate alınmaz.