MetaTrader 4 Client Terminal 387 ve MetaTrader 4 Data Center build 387'nin yeni versiyonu - sayfa 3

 
AlexSTAL :

Sorununuz tam olarak nedir? Her şeye eskisi gibi sahibim ve öyle kalıyor ... her tikte yeniden hesaplama yok ....


Zhunko gibi ben de tüm göstergelerde optimizasyona sahibim. Ve tüm arabellek her onayda yeniden hesaplanmaz. Her tikte zorunlu yeniden başlatma varsa, tüm göstergelerin yeniden yazılması gerekecektir. Bu bir sorun değil mi? Bu arada, tekrar tekrar dile getirildi.

Ve kendim için endişelenmiyorum. Öyle oldu ki çok sayıda insan bu göstergeleri kullanıyor. Ama gerçek sorunları olacak.

Burada, örneğin, http://ruforum.mt5.com/showthread.php?t=374

Birçok bağlantı sağlanabilir.

 
AlexSTAL :

açıklamasını okudum....

Bunu kendin test ettin mi?

Sorununuz tam olarak nedir? Her şeye eskisi gibi sahibim ve öyle kalıyor ... her tikte yeniden hesaplama yok ....

Gösterge tamponunu değişim durumuna göre doldurdum. Değişiklikler var - dolduruyoruz, hayır - doldurmuyoruz. Bu 387'de çalışmıyor.

Koşul kaldırıldı - kazanıldı. Çalışmadığında, arabelleğin varsayılan değerlerle (başlatıldı) doldurulduğunu gördüm.

Belki de öyle görünmüyorlardı? Fark etmediniz mi yoksa göstergeniz için kritik değil mi?

Metaalıntılardan açıklamaları beklemeliyiz.

 

Bu, göstergenin bir parçasıdır:

 // Если произошёл первый пуск индикатора или предыдущим блоком разрешена развёртка или изменились параметры окна.
if (gl_nCounterTeak == 1 || st_bRecalculation == true || st_nWBarsPerChart != tmp_nBarsPerChart || st_nWFirstVisiblBar != tmp_nFirstVisiblBar)
 { // Закрепляем значок вызова свойств индикатора.
  st_nWBeginSearch = st_nWFirstVisiblBar - st_nWBarsPerChart;
   if (st_nWBeginSearch < - 1 ) // Если справа есть свободное пространство, закрепляем значок вызова свойств индикатора.
   {
    GetClientRect(gl_hWindow, st_aiRect); // Расчёт размеров окна.
    gl_adBufIndicator2[ 0 ] = 0.35 * (gl_dMaxPositionMark - gl_dMinPositionMark) + gl_dMinPositionMark;
    SetIndexShift( 1 , - st_nWBeginSearch - 0.5 * (( 36 * st_nWBarsPerChart) / st_aiRect[ 2 ] - 1 ));
    SetIndexDrawBegin( 1 , 0 );
   }
   // Устанавливаем развёртку.
   if (st_nWBeginSearch <= 0 ) st_nWBeginSearch = 0 ;
   for (i = st_nWFirstVisiblBar; i >= st_nWBeginSearch; i--)
   { // Очищаем буфер от лишних значков для вызова окна свойств индикатора.
     if (i > 0 ) gl_adBufIndicator2[i] = EMPTY_VALUE;
    // Закрепление вертикальной развёртки графика с помощью индикаторного буфера.
     if (i % 2 == 0 ) gl_adBufIndicator1[i] = gl_dMaxPositionMark; // Для фиксации верхней координаты дополнительного окна.
     else gl_adBufIndicator1[i] = gl_dMinPositionMark;             // Для фиксации нижней координаты дополнительного окна.
   }
   // Расчёт и создание горизонтальных линий разметки. Создаём один раз и отслеживаем через заданный уровень при увеличениях максимальных уровней.
  // Установка вертикальной развёртки, расчёт и создание горизонтальных линий разметки.
   if ((gl_dMaxPositionMark - gl_dMinPositionMark) != tmp_dDifferPosMark)
   {
    MakingHorizontalSectoring(AutoStep, Color_LNH, Color_LN0, gl_dMaxPositionMark, gl_dMinPositionMark, Step_LNH, 15 , Style_LNH, Width_LNH, st_nWindow, gl_sFullNameObject);
   }
 }
 
nen :

Kişisel yazışmaları silmediyseniz, bakın, optimizasyon örnekleri verdim. Sonra anladığını yazmışsın.

Yazışmayı sildim, ancak onsuz bile optimizasyonun ne olduğunu çok iyi anlıyorum ...

Açıkçası, minimal bir kod yardımıyla, korktuğunuz şeyi formüle edin, ancak gerçekte yeniden üretmediğinizi…

Konuşmanın tamamen aptalca olduğu ortaya çıkıyor... Göstergelerin hiçbiri, her bir onay işaretinde arabellekleri yeniden başlatmamı gerektirmiyor ...

Bu yüzden tüm bunların neyle ilgili olduğunu anlamaya çalışıyorum...


Zhunko'ya: sonra yazdıklarımı içmeye çalışacağım

 

Burada test göstergesindeki birkaç satırı değiştirdim (hatayı bulmak için gönderdim)...

Hiçbir kene üzerinde hiçbir arabellek yeniden hesaplanmaz!

Hiçbir şey değişmedi

Dosyalar:
 
AlexSTAL :

Burada test göstergesindeki birkaç satırı değiştirdim (hatayı bulmak için gönderdim)...

Hiçbir kene üzerinde hiçbir arabellek yeniden hesaplanmaz!

Hiçbir şey değişmedi

koda baktı. Tik yok. İşte değişmez. Grafiğin güncellenmesi için keneler gereklidir.
 
Zhunko :
koda baktı. Tik yok. İşte değişmez. Grafiğin güncellenmesi için keneler gereklidir.
"Çizelgeleri güncellemekten gelen onay işareti" nedir? Yapay olarak neden oldu ya da ne? API'yi mi kullanıyorsunuz?
 

İşte son onay mesajıyla birlikte:

Hiçbir arabellek güncellenmedi

2147483647 sayısı, yeni çubuktaki arabelleğin değeridir.

Dosyalar:
 
AlexSTAL :
"Çizelgeleri güncellemekten gelen onay işareti" nedir? Yapay olarak neden oldu ya da ne? API'yi mi kullanıyorsunuz?

Evet. Koşullarımız arasındaki tek fark bu.

Göstergede değil, döngülü bir komut dosyasında güncellemek daha iyidir.

 
Zhunko :

Evet. Koşullarımız arasındaki tek fark bu.

6. sayfada anladım...

Şimdi çok ilginç, nen denilen yapay kene nerede?