Hatalar, hatalar, sorular - sayfa 348

 
Rosh :

Bir pozisyon varsa, sonsuz bir döngü elde edersiniz, çünkü

eşdeğerdir

Operatör gövdesinde herhangi bir kesinti olmadığı için koddaki döngüden çıkmanın bir yolu yoktur;
Çok teşekkür ederim, orada olmaması gerekiyordu; Düzeltildi herşey çalışıyor
 

Hatalar (build 421, belki 425. derlemede bir şeyler düzeltildi, 425 güncellemesi henüz Alpari'den alınmadı):

1. Konuya 3B görselleştirme hakkında zaten yazmıştım: 3B grafiğin başlıkları (ölçek adı ve bölme değeri), grafikte görüntüleme parametreleri değiştirildiğinde değişmez.

2. Hızlı optimizasyon ile grafik yaklaşık olarak 10600. geçişte olacaktır, yani. optimizasyon 50,51...60 nesil devam eder, ancak grafik artık kaymaz ve yeni geçişler göstermez. Aynı zamanda, Ayarlar sekmesinde, geçiş sayısı yerine "Optimizasyon ilerlemesi:" görüntülenir ve bazı belirsiz durumlarda, örneğin 12420/14400 olarak değişir (sayılar yaklaşıktır).

3. Uzak temsilciler Meşgul durumuna geçebilir ve bu durumda kalabilir, bunları kapatıp açmanız gerekir, bundan sonra optimizasyon devam eder.

Ve soru şudur: Grafik türünü (1D/2D/3D) optimizasyon işlemi sırasında değiştirmek mümkün olacak mı, tamamlandıktan sonra değil mi?

 
PiramidaR :

Hatalar (build 421, belki 425. derlemede bir şeyler düzeltildi, 425 güncellemesi Alpari'den henüz alınmadı):

Aynı terminalde MetaQuotes'tan bir hesap açın ve güncellenecektir. Ardından başka bir hesaba geri dönün.
 
PiramidaR :

Hatalar (build 421, belki 425. derlemede bir şeyler düzeltildi, 425 güncellemesi henüz Alpari'den alınmadı):

1. Konuya 3B görselleştirme hakkında zaten yazmıştım: 3B grafiğin başlıkları (ölçek adı ve bölme değeri), grafikte görüntüleme parametreleri değiştirildiğinde değişmez.

2. Hızlı optimizasyon ile, grafik yaklaşık olarak 10600. geçişte çarpışacaktır, yani. optimizasyon 50,51...60 nesil devam eder, ancak grafik artık kaymaz ve yeni geçişler göstermez. Aynı zamanda, Ayarlar sekmesinde, geçiş sayısı yerine "Optimizasyon ilerlemesi:" görüntülenir ve bazı belirsiz durumlarda, örneğin 12420/14400 olarak değişir (sayılar yaklaşıktır).

3. Uzak temsilciler Meşgul durumuna geçebilir ve bu durumda kalabilir, bunları kapatıp açmanız gerekir, bundan sonra optimizasyon devam eder.

Ve soru şudur: Grafik türünü (1D/2D/3D) optimizasyon işlemi sırasında değiştirmek mümkün olacak mı, tamamlandıktan sonra değil mi?

1.2 Sabit, ancak en son yapıya dahil değil

3. Bu sorun üzerinde çalışıyoruz

Böyle bir fırsat olmayacak

 
Göstergelerde, sadece çizilmeyecek bir değer belirtebilmek istiyorum.
 PlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , EMPTY_VALUE );

ama aynı zamanda diziyi bu değerle otomatik olarak başlatabilir. Gösterge tarafından son çubuğa hiçbir şey atanmamışsa, varsayılan olarak kendisine belirtilenleri atar.

 PLOT_EMPTY_VALUE

veya daha doğrusu, önce boş bir değerle başlatma ve ardından göstergenin istediğini yazmasına veya yazmamasına izin verin.

Aksi takdirde, şimdi varsayılan olarak sıfır olacaktır, ancak birçok göstergede sıfır, çizilmesi gereken önemli bir sayıdır.

ZY bu konuya yazdı çünkü bunun çözülmediğinden emin değilim, bu yüzden dilek de bir soru olarak kabul edilebilir. Çözüldüyse nasıl olduğunu söyler misiniz?

 

Urain :

Aksi takdirde, şimdi varsayılan olarak sıfır olacaktır, ancak birçok göstergede sıfır, çizilmesi gereken önemli bir sayıdır.

Aslında her şey orada olabilir, genellikle şans eseri sıfırdır. Makalede MQL5'teki göstergeden gelen gösterge doğrudan şunları söylüyor:

Gösterge arabelleklerini başlatmam gerekir mi?

MQL5'teki diziler varsayılan olarak herhangi bir değerle başlatılmaz ve bu kesinlikle SetIndexBuffer() işlevi tarafından gösterge arabelleklerine atanan diziler için geçerlidir. Dizi bir gösterge arabelleğiyse, işlem sırasında boyutu OnCalculate() işleyicisindeki Rates_total parametresine bağlı olacaktır.

ArrayInitialize() işlevini kullanarak, örneğin OnCalculate() öğesinin başında bir kez, tüm gösterge arabelleklerini boş bir EMPTY_VALUE değeriyle başlatmak cazip gelebilir.
 //--- если это первый вызов OnCalculate() 
   if (prev_calculated== 0 )
     {
       ArrayInitialize (TSIBuffer, EMPTY_VALUE );
     }

Ancak bunun aşağıdaki nedenden dolayı yapılması önerilmez: terminal işleminin tüm süresi boyunca, göstergenin hesaplandığı sembol için teklifler alınır. Böylece, çubuk sayısı zamanla artacak ve terminal, gösterge arabellekleri için ek bellek tahsis edecektir.

Ancak yeni eklenen dizi öğelerindeki değerler herhangi bir değere sahip olacaktır, çünkü herhangi bir dizi için bellek yeniden tahsis edildiğinde başlatma yapılmaz. Ve ilk başlatma, açıkça herhangi bir değer atamadığımız dizinin tüm öğelerinin diziyi ilk başlattığımızda aynı değerle doldurulacağına dair aldatıcı bir güven verebilir. Bu elbette doğru değil ve bir değişkenin veya dizi öğesinin değerinin ihtiyacımız olan değere başlatılacağı gerçeğine asla güvenmemelisiniz.

Gösterge arabelleğinin her bir öğesi için bir değer ayarlamak gerekir ve belirli bir çubuk için gösterge değeri tanımlanmamışsa (göstergeye gömülü algoritmaya göre hesaplanmaz), o zaman bu gibi durumlar için gereklidir. boş değeri açıkça ayarlayın . Örneğin, gösterge arabelleğinin değeri bölme işlemi aracılığıyla hesaplanır ve bir noktada bölenin sıfıra eşit olduğu ortaya çıkabilir.
 
Rosh :

Aslında her şey orada olabilir, genellikle şans eseri sıfırdır. Makalede MQL5'teki göstergeden gelen gösterge doğrudan şunları söylüyor:


Bu tam olarak dil düzeyinde çözmek istediğim görevdir, aksi takdirde son değerin başlatılması, hataların olabileceği ek kod satırları gerektirecektir.

ve böylece tam olarak belirlenmiş bir değer olduğuna dair güven olacak ve bu temelde başka bir algoritma oluşturmak mümkün olacaktır.

 
Urain :

Bu tam olarak dil düzeyinde çözmek istediğim görevdir, aksi takdirde son değerin başlatılması, hataların olabileceği ek kod satırları gerektirecektir.

ve böylece tam olarak belirlenmiş bir değer olduğuna dair güven olacak ve bu temelde başka bir algoritma oluşturmak mümkün olacaktır.

Bununla da karşılaşıldı. Destekliyorum: dil düzeyinde bir karar verin.
 
Lizar :
Bununla da karşılaştı. Destekliyorum: dil düzeyinde bir karar verin.
+1
 

425 yap

Test cihazıyla ilgili aşağıdaki durum kafamı karıştırıyor: EA aynı koşullar altında birkaç kez çalıştırılıyor, ancak çalıştırmaların sonuçları farklı. Fark küçük ama...

İki makinede test edildiğinde, yaklaşık olarak eşit olasılıkla 2 farklı sonuç ortaya çıktı. Bu ne anlama geliyor?