Gösterge bozuluyor - sayfa 3

 
AnkaSoftware :

JIC, Lütfen sorunun 32 bit platformlarda oluşmadığını unutmayın. Daha önceki gönderilerden birinde bazı kodlar verdim.

Tam olarak aynı verileri almayan iki (veya daha fazla) ayrı makineniz var. Örneğin, 64-bit sistem, örneğin fiziksel düğüm aşırı işlemci kullanımı veya bant genişliğinde çalıştığı için ara sıra trafiği ve/veya bağlantıları kaybeden meşgul bir VPS düğümünde olabilir. (Birçok başka olası açıklama; bu sadece bir tanesi.)

M1 çubuklarında bir boşluk olduğunda mor çizgilerin çiziminin neden durduğunu anlayana kadar, diğer her şeyi tesadüf olarak ele alırdım.

Açılış ifademe dönerek kapatacağım: 64-bit Windows'un tarif ettiğiniz gibi sorunlara neden olması için hiçbir neden yok. Pek çok kişi bu forumda MT4'ün x, y ve z platformlarında düzgün çalışmadığını, yalnızca sonunda sorunun kodlarında olduğunu ortaya çıkardığını bildirdi. Ya kelimenin tam anlamıyla milyonlarca insan tarafından kullanılan olgun bir yazılım parçasında birkaç yıl içinde ilk gerçek MQL4 hatasını keşfettiniz ya da sorun kodunuzla ilgili. Şu ana kadarki kanıtlara göre - örneğin, sorunun 16 saat sonra veya 3-4 saat sonra ortaya çıktığına dair sizden gelen ayrı raporlar - sorunun, uygun şekilde sağlamadığınız verilerdeki ara sıra dalgalanmalardan kaynaklanması çok olasıdır.
 

AnkaSoftware :

a) Göstergelerin bozulması yalnızca Windows 64 bit platformunda olur

d) Kod kullanımı aşağıdaki gibidir

beyannameler

<kod>

#özellik göstergesi_chart_window



  1. Vista/Win7'de \Program Files* içine kurmayın
  2.  void DrawMoveEx( double & serie[], int start, int end, double startlevel, double endlevel) {
    double a = (endlevel - startlevel) / (start - end);
    double y;
    int bar;
    for ( int x = 0 ; x <= start - end; x++) {
    y = a * x;
    bar = start - x;
    serie[bar] = startlevel + y;
    }
    }
    Burada ne yapmaya çalıştığından emin değilim. Birincisi için çok fazla değer hesaplıyorsunuz (start..end) ancak yalnızca BİRİNİ (serie[bar]) saklıyorsunuz, kodlardım:
     void DrawMoveEx( double & serie[], int start, int end, double startlevel, double endlevel) {
       double a = (endlevel - startlevel) / (start - end);
       for ( int x = start; x <= end; x++) serie[x] = a * x + startlevel;
    }

 
Ekte, sorunu yeniden oluşturacak örnek gösterge bulunmaktadır. 64 bit Windows platformunda, bir M1 grafiğine gösterge ekleyin ve 4+ saat çalışmasına izin verin.
Dosyalar:
 
AnkaSoftware :
Ekte, sorunu yeniden oluşturacak örnek gösterge bulunmaktadır. 64 bit Windows platformunda, bir M1 grafiğine gösterge ekleyin ve 4+ saat çalışmasına izin verin.
Üzgünüz, buna temiz bir 64-bit makine tahsis edecek sabrınız yoksa 4 saat veya daha fazla bekleyin.

Ancak, bu gösterge sorunu gerçekten yeniden üretiyorsa, bunun ilginç olduğunu kabul etmeliyim. Herhangi bir iç sorunun nerede saklanabileceğini hemen göremiyorum. (Daha önce olduğu gibi, ortaya çıkan sorun ile MT4 ve komisyoncu arasındaki bağlantıda yakın zamanda meydana gelen bir bağlantı gibi şeyleri kesinlikle göz ardı ettiğinizi varsayarsak. günlük, bar geçmişinin geri doldurulmasına neden olabilecek bağlantı sorunlarından hiç bahsetmez.)

Bir MT4 sorununun yolunu takip etmek istiyorsanız, o zaman büyük olasılıkla gösterge dizilerini referans olarak geçmekle ilgili görünüyor. MQL4'teki diziler, her zaman statik olmak gibi garip özelliklere sahiptir ve özel gösterge-arabellek dizilerini yalnızca Win64'te sorunları tetikleyen başvuruya göre iletmekle ilgili garip bir gizli sorun olabileceğini düşünüyorum. İşletim sisteminin neden böyle bir bağlamda bir fark yaratması gerektiği tam bir gizem olarak kalıyor.

DrawMoveEx()'i artık gösterge dizisine referans almayacak şekilde değiştirmeyi denerdim ve bunun yerine DrawMoveEx_Down1(), DrawMoveEx_Up1() vb. gibi arabellekleri global değişkenler olarak ele alan ayrı işlevler vardır. Bu bir fark yaratıyorsa, tebrikler, neredeyse kesinlikle kendinize bir MT4 hatası buldunuz. Muhtemelen bugün ikincisi .
 
AnkaSoftware :
Ekte, sorunu yeniden oluşturacak örnek gösterge bulunmaktadır. 64 bit Windows platformunda, bir M1 grafiğine gösterge ekleyin ve 4+ saat çalışmasına izin verin.
Windows 7 Ultimate 64 bit'te 5 saatten fazla süredir çalışıyor, sorun yok.
 
RaptorUK :
Windows 7 Ultimate 64 bit'te 5 saatten fazla süredir çalışıyor, sorun yok.

JIC a) Önerdiğiniz gibi kodu değiştirerek referansı kaldırın , sorunu çözmez. Değiştirilmiş kod eklenmiştir.

b) Bahsettiğiniz eksik çubuklar, büyük olasılıkla ticaret koşulu olmaması nedeniyle, dolayısıyla komisyoncu çubuk göndermedi. IMHO, bağlantının kesilmesi durumunda, bağlantı geri yüklendikten sonra eksik çubuklar kullanılabilir. Örnek kodumu görüyorsanız, bitişik olan çubuklara bağımlılık yoktur.

Raptor, Test için teşekkürler. Belki de hatayı görmek için katılmanız gerekir. Sorunu Windows Server 2008 R2 Enterprise'da yeniden oluşturabiliyorum. Yani bir O/S sorunu olabilir. Belirli bir platform için MT4 tarafından önerilen yamalar listesinin nereden alınacağı hakkında herhangi bir fikir.

.

Dosyalar:
 
AnkaSoftware :

Belirli bir platform için MT4 tarafından önerilen yamalar listesinin nereden alınacağı hakkında herhangi bir fikir.

Böyle bir şey yok. MT4'ün tüm Windows sürümlerinde çalışan tek bir sürümü vardır ve birden fazla olması için özel bir neden yoktur. İşletim sistemine özel sürümler veya yama yoktur.
 
AnkaSoftware :
Ekte, sorunu yeniden oluşturacak örnek gösterge bulunmaktadır. 64 bit Windows platformunda, bir M1 grafiğine gösterge ekleyin ve 4+ saat çalışmasına izin verin.
Anladığım kadarıyla hala sorunsuz çalışıyor. . . hatayı nasıl yeniden oluştururum?
 
RaptorUK :
Anladığım kadarıyla hala sorunsuz çalışıyor. . . hatayı nasıl yeniden oluştururum?
Hiçbir şey yapmak zorunda değilsin. Hatanın oluşup oluşmadığını görmek için grafiği yakınlaştırmak dışında.
 
AnkaSoftware :
Hiçbir şey yapmak zorunda değilsin. Hatanın oluşup oluşmadığını görmek için grafiği yakınlaştırmak dışında.

Grafik çubuklarından bağlantısı kesilmiş gibi görünen satırlar arıyorsam (ilk gönderinize göre) o zaman herhangi bir sorun yaşamıyorum.