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

 
Stanislav Dray :

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ı?

Önerdiğimi yap, lütfen.

Aksi takdirde, %100 çoğaltma için eksiksiz malzemelere ihtiyaç vardır.
 

Neden geliştiriciler, insanların kıvranmamaları ve boş yere zaman kaybetmemeleri için senkronize edilmiş bir veri dizisinin (birkaç araç için) alınmasını garanti eden bir fonksiyon yazmıyor?

Sonuçta, MT5 havalı ve kullanışlı bir araç olarak konumlandırıldı, değil mi?

sabırsızlıkla bekliyoruz...

 
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. Herzaman olmuştur.

Slava her iki dakikada bir konuşuyordu. Bakmak için çok tembel ama tam olarak hatırlıyorum.

 
transcendreamer :

Neden geliştiriciler, insanların kıvranmamaları ve boş yere zaman kaybetmemeleri için senkronize edilmiş bir veri dizisinin (birkaç araç için) alınmasını garanti eden bir fonksiyon yazmıyor?

Sonuçta, MT5 havalı ve kullanışlı bir araç olarak konumlandırıldı, değil mi?

sabırsızlıkla bekliyoruz...

Evet. Gerekli sayıda sembol ve zaman çerçevesi için OnCalcuate yapıcısı. Veya, OnCalculate'e ek olarak, yeni bir nesne tanıtın, örneğin maksimum 255 OnCalculate için "MainCalculate", OnCalculate nesnelerinin yaşadığı - buna ihtiyacı olmayan, mtf ve farklı karakterlere ihtiyaç duyan eski OnCalculate'i kullanır. "MainCalculate" kullanır. Bir çubuğun ilk ve son işareti, tüm semboller ve eşleşen zaman dilimleri için aynıdır. Sonuçta, OnCalculate zaten geliştirilmiş ve yerleşmiştir, aracıların zaman çerçevelerine ve sembollere diğer işlevleri olmadan OnCalculate toplaması aracılığıyla üçüncü taraf sembollerine ve zaman çerçevelerine tüm erişimi çıkarmak mantıklıdır.

 

Göstergeleriniz kenelerin alımını/süperpozisyonunu utanmadan yavaşlattığında, tik başına yüzlerce milisaniye ve hatta saniye harcayarak verilerin nerede mevcut olacağını (özellikle garantili) düşünün. Sonuç olarak, keneleri zamanında işlemek için hiçbir CPU yeterli değildir, bu da birikme açığına ve grafik geçmişinde buna karşılık gelen bir yavaşlamaya neden olur.

"Garantili vermek" istediğinizde, büyük olasılıkla "Hiçbir şey bilmek istemiyorum, istediğim gibi yazmaya devam etmek istiyorum, performans ve kilitler hakkında düşünmek istemiyorum, sadece ver" talebi mi?


Milyonlarca çubuk size uygun olduğunda, kendinizin ve başkalarının göstergelerinin performansını düşünün. Kötü yazılmış ve pahalı bir gösterge, sembolünün çizelgelerinin güncellenmesini kolayca yavaşlatabilir.

Başlamak için OnCalculate'in ne kadar süreyle çalıştığını mikrosaniye cinsinden ölçmeye başlayın. Ardından, göstergenin saniye başına tık olarak maksimum verimini elde etmek için 1 saniyeyi ortalama onay süresine bölün.

Bu hemen ayıklanıyor.

 
Artyom Trishkin :

Slava her iki dakikada bir konuşuyordu. Bakmak için çok tembel ama tam olarak hatırlıyorum.

Hatırlıyorum ama her zaman 1 dakikalık aralık kullanırım. Yani daha güvenilir.

 
Farkhat Guzairov :

Affedersiniz ama bu durumda, M15 zaman dilimindeki geçmişin derinliği 120 bardı ve bu zaten MQL5 için kritik mi?

Tekrarlanabilir bir içerik sağlamadınız.

Sembollerinde fren göstergeleri varsa neden diğer kişilerin verilerine erişim fonksiyonları yavaşlayacak , açıkladım. Grafiklerdeki diğer göstergelerin varlığını tamamen göz ardı ederek özel arama durumunuz hakkında konuşuyorsunuz. Yani, özellikle bu konuda açıkça yazdığım için onlarla başlamak gerekliydi.

Teknik detayların ve uzmanlarla birlikte gösterge listelerinin tamamen yokluğunda demagoji ve karşılaştırmalı açıklamalar yapmayın.

Bana oynamam için kodu ver, lütfen.

 
Farkhat Guzairov :

***

Peki bir şey nasıl çoğaltılır? Lütfen oynamam için bana veri verin.

 
Farkhat Guzairov :

Tabii ki tüm kodu buraya koyamam ve sorunun olduğu kısmı zaten belirtmiştim, tekrar yapacağım:

Ya tüm kod, ya da daha iyisi, hiçbir şey söyleme. Tam kod olmadan, havanın basit bir sallanması.

 
Renat Fatkhullin :

Göstergeleriniz kenelerin alımını/süperpozisyonunu utanmadan yavaşlattığında, tik başına yüzlerce milisaniye ve hatta saniye harcayarak verilerin nerede mevcut olacağını (özellikle garantili) düşünün. Sonuç olarak, keneleri zamanında işlemek için hiçbir CPU yeterli değildir, bu da birikme açığına ve grafik geçmişinde buna karşılık gelen bir yavaşlamaya neden olur.

"Garantili vermek" istediğinizde, büyük olasılıkla "Hiçbir şey bilmek istemiyorum, istediğim gibi yazmaya devam etmek istiyorum, performans ve kilitler hakkında düşünmek istemiyorum, sadece ver" talebi mi?


Milyonlarca çubuk size uygun olduğunda, kendinizin ve başkalarının göstergelerinin performansını düşünün. Kötü yazılmış ve pahalı bir gösterge, sembolünün çizelgelerinin güncellenmesini kolayca yavaşlatabilir.

Başlamak için OnCalculate'in ne kadar süreyle çalıştığını mikrosaniye cinsinden ölçmeye başlayın. Ardından, göstergenin saniye başına tık olarak maksimum verimini elde etmek için 1 saniyeyi ortalama onay süresine bölün.

Bu hemen ayıklanıyor.


Süper hız her zaman gerekli değildir, işin rahatlığı da çok önemlidir, şimdi çoklu para birimi göstergeleri yazmak bir "manuel gün batımı", MT4'te bile daha kolaydı çünkü orada her zaman yavaş da olsa i-işlevlerinden geçebilirsiniz, ancak almak için, ancak MT5 verilerinde, yani orada değil ve yine de kendiniz özel bir kod oluşturmanız gerekiyor.


Ayrıca, tüm kullanıcıların yüksek sınıf programcılar olmadığını, bazılarının süpersonik olmasa bile sadece kullanışlı ve güvenilir bir araç setine ihtiyaç duyduğunu ve portföy sistemleri için genellikle böyle bir hıza gerek olmadığını ve milyonlarca çubuk gerekmediğini de unutmamalısınız. Bu durumda maksimum verim kritik değildir, tam olarak garantili ve basit bir şekilde çalışması önemlidir, aslında bu, ürünü daha popüler ve daha erişilebilir hale getiren bir faktördür.


MT5'te i-fonksiyonların görünümü durumu bir şekilde iyileştirdi, ancak sorunu çözmedi, birkaç enstrüman için senkronize bir diziyi kolayca ve basitçe almanın ve elde etmenin bir yolu yok, belki herkesin buna ihtiyacı yok, belki bu bile öncelik değil, bunu anlayabiliyorum ama yine de böyle bir görev var.


İşlev: GetSyncData

Girdi: enstrüman listesi, zaman çerçevesi, çubuk aralığı ve/veya tarih aralığı

Çıktı: MqlRates öğelerine sahip bir dizi, böylece tüm enstrümanların endeksleri aynı zamana karşılık gelir