TimeCurrent() ve iTime() hata/sorunu - sayfa 2

 
RaptorUK :
Bence sorun, ilk kez start() öğesinin bir Gösterge için çağrılmasının yeni bir onay işaretinin sonucu olmayabileceğidir. . . bu durumda TimeCurrent() yanlış zamanı bildirir. Bunu doğrulamadım. . .

Bu durumda, ilk onay işaretini görmezden gelirdim. . . ve tik 2'den itibaren normal olarak devam edin.

Evet, demek istediğim bu.
 
Bu bir gösterge, TimeCurrent'ın ne olduğunu neden umursuyorsun. For göstergesi sayılan döngünüzü yapın ve çubuklara çizin. TimeCurrent'a bakma, Bid'e bakma.
 
GMT ile eşleşen bir çizelgede belirli zamanlar çiziyorum, bu nedenle MT4 sunucu zamanı ile GMT arasındaki farkı bulmaya çalışırken çok önemli.
 

Paul_B :
I'm plotting certain times on a chart which match to GMT, so it matters a great deal when trying to get the offset between MT4 server time and GMT.

<g> Henüz bu forumun kültürüne hakim olduğunuzu düşünmüyorum. Moderatörlerden ve forumun diğer uzun süreli kullanıcılarından gelen yanıtların sırası her zaman "Yanlış bir şey yapıyorsun" ve ardından "Bunu neden yapmak isteyesin?" şeklindedir. yanlış bir şey yapmadığınız ortaya çıktığında.

Yerinde olsaydım, IsConnected() yanlışsa start() çağrılarından çıkardım. Veya statik bir değişkende bir tik sayısını tutabilir ve 1 numaralı tik'i yok sayabilirsiniz, ancak bu, normal koşullar altında başlatmayı gereksiz yere geciktirir.

 
Cyclops993 girişi için teşekkürler, şu anda çalışmasını sağladım, ancak elimdeki ideal bir çözüm veya özellikle sağlam görünmüyor. IsConnected()'i biraz daha keşfedeceğim.
 
Paul_B : Bir çizelgede GMT ile eşleşen belirli zamanlar çiziyorum, bu nedenle MT4 sunucu zamanı ile GMT arasındaki farkı bulmaya çalışırken çok önemli.
Şimdi nedenini anlıyoruz. (Neden OP'de kendinizi açıklamadınız?) Aynen kodum gibi
      nextAutoUpdate = timeSrv + HR2400;
       if (Srvr_To_UTC_Auto) if (
         IsDllsAllowed()){                             // Complained @ init
         int       srvrToUTC         = LocalTimeToUTC() - TimeCurrent () ;
         double    nearestHalfHour   = MathRound (srvrToUTC / 1800 .);
         Srvr_To_UTC_Hours          = nearestHalfHour / 2 .; // Update external
      }

Bir gösterge için RaptorUK'un önerisini ikinci olarak yapacağım. İlk onay işaretini yoksayın ve ikincideki tüm çubukları güncelleyin.

Ayrıca tamamen beklenmedik değil. Göstergeler uyuyamadığından, bir EA kendi init'ine iCustom aracılığıyla bir gösterge yüklerse, gösterge başlatılıp başlatılıncaya kadar çağrı bir arabellek değeri döndüremez.

 
Paul_B :
Cyclops993 girişi için teşekkürler, şu anda çalışmasını sağladım, ancak elimdeki ideal bir çözüm veya özellikle sağlam görünmüyor. IsConnected()'i biraz daha keşfedeceğim.

Fazla seçeneğin olduğunu sanmıyorum. MT4, göstergelerin çevrimdışı çizelgelerde doldurulmasını sağlamak için ve daha genel olarak göstergelerin MT4 yüklenir yüklenmez, bağlantı kurulmasını beklemeden çizelgelerde (yeniden) görünmesini istediğinden, start() işlevine sahte bir çağrı oluşturur.

Düzgün kurulmuş bir bağlantı ve geçerli bir TimeCurrent() olduğundan emin olmak istiyorsanız, o zaman AccountNumber() != 0 ve AccountBalance() > 0'a da bakabilirsiniz. Veya ikinci onay işaretini de bekleyebilirsiniz. ince likiditeye sahip sembollerde çok saniyelik gecikmelerin maliyeti.

 

Teşekkürler beyler, göstergeyi ikinci tik gelene kadar bekleyecek şekilde programlayacağım.

Bu arada, IsConnected() olasılığını araştırdım, ancak IsConnected() doğru olarak bildirildiğinde bile hala "yanlış" TimeCurrent() alıyordum.

 
cyclops993 :

<g> Henüz bu forumun kültürüne hakim olduğunuzu düşünmüyorum. Moderatörlerden ve forumun diğer uzun süreli kullanıcılarından gelen yanıtların sırası her zaman "Yanlış bir şey yapıyorsun" ve ardından "Bunu neden yapmak isteyesin?" şeklindedir. yanlış bir şey yapmadığınız ortaya çıktığında.

Yerinde olsaydım, IsConnected() yanlışsa start() çağrılarından çıkardım. Veya statik bir değişkende bir tik sayısını tutabilir ve 1 numaralı tik'i yok sayabilirsiniz, ancak bu, normal koşullar altında başlatmayı gereksiz yere geciktirir.

Bir kullanıcı sorunu göstermek için test kodu sağlamazsa, belirli bir yardım sağlamak biraz zordur ve genellikle yapılabilecek en iyi varsayım, koddaki bir hatadır. . . belki de görevi devralmalı ve tüm soruları ve yardım isteklerini yanıtlamalısınız . Bu, tüm sorunlarınızı çözerdi, o zaman sadece yardım etmeye çalışanlara kafa yormanıza gerek kalmazdı. . .
 
RaptorUK :
Bir kullanıcı sorunu göstermek için test kodu sağlamazsa [...]

OP'de yanlış veya eksik bir şey yoktu. Paul_B'nin MT4 belgelerine göre gayet makul bir şekilde start() öğesinin yalnızca yeni tiklere yanıt olarak çağrıldığını varsaydığı açıktı. ( Neden TimeCurrent()'i kontrol etmek istedi, bir fark yaratmıyor ve aslında bizi ilgilendirmez.)

El kitabının bu alanda açıkça eksik olmasına rağmen yanıtınız temelde RTFM'nin güzel bir versiyonuydu [bunun alışılmadık olduğunu vurgulayacağım; MT4 belgelerinin kalitesi oldukça iyi]. Angevoyageur'un yanıtı, bunu, ne kadar hafif olursa olsun, MT4'ün herhangi bir eleştirisine patolojik olarak duyarlı yanıtların bir modelinin parçası gibi görünen bir yaygara olarak tanımlamaktı. WHRoeder daha sonra "bunu yapmak istemezsin" ile girdi, ardından Paul_B bir GMT ofsetinin nasıl hesaplanacağını açıkça bildiği için açıkça alakasız olan bazı kodları kopyalayıp yapıştırdı.