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

 
Renat Fatkhullin :

Doğrudan koddan ve işten:

  1. Göstergelerdeki CopyXXX işlevleri, verilerin tam bir senkronize indirilmesini beklemez, ancak mevcut olanı döndürür. Aksi takdirde, göstergeler her şeyi tamamen yavaşlatırdı.

  2. Görünüşe göre, tüm veriler ilk seferde senkronize edilmemişse, sonraki çalışmalarda bir sorun var.
    "Başarılı bir özgeçmiş için dikkatlice bekleyeceğim." Örneğin, OnCalculate çağrılmaz.

  3. Maksimum yük ile küresel başlatmanın, göstergenin çok uzun süre saydığı ve beklediği OnInit'e taşınması kötü.
    Aynı zamanda, bu sembolün çizelgelerinin güncellenmesi engellenir ve diğer birçok katılımcının yeni veri almaması için beklemesi gerekir. Gösterge uzun süre kaynak almamalıdır. OnCalculate'de uzun bir başlatmayı adım adım / karakter karakter başlatmaya eşit olarak uzatmak, parçalar halinde saymak daha iyidir.

  4. Bu gösterge, senkronizasyon için ağ üzerinden yaklaşık 800 MB geçmiş veri indirdi

  5. Gösterge, belleğin en açık şekilde tahsis edildiği 512 çizim çizgisi olduğunu iddia ediyor. Bu son derece maliyetlidir. Toplamda 100 hat kullanılmaktadır.

  6. Kodu okumak zor

1. evet ve bu nedenle onları birkaç kez ara vererek aramanız veya göstergeyi birkaç kez manuel olarak yeniden başlatmanız gerekir, ancak bu her zaman yardımcı olmaz ve gösterge bir süre sonra hesaplamayı durdurur

2. Mevcut sürümün optimal olmadığını tamamen kabul ediyorum, belgelerde önerilen işlev de dahil olmak üzere çeşitli seçenekleri denedim ("veri erişim organizasyonu" bölümü), son sürümde biraz basitleştirdim ve muhtemelen optimal değil iBarShift işlevlerini birçok kez çağırmak için, ancak diğer yandan, onları reddederseniz, senkronize verileri hazırlamak için özel bir işlev yapmanız gerekir, ki henüz yazamadım, ortaya çıkıyor. çok hantaldır ve standart bir işlev yoktur ve dil zaten dizine göre zaman ve zamana göre çubuk dizin istemek için düzenli bir yetenek sağlıyor olsa bile, bu fırsatı kullanmak mantıklı olacaktır.

3. OnInit'te sadece portföy kombinasyonlarının tanımı ve tamponların atanması, OnInit'te istek yok, isteğe bağlı olarak önbelleğin kaybolmasını önlemek için arka planda tüm M1 enstrümanlarının grafiklerini açmaya çalıştım ve yardımcı olacak gibi görünüyor , maksimum yükte elbette hepsi korkunç, 28 çizelge ... ilk veri isteği zaten OnCalculate'e gidiyor, burada CopyClose'u bir duraklamayla (RequestData işlevi) önceden bir döngüde çağırıyorum, böylece veriler önbelleğe alınır ve dizi için tüm araçlar toplanır ve ardından bir çağrı gelir (SetupIntervals, CalculateEquity ve diğerleri) ve tüm veriler hazır olacak ve iBarShift ve iClose'a yapılan tüm çağrılar ve diğer yararlı işlevler önbelleğe alınmış verileri döndürecek şekilde hesapladım, ancak nedense bu her zaman işe yaramaz

4. bu muhtemelen 800 mb tick verisidir?... ama 28 enstrümandan oluşan bir grup portföyün başka nasıl oluşturulacağı hakkında hiçbir fikrim yok? zaman dilimleri ayrı olarak var)

5. Gerçek şu ki, gösterge birçok portföy kombinasyonunun kullanılabileceğini varsayıyor, şimdi 420 hat + servis hattı (her türlü kart, kanal vb.) ile önceden yapılandırılmış bir kombinasyon var, teorik olarak kullanıcı tüm talep edebilir 512 satır, #property Indicators_buffers kullanarak arabellek sayısını sınırlamak mümkün değildir, çünkü kullanıcının ne kadar talep edeceği bilinmiyor, MT4'te maksimum yükte yavaşlıyor ama çalışıyor

6. Gerekirse yorum yapacağım


Not: Belki yanlış sürümü indirmişsindir diye düşündüm, çünkü ilk defa bir hata yapıp farklı bir sürüm yükledim, sonra eki düzelttim.

PPS Sentetik çizelgelerin işlevselliğini açıklığa kavuşturmak için bu fırsatı değerlendirmek istiyorum, bu işlevsellik bir şekilde geliştirilecek mi? örneğin, sadece formüle dayalı endeksler yapmak değil, aynı zamanda bir grup enstrümanın alım/satım pozisyonlarını simüle etmek istiyorum, şimdi bunu yapmak zor çünkü bir puanın değerini hesaba katmak için hantal bir formül yazmanız gerekiyor. ve sözleşmenin boyutu ve bir puanın değeri tarihte değişmez...

 

Renat Fatkhullin :

Gösterge uzun süre kaynak almamalıdır. OnCalculate'de uzun bir başlatmayı adım adım / karakter karakter başlatmaya eşit olarak uzatmak, parçalar halinde saymak daha iyidir.

Terminaldeki diğer programları yavaşlatmamak için bu anlaşılabilir bir durumdur, ancak burada bir çelişki ortaya çıkar: portföy modelini hesaplarken, portföyün öz sermayesi üzerlerinde hesaplandığından, göstergenin tüm veri serilerine aynı anda ihtiyacı olacaktır. hazır veriler olmadan hiçbir şey hesaplanamaz gibidir ve bir portföy için tüm bileşenlere aynı anda ihtiyaç duyulur ve birkaç portföy varsa ve portföyler arasında bir karşılaştırma veya toplama varsa, o zaman birkaç portföy için bir kez ve daha sonra özellikle gerilmez, çünkü bu parçalar halinde hesaplanabilen bir kayar pencere değildir, burada model önce hesaplanır ve ardından geçmişe çizilir (ve ardından son çubuğu her onay işaretiyle günceller) - ve sonra soru ortaya çıkıyor - genel olarak MT5'te bu tür göstergeler nasıl yazılır? - bu yüzden, hesaplama için bir dizi senkronize veriyi düzgün bir şekilde hazırlayacak evrensel bir standart işlev hakkındaki soruyu gündeme getirdim.

 
Vladimir Karputov :

Yüklendi

Şimdi 18.10 Her şey çalışıyor.


Sizi tebrik ediyorum, şanslısınız ve işlemcinin, belleğin, işletim sisteminin veya başka bir şeyin yanlış konfigürasyonuna sahipsiniz, kim bilir .. Ancak bu, hatayı gerçek dışı yapmaz.

Oldukça gerçek ve kendini sadece bende değil.

 
transcendreamer :

Terminaldeki diğer programları yavaşlatmamak için bu anlaşılabilir bir durumdur, ancak burada bir çelişki ortaya çıkar: portföy modelini hesaplarken, portföyün öz sermayesi üzerlerinde hesaplandığından, göstergenin tüm veri serilerine aynı anda ihtiyacı olacaktır. hazır veriler olmadan hiçbir şey hesaplanamaz gibidir ve bir portföy için tüm bileşenlere aynı anda ihtiyaç duyulur ve birkaç portföy varsa ve portföyler arasında bir karşılaştırma veya toplama varsa, o zaman birkaç portföy için kez , ve sonra özellikle gerilmez, çünkü bu parçalar halinde hesaplanabilen bir kayar pencere değildir, burada model önce hesaplanır ve ardından geçmişe çizilir (ve ardından son çubuğu her onay işaretiyle günceller) - ve sonra soru ortaya çıkıyor - genel olarak MT5'te bu tür göstergeler nasıl yazılır? - bu yüzden, hesaplama için bir dizi senkronize veriyi düzgün bir şekilde hazırlayacak evrensel bir standart işlev hakkındaki soruyu gündeme getirdim.

Bu anahtar eksikliktir. bende de aynı sorun var

MT4'te hesaplama ve görüntüleme anında çalışır, ancak MT5'te, fiyatları almanız gereken tüm tablolar sürekli açık olmasına rağmen göstergeler tam bir felakettir. Tek arabellekli MA'lar gibi yalnızca en basit göstergeleri yazabileceğiniz ortaya çıktı(

 

Kesinlikle bir hata var:

1) Hyper-V x64, IE 10, RDP, UAC, Intel Xeon E5-2687W v2 @ 3.40GHz üzerinde Sunucu 2012 (derleme 9200), Bellek: 3033 / 3839 Mb, Disk: 96 / 107 Gb, GMT-5

2) Windows Server 2012 R2 (derleme 9600) x64, IE 11, RDP, UAC, QEMU Sanal sürüm (cpu64-rhel6), Bellek: 1340 / 2047 Mb, Disk: 15 / 28 Gb, GMT+2


 
Stanislav Dray :

Kesinlikle bir hata var:

1) Hyper-V x64, IE 10, RDP, UAC, Intel Xeon E5-2687W v2 @ 3.40GHz üzerinde Sunucu 2012 (derleme 9200), Bellek: 3033 / 3839 Mb, Disk: 96 / 107 Gb, GMT-5

2) Windows Server 2012 R2 (derleme 9600) x64, IE 11, RDP, UAC, QEMU Sanal sürüm (cpu64-rhel6), Bellek: 1340 / 2047 Mb, Disk: 15 / 28 Gb, GMT+2

Peki bende bu var:

Windows 7 Service Pack 1 (7601 derlemesi) x64, IE 11, Intel Core i5-2400 @ 3.10GHz, Bellek: 469 / 8182 Mb, Disk: 96 / 148 Gb, GMT+2

 
transcendreamer :

Terminaldeki diğer programları yavaşlatmamak için bu anlaşılabilir bir durumdur, ancak burada bir çelişki ortaya çıkar: portföy modelini hesaplarken, portföyün öz sermayesi üzerlerinde hesaplandığından, göstergenin tüm veri serilerine aynı anda ihtiyacı olacaktır. hazır veriler olmadan hiçbir şey hesaplanamaz gibidir ve bir portföy için tüm bileşenlere aynı anda ihtiyaç duyulur ve birkaç portföy varsa ve portföyler arasında bir karşılaştırma veya toplama varsa, o zaman birkaç portföy için bir kez ve daha sonra özellikle gerilmez, çünkü bu parçalar halinde hesaplanabilen bir kayar pencere değildir, burada model önce hesaplanır ve ardından geçmişe çizilir (ve ardından son çubuğu her onay işaretiyle günceller) - ve sonra soru ortaya çıkıyor - genel olarak MT5'te bu tür göstergeler nasıl yazılır? - bu yüzden, hesaplama için bir dizi senkronize veriyi düzgün bir şekilde hazırlayacak evrensel bir standart işlev hakkındaki soruyu gündeme getirdim.

Her şeyi hemen elde edemeyeceğinizi net bir şekilde anlayan bir gösterge yazmanız gerekir.

OnInit'te, CopyXXX'e yapılan tek çağrılarla gerekli enstrümanların geçmişinin yüklenmesini teşvik etmelisiniz, ancak OnCalculate'de tam başlatmayı beklemeniz gerekir.

Size büyük olasılıkla bir hata ile bir başlatma aşaması - yanlış verileri bekliyorsunuz ve engelleniyor.

 
Renat Fatkhullin :

Kodu işe koy. Şimdilik sorun değil.

Bu arada, gövdesi olmayan bir dosya.

2 saat boyunca her şey yolunda, zamanlayıcı yorumlarda istenen tarihi işaretliyor.
 
Vitaly Muzichenko :

Bu anahtar eksikliktir. bende de aynı sorun var

MT4'te hesaplama ve görüntüleme anında çalışır, ancak MT5'te, fiyatları almanız gereken tüm tablolar sürekli açık olmasına rağmen göstergeler tam bir felakettir. Tek arabellekli MA'lar gibi yalnızca en basit göstergeleri yazabileceğiniz ortaya çıktı(

Şahsen, uygun ve evrensel bir yol görmüyorum, terminalin hızı ve içindeki programlar uğruna her şeyin böyle düzenlendiğini anlıyorum, geliştiricilere dönüyorum: lütfen programlı olarak mümkün kılın terminalden, belirtilen TF'lerin belirtilen sembollerini ve karşılık gelen sembollerin işaret geçmişini bağımsız olarak tutmasını isteyin.

 
Vitaly Muzichenko :

Bu anahtar eksikliktir. bende de aynı sorun var

MT4'te hesaplama ve görüntüleme anında çalışır, ancak MT5'te, fiyatları almanız gereken tüm tablolar sürekli açık olmasına rağmen göstergeler tam bir felakettir. Tek arabellekli MA'lar gibi yalnızca en basit göstergeleri yazabileceğiniz ortaya çıktı(

Koda bakmamız gerekiyor.

İşte yukarıdaki kodda açıkça bir dizi mantıksal ve kaynak sorunu var.

Neden: