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

 
Slava :

belirlemeye çalışabilirsiniz.

Bunlar dakikalarsa, son çubuğun zamanını TimeCurrent() ile karşılaştırabilirsiniz. M1 değilse, iTime(_Symbol, PERIOD_M1 ,0) sorabilir ve TimeCurrent() ile karşılaştırabilirsiniz.

Teklifi veya Son fiyatı (enstrümana bağlı olarak) son çubuğun Kapanış fiyatı ile karşılaştırabilirsiniz. Mevcut sembolün SymbolInfoTick'ine hemen sorabilirsiniz. Orada, teklife ve sonuncuya ek olarak, bir onay süresi de var.

teşekkür ederim, en azından bir şeyler ters giderse hataları nerede ve nasıl arayacağınız konusunda bazı bilgiler çıktı

ancak durumu kontrol etmek için hala yerleşik bir işleve ihtiyacımız olduğunu düşünüyorum, hatta daha iyisi, kaçırılan kenelerin sayısını saklayacak int _LastError gibi bir bayrak olurdu, karmaşık hesaplamalar için OnCalculate() öğesini çağırırken uygun olurdu , sembol akışını serbest bırakmak için hemen geri dönün

 
Igor Makanu :

teşekkür ederim, en azından bir şeyler ters giderse hataları nerede ve nasıl arayacağınız konusunda bazı bilgiler çıktı

ancak durumu kontrol etmek için hala yerleşik bir işleve ihtiyacımız olduğunu düşünüyorum, hatta daha iyisi, kaçırılan kenelerin sayısını saklayacak int _LastError gibi bir bayrak olurdu, karmaşık hesaplamalar için OnCalculate() öğesini çağırırken uygun olurdu , sembol akışını serbest bırakmak için hemen geri dönün

düşündü, düşündü .... bu bir seçenek değil. birkaç işaretin atlandığı bilgisini ne verecek (ayrıca, Slava, göstergenin TÜM onay işaretlerini almasının garanti edildiğini söyledi, bu gerçek, yalnızca MQL programlarında değil, hatta terminalde bile her türlü kilitlenmeye yol açıyor)? her neyse, bu keneleri toplamanız ve işlemeniz gerekecek, yani kaçırılan keneleri işlemek için zamanınız yoksa, o zaman neden birdenbire bir dahaki sefere yapabileceğinizi umarsınız? - bu bir kısır döngü.

Bunu düşündüm ... belki geliştiriciler istisnalara benzer bir şey tanıtmalıdır? yeni bir onay işaretinin gelmesi, tüm işlemleri, şu anda göstergede bulunan hesaplamaları kesintiye uğratmalıdır ve o sırada yeni bir onay işareti gelirse, herhangi bir standart MQL işlevinin yürütüldüğünde bir hata döndüreceğini... o zaman göstergeyle çalışmak anlaşılır, uygun hale gelecektir. ve tahmin edilebilir. diğer program türleri (komut dosyaları, danışmanlar) için bu pratik olarak gerekli değildir.

ve göstergedeki alaka düzeyine göre her türlü kene kontrolü, hafifçe söylemek gerekirse, bir seçenek değildir.

 

#property tester_everytick_calculate bayrağını içermeyen göstergeler için, her bir onayda değil, bir grup onay almayı temel alan hesaplama modunu etkinleştirmek için bir fikrimiz var.

Bu, bazı göstergeler için her bir işaretin garantili işlenmesi olasılığını korurken, fren göstergeleri sorununu kökten çözecektir.

 
Renat Fatkhullin :

#property tester_everytick_calculate bayrağını içermeyen göstergeler için, her bir onayda değil, bir grup onay almayı temel alan hesaplama modunu etkinleştirmek için bir fikrimiz var.

Bu, bazı göstergeler için her bir işaretin garantili işlenmesi olasılığını korurken, fren göstergeleri sorununu kökten çözecektir.

Yani böyle bir tasarımla çok hızlı bir göstergeye sahip olmak mümkün olacak mı?

 //+-------------------------------------------+
int OnInit () 
  {
   EventSetMillisecondTimer ( 200 );
//-
   return ( INIT_SUCCEEDED );
 }

//+-------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime & time[],
                 const double & open[],
                 const double & high[],
                 const double & low[],
                 const double & close[],
                 const long & tick_volume[],
                 const long & volume[],
                 const int & spread[])
 {
  // Здесь ничего не делаем, нам не нужен в данном случае OnCalculate
   return (rates_total);
 }

//+-------------------------------------------+
void OnTimer ()
 {
   // Здесь расчёты, и вывод информации на график в виде графических объектов
 }

Eğer öyleyse, o zaman bu harika bir haber!

 
Renat Fatkhullin :

#property tester_everytick_calculate bayrağını içermeyen göstergeler için, her bir onayda değil, bir grup onay almayı temel alan hesaplama modunu etkinleştirmek için bir fikrimiz var.

Bu, bazı göstergeler için her bir işaretin garantili işlenmesi olasılığını korurken, fren göstergeleri sorununu kökten çözecektir.

Harika haber!

 
Renat Fatkhullin :

#property tester_everytick_calculate bayrağını içermeyen göstergeler için, her bir onayda değil, bir grup onay almayı temel alan hesaplama modunu etkinleştirmek için bir fikrimiz var.

Bu, bazı göstergeler için her bir işaretin garantili işlenmesi olasılığını korurken, fren göstergeleri sorununu kökten çözecektir.

İyi bir fikir!

Ve bunun varsayılan olarak herhangi bir #özellik olmadan çalışması arzu edilir.

Aksini isteyen varsa #özellik koysun.

 
Gruplar halinde kene almak iyi ve muhtemelen gerçek zamana gerek yoksa anemik bir çözümdür (ancak, Uzman Danışmanların "dünün" fiyatlarında çalışan bu tür göstergelerle nasıl çalışabileceği açık değildir, ama neyse ki).

Ancak başka bir görev sınıfı daha vardır - her onayda gerçek zamanlı. Burada, ya bir sonrakinin gelmesinden önce bir kene gelmesinden sonra hesaplamalar yapmayı başardı ya da yapmadı ve sonra ticaret kararı artık alakalı olmayacak (üçüncüsü yok). Bu nedenle, doğru gördüğüm tek bir şey var - yeni bir onay işareti geldiğinde, mevcut tüm hesaplamalar kesintiye uğrar ve bir hata döndürülür. Aksi takdirde, gerçek zamanı unutabilirsiniz. Bugün, tikler her geçen gün daha hızlı ve daha hızlı tükürüyor ve daha fazla olup olmayacağına, geleceğe bahse girmeniz gerekiyor, şu anda tüm tikleri sorunsuz bir şekilde zamanında ve sorunsuz bir şekilde işlemenin gerçekçi olmadığı gerçeğinden bahsetmiyorum bile. frenler.

 
_o0O :
Gruplar halinde kene almak iyi ve muhtemelen gerçek zamana gerek yoksa anemik bir çözümdür (ancak, Uzman Danışmanların "dünün" fiyatlarında çalışan bu tür göstergelerle nasıl çalışabileceği açık değildir, ama neyse ki).

Ancak başka bir görev sınıfı daha vardır - her tikte gerçek zamanlı. Burada, ya bir sonrakinin gelmesinden önce bir kene gelmesinden sonra hesaplamalar yapmayı başardı ya da yapmadı ve sonra ticaret kararı artık alakalı olmayacak (üçüncüsü yok). Bu nedenle, doğru gördüğüm tek bir şey var - yeni bir onay işareti geldiğinde, mevcut tüm hesaplamalar kesintiye uğrar ve bir hata döndürülür. Aksi takdirde, gerçek zamanı unutabilirsiniz. Bugün, tikler her geçen gün daha hızlı ve daha hızlı tükürüyor ve daha fazla olup olmayacağına, geleceğe bahse girmeniz gerekiyor, şu anda tüm tikleri sorunsuz bir şekilde zamanında ve sorunsuz bir şekilde işlemenin gerçekçi olmadığı gerçeğinden bahsetmiyorum bile. frenler.

Gösterge EA'larının büyük bir kısmı kapalı bir çubukla[1] çalışır, bu nedenle keneleri atlamanın önemi yoktur, bu kenelerle çalışan göstergeler için geçerlidir, ancak birçoğu yoktur, sadece " #property tester_everytick_calculate " öğesini seçebilirler.

Ve yine, süper kenelere ihtiyaç duyulursa, bunun için bir göstergeye gerek yoktur, tüm bunlar danışman koduna yazılabilir. Bu nedenle, her bir kene uğruna tüm gösterge çalışmasını yavaşlatmak mantıklı değildir.

" #property tester_everytick_calculate " bekleniyor

 
Vitaly Muzichenko :

Gösterge EA'larının büyük bir kısmı kapalı bir çubukla[1] çalışır, bu nedenle keneleri atlamanın önemi yoktur, bu kenelerle çalışan göstergeler için geçerlidir, ancak birçoğu yoktur, sadece " #property tester_everytick_calculate " öğesini seçebilirler.

Ve yine, süper kenelere ihtiyaç duyulursa, bunun için bir göstergeye gerek yoktur, tüm bunlar danışman koduna yazılabilir. Bu nedenle, her bir kene uğruna tüm gösterge çalışmasını yavaşlatmak mantıklı değildir.

" #property tester_everytick_calculate " bekleniyor


Tamam, söylediklerin benim sözlerime nasıl uymuyor?
 
Belki birileri işe yarar. Çoklu para birimi göstergesine sahibim, bu nedenle ana kapasitif hesaplamaları başlatma bloğunda yapıyorum ve yalnızca oncalculate'i çiziyorum. Doğru, bu, gösterge çizgilerinin karmaşık hesaplamalar içermediği durumlar için bir çıkış yolu. Benim durumumda bu, portföy davranışının bir grafiğini gösteren bir portföy göstergesidir.
Neden: