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

 
Örneğin, geliştiricilerin şüphesiz profesyoneller, mimaride ve hız optimizasyonunda aslar olduğu göz önüne alındığında, böyle bir işlevi en doğru şekilde yazmaları ve standart kütüphaneye dahil etmeleri zor olmayacaktır. onlara.
 
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.

Önerilen sürümdeki gösterge tarafından yeni veri işleme türü için yalnızca bir onay işareti (yeni çubuk) bırakalım, sıfır çubuğunun ve sıfır çubuğundaki kâsenin çoklu yeniden hesaplanmasını kim seviyorsa - mevcut sürümde oturmasına izin verin. OnInit'e yeni bir iOnCalculate işlevi ekleyin - göstergedeki TF işlevlerinden/Symbol OnCalculate'den birinin tutamacı, iCustom gibi, sadece biraz daha yakın çıkıyor, OnCalculate tarafından gösterge tamponları iOnCalculate tanıtıcısına bağlı. OnCalculate type gösterge işlevinde yalnızca yeni bir çubuk işareti gönderin. Terminal için hiçbir şey değişmeyecek, OnCalculate işleminin tüm ana mantığı aynı olacak, göstergenin ana gövdesi örneğin OnMain eklenecek.(Artık her şey ana göstergeye bağlı gösterge(ler) tarafından yapılıyor. ve ondan yeni bir çubukta aradı).

 
transcendreamer :


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.

Teorilere sahip olmayalım.

Sadece çoğaltmak için bir örnek verin ve davanızın etrafında hangi korkunun olduğunu görelim. Şimdiye kadar, her şey performansın tamamen göz ardı edilmesi, öldürücü fren göstergelerinin gizlenmesi ve gölgelenmeye çalışılması gibi görünüyor.

 
Renat Fatkhullin :

Teorilere sahip olmayalım.

Sadece çoğaltmak için bir örnek verin ve davanızın etrafında hangi korkunun olduğunu görelim. Şimdiye kadar, her şey performansın tamamen göz ardı edilmesi, öldürücü fren göstergelerinin gizlenmesi ve gölgelenmeye çalışılması gibi görünüyor.


Ekte bir örnek var, bu henüz bitmiş bir kod değil, bazı yerlerde bitmemiş ama çalıştırabilirsiniz, kolaylık olması için bir şablon da ekliyorum,

azarlamayı tahmin ederek, hemen bir programcı olmadığımı, kodun muhtemelen uygun olmadığını söyleyeceğim, genel olarak insani bir ekonomistim, MT5'te çok acı çekiyorum, MT4'te daha az acı çekiyorum,

Gerçekten yukarıda açıklandığı gibi senkronize bir dizi oluşturacak basit ve güvenilir bir işlev istiyorum https://www.mql5.com/en/forum/289897/page2#comment_9363454

bu açıkça gerekli verileri verirdi ve şikayet etmiyorum ve benim için göstergemi yazmanızı istemiyorum, sadece (bu arada sadece ben değil) uygun bir standart işlev istiyorum.


EDIT: sabit ekler

Баг MQL5 при работе c доступом к таймсериям iClose/iOpen и т.д.
Баг MQL5 при работе c доступом к таймсериям iClose/iOpen и т.д.
  • 2018.11.14
  • www.mql5.com
Общее обсуждение: Баг MQL5 при работе c доступом к таймсериям iClose/iOpen и т.д.
Dosyalar:
 
Renat Fatkhullin :

Önerdiğimi yap, lütfen.

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

Hata raporlarıyla garip bir ilişkiniz var. Sanki bir şeyi kanıtlamam için bana para ödemiyorlar gibi. Durumu elimden geldiğince anlattım.

Sorun sadece bende değil, sorun 30. güncellemenizden sonra ortaya çıktı ama yine de benim aptal olduğumu ve bazı yavaş göstergelerin suçlu olduğunu ima ediyorsunuz.

Ve ondan önce bir yıl boyunca frenlenmemişler miydi?

M30'da piyasaya sürüldükten 25 dakika sonra çöken bir kod örneği:

 //+------------------------------------------------------------------+
//|                                                      Feezzzz.mq5 |
//|                                   Copyright 2018, Dray Stanislav |
//|                               https://www.mql5.com/ru/users/fan9 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, Dray Stanislav"
#property link        "https://www.mql5.com/ru/users/fan9"
#property version    "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
     datetime CM1_T[ 1 ];
     if ( CopyTime ( _Symbol , PERIOD_M1 , 0 , 1 ,CM1_T)==- 1 ){
       Comment ( "\n\n CopyTime return -1" );
       return ;
    }
     Comment ( "\n\n CopyTime : " + TimeToString (CM1_T[ 0 ], TIME_DATE | TIME_SECONDS ));   
  }
//+------------------------------------------------------------------+
//| Trade function                                                   |
//+------------------------------------------------------------------+
void OnTrade ()
  {
//---
   
  }
//+------------------------------------------------------------------+

Ve işte sonuç:

1

 
transcendreamer :


Ekte bir örnek var, bu henüz bitmiş bir kod değil, bazı yerlerde bitmemiş ama çalıştırabilirsiniz, kolaylık olması için bir şablon da ekliyorum,

azarlamayı tahmin ederek, hemen bir programcı olmadığımı, kodun muhtemelen uygun olmadığını söyleyeceğim, genel olarak insani bir ekonomistim, MT5'te çok acı çekiyorum, MT4'te daha az acı çekiyorum,

Gerçekten yukarıda açıklandığı gibi senkronize bir dizi oluşturacak basit ve güvenilir bir işlev istiyorum https://www.mql5.com/en/forum/289897/page2#comment_9363454

gerekli verileri açık bir şekilde üretecek olan,

Şikayet etmiyorum ve göstergemi benim için yazmanızı istemiyorum, sadece (bu arada sadece ben değil) uygun bir standart fonksiyon istiyorum.


EDIT: sabit ekler

Teşekkürler, şimdi kontrol edeceğiz.
 
Stanislav Dray :

Hata raporlarıyla garip bir ilişkiniz var. Sanki bir şeyi kanıtlamam için bana para ödemiyorlar gibi. Durumu elimden geldiğince anlattım.

Bu başlıkta daha önce yazılmış hiçbir şekilde bir hata raporu çekmez.

Her şey, herhangi bir teknik ayrıntı olmadan şikayet şemasına göre gitti. Ve ancak soruşturmamdan sonra ayrıntılar ortaya çıkmaya başladı.

 
Stanislav Dray :

Hata raporlarıyla garip bir ilişkiniz var. Sanki bir şeyi kanıtlamam için bana para ödemiyorlar gibi. Durumu elimden geldiğince anlattım.

Sorun sadece bende değil, sorun 30. güncellemenizden sonra ortaya çıktı ama yine de benim aptal olduğumu ve bazı yavaş göstergelerin suçlu olduğunu ima ediyorsunuz.

Ve ondan önce bir yıl boyunca frenlenmemişler miydi?

M30'da başlatıldıktan 25 dakika sonra donan bir kod örneği:

Ve işte sonuç:


Yüklendi

 2018.11 . 14 17 : 33 : 32.570 Experts expert Feezzzz (USDCHF,M30) loaded successfully

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


 
transcendreamer :


Ekte bir örnek var, bu henüz bitmiş bir kod değil, bazı yerlerde bitmemiş ama çalıştırabilirsiniz, kolaylık olması için bir şablon da ekliyorum,

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


 
Stanislav Dray :

Hata raporlarıyla garip bir ilişkiniz var. Sanki bir şeyi kanıtlamam için bana para ödemiyorlar gibi. Durumu elimden geldiğince anlattım.

Sorun sadece bende değil, sorun 30. güncellemenizden sonra ortaya çıktı ama yine de benim aptal olduğumu ve bazı yavaş göstergelerin suçlu olduğunu ima ediyorsunuz.

Ve ondan önce, bir yıl boyunca frenlenmemişler miydi?

M30'da piyasaya sürüldükten 25 dakika sonra çöken bir kod örneği:

Ve işte sonuç:

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

Bu arada, gövdesi olmayan bir dosya.

Neden: