Hatalar, hatalar, sorular - sayfa 1998

 
Stanislav Korotky :

Bu argümanı anlamadım (MQ öne sürüldüğünde) ve şimdi anlamıyorum. Başlatma hiçbir yere gitmiyor. Şimdi uygulama programcısına emanet ve hala yapıyor, ancak uygulamada görüldüğü gibi - bazen hatalarla. Ve eğer çekirdek bunu yapsaydı, performansı hiçbir şekilde etkilemeyecek ve hiçbir hata olmayacaktı.

Örnek olarak gösterge arabellek dizisini ele alalım: Göstergeyi başlatırken, arabelleğin uzunluğu sıfırdır. Sıfırlarla başlatılacak ne var? Bir sonraki dizini eklerken, onu sıfırlamaya ve ardından bir değerle doldurmaya zorlanır ??? Bu sıfırlama veya EMPTY_VALUE ile doldurma ne için ? Ve eğer 0 değil, EMPTY_VALUE değil PLOT_EMPTY_VALUE atamak gerekiyorsa ya da biri zorlanmış, başka birine ihtiyaç duyuluyorsa... Kim ne derse desin zaman kaybı oluyor...

Ve özel bir dizi... Sıfır olmayan bazı veriler için bir dizi bildirildi ve BOŞ_VALUE. Öyleyse, onu bir şeyle zorla başlatmanın amacı nedir?

Bu yüzden çoğu durumda performansı etkilediği ortaya çıkıyor.

 
Alexey Viktorov :

Ve özel dizi... Sıfır olmayan bazı veriler ve EMPTY_VALUE için bir dizi bildirildi. Öyleyse, onu bir şeyle zorla başlatmanın amacı nedir?

Daha az yapmak için "test sonuçları eşleşmiyor".

 
fxsaber :

Daha az yapmak için "test sonuçları eşleşmiyor".

Ve kimin ihtiyacı var?

Her paragrafta hiç kimseden danışman sipariş etmenin gerekli olmadığı söylenecek bir makale yazın. Danışmanları doğru yazmak için ne.

 
Alexey Viktorov :

Ve kimin ihtiyacı var?

Ben ve neredeyse kesinlikle geliştiriciler.

 
fxsaber :

Ben ve neredeyse kesinlikle geliştiriciler.

Böyle bir önemsiz şeyin sizi çıkmaza sokabileceğinden çok şüpheliyim. Ya da nedeni farklı.

 
Alexey Viktorov :

Böyle bir önemsiz şeyin sizi çıkmaza sokabileceğinden çok şüpheliyim. Ya da nedeni farklı.

Mükemmel yazmış olsam bile (hata yapmadan - ki durum böyle değil), birinin kütüphanesini (bazen kaynak kodu olmadan - Market'te) alıp doğru yazıldığını umarak kullandığınızda durum normaldir. Ve hiçbir şey bundan sonra test cihazında çeşitli sonuçlarla karşılaşacağımı garanti etmez. Ve gerçek sebebi bulmak ÇOK zor olacak. Düzeltmek bazen imkansızdır.

Amaç, sonucu bir hatayla bile aynı - her çalışmadan tekrarlanabilir hale getirmektir.

 
fxsaber :

Muhtemelen ideal çözüm, varsayılan olarak tüm programlar için zorunlu başlatma + onu devre dışı bırakmak için bir derleme anahtarı olacaktır (yeteneklerine güvenen ve birkaç yüzde hızlandırmak isteyenler için).

 

Başlatma gerçekten çok fazla kaynak gerektirir. Zorla başlatma ile bir kod parçası attım - optimizasyonda neredeyse 2 kat hızlandı)

Ve ilginç bir şeyle karşılaştım. Düşüşün %120 olduğu ve aynı zamanda sonucun siyah ve üstte olduğu nasıl olabilir?

Stratejiyi test ediyorum - %109'luk bir düşüş elde ediyorum ve marj çağrısı yok, ancak bakiye büyümeye devam ediyor - nasıl?
 
Anton Ohmat :

Başlatma gerçekten çok fazla kaynak gerektirir. Zorla başlatma ile bir kod parçası attım - optimizasyonda neredeyse 2 kat hızlandı)

Yanlış bir şey yazmışsın.

 
Andrey Khatimlianskii :

Tam başlatma her zaman gerekli değildir. Örneğin, bir döngüdeki her çubuk için arabellek değerini dolduran bir gösterge için (ve bunu gösterge arabelleğinin başlatılıp başlatılmadığından bağımsız olarak yapar).

Bu durumda zorla sıfırlama yapılmadan daha ekonomik olacaktır.

Neden böyle gerçekçi olmayan senaryolar icat ettin, aslında bir MQL programcısının hataları? Tam başlatmanın yalnızca bir kez veya verilerin devam ettiğinin saptanması durumunda yapıldığı açıktır. Bu durumda, çekirdek onu daha verimli hale getirecektir.