iBarShift'e benzer - sayfa 5

 
Aleksey Vyazmikin :

Senaryo neden bu kadar yavaş?

Profilci yanıtı.

 
Andrey Khatimlianskii :

Profilci yanıtı.

Tamam, profil oluşturucu bu kod parçasına atıfta bulunuyor.

Res=:: Bars (Symb,TimeFrame,time, UINT_MAX )- 1 ;

Ve neyi sevmiyor? İşlev benim değil, ancak yukarıdaki yazar hızlı çalışması gerektiğini belirtti ...

 
Aleksey Vyazmikin :

Tamam, profil oluşturucu bu kod parçasına atıfta bulunuyor.

Ve neyi sevmiyor? İşlev benim değil, ancak yukarıdaki yazar hızlı çalışması gerektiğini belirtti ...

Mizahı anlamadım ama neden MQL4 iBarShift'teki standart işlevi aşırı yüklediniz? Derleyici muhtemelen bu nedenle bir stupora girer.
Ayrıca, iBarShift2 işlevi MQL5 için tasarlanmıştır, MQL4'te ise yürütmenin doğruluğu yalnızca normal işlevin standardı ile karşılaştırılarak test edilmiştir.

 
Nikolai Semko :

Mizahı anlamadım ama neden MQL4 iBarShift'teki normal işlevi aşırı yüklediniz? Derleyici muhtemelen bu nedenle bir stupora girer.

kimse iptal etmedi

 #ifdef __MQL5__
/**************************/
#else
/**************************/
#endif

Ve hiçbir şey stupora dahil edilmemelidir.

 
Nikolai Semko :

Mizahı anlamadım ama neden MQL4 iBarShift'teki normal işlevi aşırı yüklediniz? Derleyici muhtemelen bu nedenle bir stupora girer.
Ayrıca, iBarShift2 işlevi MQL5 için tasarlanmıştır, MQL4'te ise yürütmenin doğruluğu yalnızca normal işlevin standardı ile karşılaştırılarak test edilmiştir.

Muhtemelen dikkatli değilim, ancak gönderilerinize tekrar baktım - yani. MT4 için işlevleriniz nelerdir? Sadece konu MT5 ile ilgiliydi, görünüşe göre bu beni yanılttı.

Eklendi: Her şeyi Mlyn - başka bir kod buldum - her şey bulanıktı, üzgünüm.

 
Aleksey Vyazmikin :

Muhtemelen dikkatli değilim, ancak gönderilerinize tekrar baktım - yani. MT4 için işlevleriniz nelerdir? Sadece konu MT5 ile ilgiliydi, görünüşe göre bu beni yanılttı.

Eklendi: Her şeyi Mlyn - başka bir kod buldum - her şey silindi, üzgünüm.

Vay. hayır. MQL5 kodunuzu burada denedim ve bir stupora düştüm. Şimdi ne demek istediğini anlıyorum.
İlginç bir resim ortaya çıkıyor.
Komut dosyanız yerel TF = 1 Gün'de çalıştırılıyorsa, her şey yolunda demektir.
Ancak başka bir TF'de çalıştırırsanız, o zaman henüz hiçbir şekilde açıklayamadığım inanılmaz orantısız frenler, yalnızca derleyicide bir tür hata olarak.
Aynı zamanda, hata ayıklama modunda veya profil oluşturma modunda böyle bir fren yoktur !!!
Şimdi deneyeceğim ve frenlerin kaynağını arayacağım.

 
Nikolai Semko :

Vay. Hayır. MQL5 kodunuzu burada denedim ve bir stupora düştüm. Şimdi ne demek istediğini anlıyorum.
İlginç bir resim ortaya çıkıyor.
Komut dosyanız yerel TF = 1 Gün'de çalıştırılıyorsa, her şey yolunda demektir.
Ancak başka bir TF'de çalıştırırsanız, o zaman henüz hiçbir şekilde açıklayamadığım inanılmaz orantısız frenler, yalnızca derleyicide bir tür hata olarak.
Aynı zamanda, hata ayıklama modunda veya profil oluşturma modunda böyle bir fren yoktur !!!
Şimdi deneyeceğim ve frenlerin kaynağını arayacağım.

Normal bir tarih saat değeri değiştirerek aramanızı başlatın

Res=:: Bars (Symb,TimeFrame,time, UINT_MAX )- 1 ;
 
Aleksey Vyazmikin :

Senaryo neden bu kadar yavaş?


Evet harika.

Frenlerin yerini belirledim.

 //+------------------------------------------------------------------+
//|                                                    iBarShift.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
#property script_show_inputs

input ENUM_TIMEFRAMES TF= PERIOD_D1 ;
input int Bar= 3 ;
input int calcN= 1 ;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   for ( int index= 0 ;index<calcN;index++)
     {
       Print ( "0" );
       datetime T= iTime ( _Symbol , PERIOD_CURRENT ,index);
       Print ( "00  " + TimeToString (T));
       int Day_Shift= iBarShift ( _Symbol ,TF,T, false );
       Print ( "1" );
       int Start= iBarShift ( _Symbol , PERIOD_CURRENT , iTime ( _Symbol ,TF,Bar+Day_Shift), false );
       Print ( "2" );
       int Stop= iBarShift ( _Symbol , PERIOD_CURRENT , iTime ( _Symbol ,TF,Day_Shift), false );
       Print ( "3" );

       if (index< 3 ) Print ( "1 Start=" ,Start, " Stop=" ,Stop, " Day_Shift=" ,Day_Shift, " index=" ,index);
       Print ( "4" );

       if (index< 3 ) Print ( "1 Start=" , TimeToString ( iTime ( _Symbol ,TF,Bar+Day_Shift), TIME_DATE | TIME_MINUTES ),
         " Stop=" , TimeToString ( iTime ( _Symbol ,TF,Day_Shift), TIME_DATE | TIME_MINUTES ),
         " Day_Shift=" , TimeToString ( iTime ( _Symbol , PERIOD_CURRENT ,index), TIME_DATE | TIME_MINUTES ), " index=" ,index);
     }

   Print ( "5" );

  }
//+------------------------------------------------------------------+ 
//| Получим iBarShift для заданного номера бара                      | 
//+------------------------------------------------------------------+   
int iBarShift ( const string Symb, const ENUM_TIMEFRAMES TimeFrame, datetime time, bool exact= false )
  {
   static int Res=- 1 ;
   static string LastSymb= NULL ;
   static ENUM_TIMEFRAMES LastTimeFrame= 0 ;
   static datetime LastTime= 0 ;

   if ((time!=LastTime) || (Symb!=LastSymb) || (TimeFrame!=LastTimeFrame))
     {
       Print ( "10" );
      Res=:: Bars (Symb,TimeFrame,time, UINT_MAX )- 1 ;
       Print ( "11" );
       if (Res< 0 ) Res= 0 ;

      LastTime = time;
      LastSymb = Symb;
      LastTimeFrame=TimeFrame;
     }
   return (Res);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
datetime iTime ( string symbol, ENUM_TIMEFRAMES tf, int index)
  {
   if (index < 0 ) return (- 1 );
   datetime Arr[];
   if ( CopyTime (symbol,tf,index, 1 ,Arr)> 0 )
       return (Arr[ 0 ]);
   else return (- 1 );
  }
//+------------------------------------------------------------------+

Bu betiği çalıştırırsak, diyelim ki H4'te

ilk çağrıda olduğu açıktır.

Res=:: Bars (Symb,TimeFrame,time, UINT_MAX )- 1 ;

sistemde bir uyuşukluk var.

Ayrıca, bu stupor, profil oluşturma veya hata ayıklama sırasında mevcut değildir.

Servis masası için açık soru

 
Aleksey Vyazmikin :

Senaryo neden bu kadar yavaş?

2018.03.30 09:21:05.208 BS (Si Splice,H4) 1 Start=15 Stop=3 Day_Shift=0 index=0

2018.03.30 09:21:05.208 BS (Si Splice,H4) 1 Start=2018.03.26 00:00 Stop=2018.03.29 00:00 Day_Shift=2018.03.29 20:00 index=0

2018.03.30 09:21:20.209 BS (Si Splice,H4) 2 Start=15 Stop=3 Day_Shift=0 index=0

2018.03.30 09:21:20.209 BS (Si Splice,H4) 2 Start=2018.03.26 00:00 Stop=2018.03.29 00:00 Day_Shift=2018.03.29 20:00 index=0

2018.03.30 09:20:49.300 Scripts script BS (Si Splice,H4) loaded successfully

2018.03.30 09:21:20.209 Scripts script BS (Si Splice,H4) removed

Alex, gözlemin için teşekkürler.
Bu, Bars() işlevinde açık bir hatadır.
bir soru açtı Hatalar, hatalar, voros iş parçacığında

 
Nikolai Semko :

Alex, gözlemin için teşekkürler.
Bu, Bars() işlevinde açık bir hatadır.
bir soru açtı Hatalar, hatalar, voros iş parçacığında

Analiz için teşekkürler, bu yüzden henüz tamamen deli değilim ...

Neden: