Gösterge bozuluyor - sayfa 6

 
Rosh :
Tamam bekleyeceğim

20 saatten fazla bir süre sonra gösterge düzgün çalışıyor. Ne diyeceğimi bilmiyorum.


 

Rosh, Yakınlaştır/Uzaklaştır, sola/sağa kaydır. 64/32 bitte hangi platformu test ediyorsunuz?

 
AnkaSoftware :

Rosh, Yakınlaştır/Uzaklaştır, sola/sağa kaydır. 64/32 bitte hangi platformu test ediyorsunuz?

Genel sorunu 32-bit'te çoğaltabilirim. İşletim Sisteminin alakalı görünmesinin tek yolu, 64 bit sisteminizin neden çubuk geçmişinin başlangıcında veya ortasında periyodik olarak yeni veriler aldığı sorusudur, oysa 32 bit sisteminiz (ve RaptorUK'un 64-bit sistemi) değildir. Ne olursa olsun, göstergenizi diğer insanlara vermeye niyetli görünüyorsunuz ve çubuk geçmişindeki değişiklikler, yalnızca kullanıcılarınızın eksik çubukların eklenmesine yol açan komisyoncu bağlantılarının kesilmesinden muzdarip olması nedeniyle, gerçek hayatta kesinlikle karşılaşacağınız sorunlardır. yeniden bağlantı üzerine tarihin ortasına.

Daha önce açıklamaya çalıştığım gibi, bu "hatanın" kodunuzda mı yoksa MT4'te mi olduğu tartışmalıdır. Göstergelerin MT4'te nasıl davranacağına dair bir beklenti var ve göstergeniz bu şekilde davranmıyor. Örneğin, MetaEditor kullanarak yeni bir gösterge oluşturduğunuzda, sizin için "int counted_bars=IndicatorCounted();" satırını ekler. Bunu kaldırıyorsunuz ve IndicatorCounted()'ı yok sayıyorsunuz.

Genel sorunu, ilk başladığında son 10 bar yüksekliği arasına bir çizgi çeken aşağıdaki göstergeyi kullanarak çoğaltabilirim:

 #property indicator_chart_window
#property indicator_color1 Red
#property indicator_buffers 1

double indicatorvalues[];

void init()
{
   SetIndexBuffer( 0 , indicatorvalues);
}

void start()
{
   static bool IsFirstCall = true ;
   if (IsFirstCall) {
      IsFirstCall = false ;
       for ( int i = 0 ; i < 10 ; i++) {
         indicatorvalues[i] = High[i];      
      }
   }
}

Daha sonra aşağıdakileri yaparak aynı türde bir sorunu çoğaltabilirsiniz:

* Herhangi bir sembol için bir grafik açın

* Göstergeyi grafiğe ekleyin

* "Grafik otomatik kaydırma" özelliğini kapatın (yalnızca aşağıdaki adımları kolaylaştırmak için; sorun üzerinde herhangi bir etkisi olduğu için değil)

* Ana Sayfa'ya basarak grafiğin başına gidin

* Fazladan veri indirmeye zorlamak için Page Up'a basın. (Not: Bu noktada grafiğe bazı ekstra veriler eklenmedikçe sorun yoktur.)

* End'e basarak grafiğin sonuna gidin. Yüksekler arasındaki kırmızı çizgi şimdi konumunun dışında olacak. Zamanda geriye doğru taşınmış olacaktır.

[Bütün bunlar, RaptorUK'un zaten tanımlamış olduğu şeyi ortaya çıkarıyor.]

 

Tamam, Onaylayabilir misiniz, IndicatorCounted() bu durumda eksik çubuklar/bozuk göstergeler durumunda bir -ve sayı döndürür? Gösterge dizilerini yeniden başlatmayı ve yeniden inceleme çubuğundaki hareketleri yeniden çizmeyi deneyeyim .

 
AnkaSoftware :

Tamam, Onaylayabilir misiniz, IndicatorCounted() bu durumda eksik çubuklar/bozuk göstergeler durumunda bir -ve sayı döndürür?

Hayır, olan - zaten 5. sayfada söylediğim gibi ve kendiniz için kolayca test edebileceğiniz gibi - şudur: bir yukarıda. Bu, normal bir göstergenin tüm geçmiş değerlerini yeniden çizmesine neden olur, çünkü hangi çubukların "kirli" olduğunu ve güncellenmesi gerektiğini belirlemek için genellikle Barlar ve IndicatorCounted() arasındaki farkı kullanır. IndicatorCounted() sıfır ise, gösterge bu nedenle her tarihi çubuğu yeniden hesaplar, yani Çubuklar - 0 = Çubuklar nedeniyle.

IndicatorCounted() ( https://docs.mql4.com/customind/IndicatorCounted ) belgeleri bunu yapmanın bir örneğini sağlar ve https://www.mql5.com/en/forum/132447 gibi alternatif sürümler vardır. https://docs.mql4.com/customind/IndicatorCounted adresindeki standart kod gereksiz yere "temiz" olan bir çubuğu yeniden hesapladığı için çok marjinal olarak geliştirilmiş performansı hedefliyor.
 

IndicatorCounted() eklenmesi, IndicatorCounted() 0 değerini döndürdüğünde göstergeleri kontrol eder ve yeniden başlatır, geçmiş veya ek çubuklar eklendiğinde ortaya çıkan göstergelerin kayması sorununu çözer.

Ancak, geçmiş çubuklarının eklenmesinden kaynaklanmadığı görülen göstergelerin bozulmasıyla ilgili başka bir sorun daha vardır. Sorunu yeniden oluşturmak için ekteki örnek kod, en az iki gösterge yeniden başlatılıncaya kadar 10+ saat çalıştırmanız gerekir, yani IndicatorCounted() 0 döndürüyor (gösterge sonrası başlangıç).

Dosyalar: