Hatalar, hatalar, sorular - sayfa 493

 
Lodar :
tartışmam
ve bu yüzden
aynı yazıyor bir yuvarlama var, bu yüzden gerekli mi?


round() fonksiyonunun tipine bakın. Bu bir yuvarlama işlevidir, bir döküm değil.
Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - Документация по MQL5
 

geliştiriciler

Uzman Danışman'da kenelerin işlenmesini yanlışlıkla döngüye aldım, ardından kritik bir yığın taşması hatası ortaya çıktı.

Sorun, mesajın tam olarak nerede ve ne olduğu hakkında belirli bilgiler içermemesidir.

Derleme aşamasında bu tür sorunları (çağrılan bir yöntemden bir sınıf yöntemini çağırmak gibi) yakalamak istiyorsanız, bu mesajın metnini netleştirmeyi öneriyorum.

Документация по MQL5: Программы MQL5 / Ошибки выполнения
Документация по MQL5: Программы MQL5 / Ошибки выполнения
  • www.mql5.com
Программы MQL5 / Ошибки выполнения - Документация по MQL5
 
MoneyJinn :

iCustom()'un aslında hiçbir şeyle dolu olmayan bu arabellek hücrelerine keyfi değerler atamasının nedeni ve bunun neden herhangi bir şekilde önlenemediği benim için net değil.

Bunun bir şekilde gösterge arabelleğinin karşılık gelen veri dizisi için bellek tahsisi ile ilgili olduğunu varsayıyorum.

iCustom() tarafından yapılan bu tür çalışmalar, verilerin kaynağını ve doğruluğunu belirlemek imkansız olduğunda, bana kabul edilemez görünüyor ve kullanıcı için ek riskler yaratıyor.

iCustom() zaten gerçek değerlere karşılık gelmeyen arabellek hücrelerine keyfi değerler atarsa,

o zaman neden bu hücrelere MT4'te uygulandığı gibi Empty_Value'ye eşit bir değer vermiyorsunuz.

O zaman en azından durumları netleşirdi.

Kullanılmayan tampon değerlerinin neyle doldurulacağına yazardan başka kimse karar veremez. Empty_Value diyorsunuz, ancak örneğin 0 veya başka bir şey olmasına ihtiyacım var. Hangi değere ihtiyacınız var, öyleyse başlatın.
 
Interesting :

geliştiriciler

........... derleme zamanında benzer sorunları (çağrılan bir yöntemden bir sınıf yöntemini çağırmak gibi) yakalamak isteyebilirsiniz.

karşıyım. Bu, derleyiciyi aşırı derecede karmaşık hale getirecek ve dolayısıyla daha az güvenilir hale getirecektir.

Yanlış özyinelemeyi izlemek programcıya bağlıdır.

Ama hata mesajında yığını taşan fonksiyonun adını vermek - evet, istiyorum.

 
Valmars :
Kullanılmayan tampon değerlerinin neyle doldurulacağına yazardan başka kimse karar veremez. Empty_Value diyorsunuz , ancak örneğin 0 veya başka bir şey olmasına ihtiyacım var. Hangi değere ihtiyacınız var, öyleyse başlatın.

Her şey doğru ve mantıklı. Ancak sorun, kullanıcının hiçbir şeyle doldurmadığı arabellek hücrelerinin (!) iCustom() işlevi kendi takdirine bağlı olarak periyodik olarak rastgele çöplerle tıkanmasıdır. Böyle mi olması gerekiyor?

 
MetaDriver :

karşıyım. Bu, derleyiciyi aşırı derecede karmaşık hale getirecek ve dolayısıyla daha az güvenilir hale getirecektir.

Yanlış özyinelemeyi izlemek programcıya bağlıdır.

Ama hata mesajında yığını taşan fonksiyonun adını vermek - evet, istiyorum.

Evet, özellikle çalışan motoru (yerel 32/64'tür) meta bilgilerle karmaşıklaştırmıyoruz.

Özyinelemeyi yakalamak genellikle kolaydır - doğrudan yerel değişkenlerin kapsamına bağlıdır ve programda bu tür çok az yer vardır.

 
MoneyJinn :

Her şey doğru ve mantıklı. Ancak sorun, kullanıcının hiçbir şeyle doldurmadığı arabellek hücrelerinin (!) iCustom() işlevi kendi takdirine bağlı olarak periyodik olarak rastgele çöplerle tıkanmasıdır. Böyle mi olması gerekiyor?

Özel bir gösterge arabelleğini doğru doldurmazsa, bu özel gösterge suçlanır.

Ve bu özel gösterge, sonuçlarını iCustom aracılığıyla veriyorsa, kullanıcıları yanlış yönlendirdiği için iki kat suçludur.

 
Renat :

Özel bir gösterge arabelleğini doğru doldurmazsa, bu özel gösterge suçlanır.

Ve bu özel gösterge, sonuçlarını iCustom aracılığıyla veriyorsa, kullanıcıları yanlış yönlendirdiği için iki kat suçludur.

Tavrınız anlaşılabilir. Sana şans diliyorum.
 
Renat :

Özel bir gösterge arabelleğini doğru doldurmazsa, bu özel gösterge suçlanır.

Ve bu özel gösterge, sonuçlarını iCustom aracılığıyla veriyorsa, kullanıcıları yanlış yönlendirdiği için iki kat suçludur.

Programın sadece etkili olmasını değil, aynı zamanda kullanışlı olmasını da neyin engellediğini hala anlamıyorum? Doğru hatırlıyorsam, beşte gösterge arabelleklerinin yerleşik başlatma eksikliğinin argümanı hız optimizasyonudur. Aynı zamanda, gösterge geliştiricisi, daha önce dörtte çekirdek tarafından yürütülen aynı başlatma satırlarını ("sıfırları") kodlamaya zorlanır. Dolayısıyla ortaya çıkan verimlilik daha iyi görünmüyor ve rahatlık zarar görüyor. Ama bir nedenden dolayı böyle yapılmasına karar verildiğine göre, neden isteğe bağlı olarak yapılmasın? Onlar. arabelleklerin otomatik olarak başlatılması gerekip gerekmediğini gösteren başka bir #özellik eklemek mümkündü.

Özet olarak, bir zamanlar dile getirdiğim fikri tekrar edeceğim: MT olan platformun görevi, kullanıcıyı (programcıyı) olası "rake"lerden olabildiğince korumaktır.

Индикатор от индикатора в MQL5
Индикатор от индикатора в MQL5
  • 2010.02.08
  • MetaQuotes Software Corp.
  • www.mql5.com
При написании индикатора, который использует краткую форму вызова функции OnCalculate(), можно упустить то обстоятельство, что индикатор может рассчитываться не только на ценовых данных, но и на данных другого индикатора (встроенного или пользовательского - не имеет значения). Вы хотите улучшить индикатор, чтобы он правильно считался не только на ценовых данных, но и значениях другого индикатора? В этой статье мы по шагам пройдем все необходимые этапы такой модификации и выведем дополнительные полезные правила для правильного написания индикатора.
 
MoneyJinn :

Her şey doğru ve mantıklı. Ancak sorun, kullanıcının hiçbir şeyle doldurmadığı arabellek hücrelerinin (!) iCustom() işlevi kendi takdirine bağlı olarak periyodik olarak rastgele çöplerle tıkanmasıdır. Böyle mi olması gerekiyor?

Wapcheta'nın genel kabul görmüş kuralı: Kullanıcının takdirine bağlı olarak dizilerin başlatılması . Başlatılmamış bir dizi, kendisine ayrılan bellekten rastgele değerler içerir. Kullanıcının diziyi gereksiz yere başlatmamak için makul nedenleri olabilir (örneğin, zamandan tasarruf etmek için). Bazen bu şekilde zaman kazanıyorum, eğer gerçek bilgi orada görünmeden bu çöpü okuyup "yemeyeceğimden" eminsem.

MQ tarafında herhangi bir kötü niyet görmüyorum. Bunun yerine, "önleme için" programlarımı yavaşlatmaya başlarlarsa itiraz edeceğim.

Документация по MQL5: Операции с массивами / ArrayInitialize
Документация по MQL5: Операции с массивами / ArrayInitialize
  • www.mql5.com
Операции с массивами / ArrayInitialize - Документация по MQL5