iClose/iOpen zaman serilerine vb. erişimle çalışırken MQL5 hatası.

 
Hey!
 

#property tester_everytick_calculate sorunları çözebilir mi?

24. MQL5: #property tester_everytick_calculate özel göstergeleri için yeni bir özellik eklendi. Strateji test cihazında kullanılır ve her tik üzerinde göstergelerin hesaplanmasını zorlamanıza olanak tanır.

25.Test: Artık görsel olmayan test/optimizasyon sırasında kullanılan tüm göstergeler (standart ve özel) yalnızca veri talebi üzerine hesaplanmaktadır. Bunun istisnası, işlev çağrılarını içeren göstergelerdir.   Etkinlik GrafiğiÖzel   ve işleyiciyi kullanma   OnTimer . Daha önce, strateji test cihazında herhangi bir işaret geldiğinde (başka birinin sembolünden bile), tüm göstergeler koşulsuz olarak hesaplanıyordu. Yenilik, test ve optimizasyonu önemli ölçüde hızlandırmayı mümkün kıldı.

Her bir işarette göstergelerin hesaplanmasını zorlamak için programa #property tester_everytick_calculate özelliğini ekleyin.

Derleyicinin önceki sürümleri tarafından derlenen göstergeler daha önce olduğu gibi hesaplanacaktır - her işarette.
 

Ayrıca, başka birinin zaman çerçevesiyle çalışıyorsanız, dakikada bir bu zaman çerçevesinden (herhangi bir CopyXXXX işlevi) OHLC almanız gerektiği de her zaman tavsiye edilmiştir.

Buradan çıkıyor - başka birinin zaman çerçevesiyle çalışırken, iXXXX atavismlerini kullanmanıza gerek yok, ancak CopyXXXX işlevini kullanmanız gerekiyor.

 
Vladimir Karputov :

Ayrıca, başka birinin zaman çerçevesiyle çalışıyorsanız, dakikada bir bu zaman çerçevesinden (herhangi bir CopyXXXX işlevi) OHLC almanız gerektiği de her zaman tavsiye edilmiştir.

Buradan çıkıyor - başka birinin zaman çerçevesiyle çalışırken, iXXXX atavismlerini kullanmanıza gerek yok, ancak CopyXXXX işlevini kullanmanız gerekiyor.

Ciddi değil!

Neden o zaman: iHigh ( Symbol (), TF , i);

PS MT4'te kurulduğu ilk günlerden beri her şey sorunsuz çalışıyor, neden MT5'te de olmasın, tef ile danslar olmasın? MT4'te çalışıyorsa, MT5'te de iş kurmak mümkündür.
 
Vitaly Muzichenko :

Ciddi değil!

Neden o zaman: iHigh ( Symbol (), TF , i);

PS MT4'te kurulduğu ilk günlerden beri her şey sorunsuz çalışıyor, neden MT5'te de olmasın, tef ile danslar olmasın? MT4'te çalışıyorsa, MT5'te de iş kurmak mümkündür.

Ayrıca, başka birinin zaman çerçevesiyle çalışıyorsanız, dakikada bir bu zaman çerçevesinden (herhangi bir CopyXXXX işlevi) OHLC almanız gerektiği de her zaman tavsiye edilmiştir. Herzaman olmuştur.

 
double high_k = NormalizeDouble ( iHigh ( Symbol (),TimeFrames, k),DigitsM);
double low_k = NormalizeDouble ( iLow ( Symbol (),TimeFrames, k),DigitsM);
double open_k = NormalizeDouble ( iOpen ( Symbol (),TimeFrames, k),DigitsM);
double close_k = NormalizeDouble ( iClose ( Symbol (),TimeFrames, k),DigitsM);

RefreshRates'i kullanmadan önce teklifleri güncellemeyi deneyin.

 
Dmitry Fedorchenko :

RefreshRates'i kullanmadan önce teklifleri güncellemeyi deneyin.

"RefreshRates" var olmayan bir işlevdir.

 
Vladimir Karputov :

"RefreshRates" var olmayan bir işlevdir.

i üzereyim
https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/csymbolinfo/csymbolinforefreshrates

Sadece danışmanda benzer bir sorun vardı, bana yardımcı oldu.

 
Farkhat Guzairov :
Bu göstergenin MQL4 versiyonu 2 yıldan fazla süredir çalışıyor ve bu tür sorunlar/hatalar hiçbir zaman bulunamadı.

CopyXXX'in hiçbiri size yardımcı olmaz. Bu, 30. yapıdan başlayan ve 44'e kadar olan bir MT5 hatasıdır ve düzeltilmemiştir. Son 5-6 sayfayı https://www.mql5.com/ru/forum/285631/page29 okuyun ve yalnız olmadığınızı göreceksiniz.

Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5
Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5
  • 2018.11.13
  • www.mql5.com
26 октября 2018 года будет выпущена обновленная версия платформы MetaTrader 5...
 
Farkhat Guzairov :

Güzel gün!

Şu anda önceden yazılmış göstergeleri MQL4'ten MQL5'e aktarıyorum. Teflerle büyük danslar değil ve her şey yolunda görünüyor, ama ....

Bir noktada, gösterge verilerinin güncellenmesi durur, uzun süre hatanın tam olarak nerede olduğunu anlayamadım, tamamen tesadüfen iClose / iOpen değerlerinin vb. bir noktada güncellemeyi durdururlar, yani. aynı değeri döndürür.

İşin komik yanı, kaynak kodunu yeniden derleseniz bile, göstergenin aşağıdaki işlevleri yerine getirdiğini görürken gösterge yine de yanlış veri verecektir:

Yalnızca gösterge özelliklerini açar ve "Tamam" ile kapatırsanız, veriler güncellenir ve doğru şekilde yansıtılır, ancak herhangi bir zamanda ortaya çıkabilecek bir noktaya kadar (ancak %100 gerçekleşir). Bu durumda, gösterge 2018.11.14 00:00'da verileri güncellemeyi durdurdu, genel olarak bu, bir süre sonra düzenli olarak gerçekleşir.

Daha önce ortaya çıkan başka bir hata, iBars(Symbol(),TimeFrames)/Bars(Symbol(),TimeFrames) işlevi boş bir değer döndürür. Neyse ki bu bug kalıcı bir hata karakterine sahip değil ama aynı zamanda oluyor ve sizin kontrol etmeniz gerekiyor.

MQ'nun MQL4 desteğini bıraktığı ortaya çıktı ki bu harika, ancak MQL5'te gözlemlenen bu tür hatalarla her şey çok üzücü olacak.

Peki, yukarıda açıklanan problem nasıl çözülür?

1) Bir OnTick/OnCalculate hesaplamasının yürütme süresini mikrosaniye cinsinden ölçün ve bunları günlüğe kaydedin.

Bu şekilde bir kene hesaplamak için ne kadar zaman harcadığınızı görebilirsiniz. Ardından, bu hızda saniyede kaç tik hesaplayabileceğinizi değerlendirin. Elbette, bir düzineden fazla kene olmadığı ortaya çıkacaktır ve açıkçası saniyede onlardan daha fazlası vardır.


2) Verileri çıkardığınız çizelgelere/zaman çerçevelerine eklenen göstergeler üzerinde her OnCalculate'in hesaplama süresini ölçün.

Muhtemelen benzer bir durum vardır. Yavaş hesaplamalar nedeniyle, terminal hesaplanan sembol:zaman çerçevesinin kilidi açılana kadar bekler. Diğer insanların çizelgelerinin geri dönüşünün donmasına yol açan, özellikle derin bir geçmişe ilişkin fren göstergeleridir.


Göstergeler geliştirilirken performans konuları ve ekonomik yeniden hesaplamalar ilk sıraya konulmalıdır. Aksi takdirde, etraftaki her şeyi öldürürsünüz.

 
Renat Fatkhullin :

Diğer insanların çizelgelerinin geri dönüşünün donmasına yol açan, özellikle derin bir geçmişe ilişkin fren göstergeleridir.

O zaman söyle bana, donmam neden oluyor? OnTick'teki verilerim, gösterge yoklama işlevine kadar donuyor, yani M1 tarafından CopyTime güncellemesi, OnTick'teki işlemin geri kalanını başlatan bir tetikleyici görevi görüyor ve CopyTime'dan önce hiçbir işlev veya gösterge yoklaması yok.

Ve neden 30. yapıdan önce böyle bir sorun yoktu ve Ekim 2017'den beri her şey mükemmel çalıştı?