Hatalar, hatalar, sorular - sayfa 2179

 
Nikolai Semko :

Hayır, burada indirilecek bir şey yok.

Sıfır başlangıç çubuğu değil, 50 çubuk diyelim, o zaman her şey yolunda demektir. Aniden.

Ve 30 bar alırsam donuyor. Ve hayırdan sonra.

DUR HATA!

Bunu dene:

 //+------------------------------------------------------------------+
//| Возвращает смещение бара по времени                              |
//| https://www.mql5.com/ru/code/1864                                |
//+------------------------------------------------------------------+
int iBarShift ( const string symbol_name, const ENUM_TIMEFRAMES timeframe, const datetime time, bool exact= false )
  {
   datetime last_bar;
   if (! SeriesInfoInteger (symbol_name,timeframe, SERIES_LASTBAR_DATE ,last_bar))
     {
       datetime array[ 1 ];
       if ( CopyTime (symbol_name,timeframe, 0 , 1 ,array)== 1 )
         last_bar=array[ 0 ];
       else
         return WRONG_VALUE ;
     }
   if (time>last_bar)
       return ( 0 );
   int shift= Bars (symbol_name,timeframe,time,last_bar);
   datetime array[ 1 ];
   if ( CopyTime (symbol_name,timeframe,time, 1 ,array)== 1 )
       return (array[ 0 ]==time ? shift- 1 : exact && time>array[ 0 ]+ PeriodSeconds (timeframe) ? WRONG_VALUE : shift);
   return WRONG_VALUE ;
  }
//+------------------------------------------------------------------+
 
Artyom Trishkin :

Bunu dene:

Ve iBarShift nerede?

Şimdi standart Çubuklar işlevindeki bir hatadan bahsediyoruz

 
Nikolai Semko :

Ve iBarShift nerede?

Şimdi standart Çubuklar işlevindeki bir hatadan bahsediyoruz

Bu işlev aynı zamanda Bars()'ı da kullanır. Her şey sizin için sadece bir iBarShift () analoguyla başladı

 
Artyom Trishkin :

Bu işlev aynı zamanda Bars()'ı da kullanır. Her şey sizin için sadece bir iBarShift () analoguyla başladı

Evet, elbette, bir iBarShift analogu kullanmak bu sorunu ortaya çıkardı.

Sağladığınız iBarShift işlevini kullanırsanız, bu hata yakalanmayacaktır, çünkü orada sadece bir TF kullanılıyor,

Ve bu hata , CopyTime ve Bars işlevlerinde farklı zaman çerçeveleri kullanıldığında ortaya çıkar.

Ancak Barlar her zaman iyi çalışmalıdır. Ancak benim örneğim, iBar'ın onlarca saniye boyunca askıda kaldığı özel bir durum olduğunu gösteriyor. Ve yükleme geçmişinin bununla hiçbir ilgisi yok.

 
Nikolai Semko :

Evet, elbette, bir iBarShift analogu kullanmak bu sorunu ortaya çıkardı.

Sağladığınız iBarShift işlevini kullanırsanız, bu hata yakalanmayacaktır, çünkü sadece bir TF kullanılır,

Ve bu hata , CopyTime ve Bars işlevlerinde farklı zaman çerçeveleri kullanıldığında ortaya çıkar.

Ancak Barlar her zaman iyi çalışmalıdır. Ancak benim örneğim, iBar'ın onlarca saniye boyunca askıda kaldığı özel bir durum olduğunu gösteriyor. Ve yükleme geçmişinin bununla hiçbir ilgisi yok.

Büyük olasılıkla bu, geçmişin yüklenmesinden kaynaklanmaktadır.

 
Nikolai Semko :

Evet, elbette, bir iBarShift analogu kullanmak bu sorunu ortaya çıkardı.

Sağladığınız iBarShift işlevini kullanırsanız, bu hata yakalanmayacaktır, çünkü sadece bir TF kullanılır,

Ve bu hata , CopyTime ve Bars işlevlerinde farklı zaman çerçeveleri kullanıldığında ortaya çıkar.

Ancak Barlar her zaman iyi çalışmalıdır. Ancak benim örneğim, iBar'ın onlarca saniye boyunca askıda kaldığı özel bir durum olduğunu gösteriyor. Ve yükleme geçmişinin bununla hiçbir ilgisi yok.

İstenen aralıkta çubukların yokluğunda döngüsel senkronizasyon girişimi olduğunu düşünüyorum - Barlar "normal çalışmak" için elinden gelenin en iyisini yapıyor ve ardından zaman aşımı veya senkronizasyon denemelerinin sayısıyla vazgeçiyor

Böyle bir durumda Bars'ı aramamak için değer kontrollerini kendiniz yapmanız gerekir.

 
Vitaly Muzichenko :

Büyük olasılıkla bu, geçmişin yüklenmesinden kaynaklanmaktadır.

Aynı fikirde olmamak. Daha sonra 22 saniye boyunca yeniden indirilmez. Ayrıca, tüm TF'ler için tüm geçmişim özel bir gösterge ile yüklenir.

Yükleniyorsa, ilk 31 çubuğun yüklenmesi gerektiğini ve sonrakilerin olmadığını nasıl açıklayabiliriz.

 
Nikolai Semko :

Yükleniyorsa, ilk 31 çubuğun yüklenmesi gerektiğini ve sonrakilerin olmadığını nasıl açıklayabiliriz.

Belgelerden: Belirli bir tarih aralığındaki çubuk sayısı istenirken, yalnızca açılış zamanı bu aralıkta olan çubuklar dikkate alınır.

Buna göre, Bars() ön görüntüsü, geçmişin yokluğu olarak yorumlanan sıfır döndürür ve önceki mesajda doğru bir şekilde belirtildiği gibi, bir komut dosyası durumunda ::Bars(), bir zaman aşımı veya başarısız sayı ile biter. denemeler.

 
Kirill Belousov :

İstenen aralıkta çubukların yokluğunda döngüsel senkronizasyon girişimi olduğunu düşünüyorum - Barlar "normal çalışmak" için elinden gelenin en iyisini yapıyor ve ardından zaman aşımı veya senkronizasyon denemelerinin sayısıyla vazgeçiyor

Böyle bir durumda Bars'ı aramamak için değer kontrollerini kendiniz yapmanız gerekir.

Oldukça mümkün.
Ama birçok seçenek var.

Barlar çok önemli bir özellik, onsuz yapmak zor. Daha doğrusu, idare edebilirsiniz, ancak artan kaynak israfı pahasına.

Sorunsuz çalışması gerekiyor.

 
A100 :

Belgelerden: Belirli bir tarih aralığındaki çubuk sayısı istenirken, yalnızca açılış zamanı bu aralıkta olan çubuklar dikkate alınır.

Buna göre, Bars()'ın ön görüntüsü, geçmişin yokluğu olarak yorumlanan sıfır döndürür ve önceki mesajda doğru bir şekilde belirtildiği gibi komut dosyası, bir zaman aşımı veya başarısız deneme sayısı ile sona erer.

Sıfır olduğu çok açık.

Ve ne - belirli bir zaman diliminde sıfır çubuk olduğuna karar vermek normal 22 saniye mi?

Bars'ın dahili uygulamasında bariz bir algoritmik hata.

Belki bu konuda servis masasına bir başvuru yapmak gerekir, aksi takdirde hafta sonu öndedir ve bu konu Pazartesi'ye kadar kaybolabilir.