MT5 değişim terminalinde göstergeler (çizgiler, oklar, histogramlar) neden titriyor? - sayfa 9

 
Andrey Khatimlianskii : Titreşimin yoğun yüklü bir işlemciyle yeniden üretilmesi çok kolaydır. Optimizasyonu tüm yerel çekirdeklerde çalıştırın ve bir düzine nesneyi silmeye/oluşturmaya çalışın ve bir ChartRedraw yapın. Çelenk etkisi garantilidir.

Evet, ama tam tersini, titremeyi yeniden oluşturmak değil, durdurmak, bu titremeyi artık görmemek için bir şeyler yapmak istiyorum.
Üstelik uygun koşullarda işlemci yüklenmediğinde boşta kaldığı, optimizasyonun çalışmadığı yani denilebilir. yerel çekirdekler de yüklenmez, nesneler oluşturulmaz, ChartRedraw() çağrılmaz. Ve bilgisayarın böyle sakin bir durumunda, "çelenkler" yanıp sönmeye devam ediyor!

Ve geliştiriciler cevap bile vermediler, bu titreme prensipte henüz ortadan kaldırılamaz ve yalnızca MT5'in gelecekteki sürümlerinde ortadan kaldırılacaktır veya gösterge geliştiricilerin elleri çarpıktır ve MT5 için göstergeler geliştirirken bir şeyleri yakalamıyorlar...

 

Yalnızca özel göstergeler titremekle kalmaz, aynı zamanda "Regresyon Kanalı" gibi yerleşik araçlar da titrer.

 

Aleksey Vyazmikin : Мерцают не только пользовательские индикаторы , но и встроенные инструменты, к примеру "Канал регрессии".

Eğer öyleyse, o zaman tahmin edilecek bir şey yok, bu yüzden bu sorun henüz prensipte ortadan kaldırılamaz ve MT5'in gelecekteki bazı sürümlerinde çözülecektir. Geliştiriciler bu konuda dürüst olmalı ve programcıları neyi yanlış yaptıkları ve bununla nasıl başa çıkacakları konusunda kafa karışıklığına uğratmamalıdır...

 

Birkaç gün bu çiple uçuyordum.

yukarıda önerilen her şeyi denedi.

Yardım etmedi.

Göstergenin titremesi, MT5'te yalnızca şu nedenle oluşur:

ChartGetInteger (0,CHART_VISIBLE_BARS ...) işlevini kullanırken

En azından bu fonksiyon yerine sabit bir sayı ayarladığımda titremeyi bıraktı.

Belki bir şekilde bu işlevi beceriksizce uyguladı, ama yine de ...
Документация по MQL5: Операции с графиками / ChartGetInteger
Документация по MQL5: Операции с графиками / ChartGetInteger
  • www.mql5.com
Возвращает значение соответствующего свойства указанного графика. Свойство графика должно быть типов datetime, int или bool. Существует 2 варианта функции. 2. Возвращает true или false в зависимости от успешности выполнения функции.  В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром...
 

O da yardımcı olmadı ;)

 
Renat Akhtyamov :

O da yardımcı olmadı ;)

" ... İşlev eşzamanlıdır, yani onu çağırmadan önce grafik kuyruğuna yerleştirilmiş tüm komutların yürütülmesini bekler. ... "

Bu belgelerden. Kendi adıma, senkronize bir fonksiyonun tüm süreci yavaşlattığını ekleyeceğim - yürütülmesi tamamlanana kadar, yürütülmesi için kaynaklar olsa bile başka hiçbir işlem çalışmaya başlamaz.

 
Titremenin, nesnelerin terminal motoru tarafından yeniden çizilmesine bağlı olduğuna dair bir hipotez vardır, yani. çizim noktaları görünür ekranın dışındaysa, çizim için daha düşük bir önceliğe sahiptirler, bu da grafikteki hesaplama yükleri sırasında kendini gösterir (teklif alma oranı dahil - titremenin güçlü ve yoğun hareketlerle olduğunu fark ettim) .
 
Aleksey Vyazmikin :
Titremenin, nesnelerin terminal motoru tarafından yeniden çizilmesine bağlı olduğuna dair bir hipotez vardır, yani. çizim noktaları görünür ekranın dışındaysa, çizim için daha düşük bir önceliğe sahiptirler, bu da grafikteki hesaplama yükleri sırasında kendini gösterir (teklif alma oranı dahil - titremenin güçlü ve yoğun hareketlerle olduğunu fark ettim) .

Geliştiricilerin bu konuya gerçekten dikkat etmelerini istiyorum.

göstergenin titremesi kendi başınıza ortadan kaldırılamaz.

 

anlamış gibi görünüyor

bir gerçek değil ama

şu anda gerçek hayatta işlem gören mevcut Expert Advisor'ın bazı harici testleri gibi görünüyor.

Kişisel çıkarımlarım şunlardır:

grafik tam olarak 10 saat ileride inşa edildi, bitmiş halini görüyoruz

gerisi perde arkasında ve yavaş yavaş ekranımıza geçiyor

Saldırmasınlar diye videoyu kaydettim ama burada değil çok ilgilenecekleri yerde göstereceğim

---

şimdi resimlerde

ilk olarak, çubuk sayısı değişir ve 1000'de sabitledim, ancak hesaplama sıfırdan başladığı için 1001 çıkıyor:

titreme anında, beklenmedik bir şekilde 600 daha az çubuk vardır (ve titrerken sayı her zaman aynıdır - 358):

ve şu anda gösterge titriyor, bazen bu oluyor (sadece videoda bir kare yakalamayı başardık):

ve en ilginç olanı: bazen titreyen anlarda grafiksel olarak şimdiki zamandan geleceğe kapalı anlaşmaları gösterir , yani. şimdilik açıklar ama bir yerde kapalı olacaklar - perde arkasında

hepsini kendi gözlerinizle görmek için, yalnızca sonuncuyu değil tüm çubukları yeniden hesaplayın ve her bir onay işaretinde, her hesaplamadan önce arabellekleri temizleyin

aa evet tamamen unutmuşum

bu özellik akşam oluyor

müfettiş arkadaşım bütün malzemeleri almış, çok havalı olduğunu söylüyor ;)

;))))

----

ve şimdi tartışma...

 
Aleksey Vyazmikin :
Titremenin, nesnelerin terminal motoru tarafından yeniden çizilmesine bağlı olduğuna dair bir hipotez vardır, yani. çizim noktaları görünür ekranın dışındaysa, çizim için daha düşük bir önceliğe sahiptirler, bu da grafikteki hesaplama yükleri sırasında kendini gösterir (teklif alma oranı dahil - titremenin güçlü ve yoğun hareketlerle olduğunu fark ettim) .

At, Alla Yurievna'nın ne dediğini anlıyor. Besteci dolaylı da olsa nedenini belirtti. Terminal aşırı yüklendiğinde titreme oluşur - bu bir gerçektir. Aşırı yükleme, çeşitli nedenlerle oluşur ve her zaman bunun hesaplama kapasitesinin aşılması anlamına gelmez.

Neden: