МQL5'te Aç,Düşük,Yüksek,Kapat parametreleri nasıl alınır? - sayfa 7

 
Igor Makanu :


ölçülen:

2019.07.30 00:44:29.156 tst_iXXX_Kopya (EURUSD,H1) CopyClose: döngüler=1410065408 ms=69407

2019.07.30 00:45:29.408 tst_iXXX_Kopya (EURUSD,H1) iClose: döngüler=1410065408 ms=60250

hmm, bence, bir tür moderatörün ateşli bir merhaba iletmesi gerekiyor))))

Komut dosyasını çalıştırın:

 2019.07 . 30 03 : 58 : 46.425 CopyClose : loops=- 2147483648 ms= 0
2019.07 . 30 03 : 58 : 46.425 iClose : loops=- 2147483648 ms= 0

Sorun nedir? (anlamak için zaman yok)

 
Artyom Trishkin :

Komut dosyasını çalıştırın:

Sorun nedir? (anlamak için zaman yok)

grafikte çubuk sayısı için bir kontrol yok, var olmayan bir çubukta çökmek mümkün - ayarım sınırsız ve H1 dönemi İbranice'de, rand() 65 bin gibi bir maksimum veriyor


Rand() derleyicisini optimize ederken, 4 yöntemin tümünün doğru testi burada:

 // Позволяет, как в MT4, работать с таймсериями: Open[Pos], High[Pos], Low[Pos], Close[Pos], Time[Pos], Volume[Pos].
// А так же задает привычные MT4-функции: iOpen, iHigh, iLow, iClose, iTime, iVolume.
#define DEFINE_TIMESERIE(NAME,FUNC,T)                                                                         \
   class CLASS ##NAME                                                                                           \
  {                                                                                                           \
   public :                                                                                                     \
     static T Get( const string Symb, const int TimeFrame, const int iShift) \
    {                                                                                                         \
      T tValue[];                                                                                             \
                                                                                                              \
       return ((Copy ##FUNC((Symb == NULL ) ? _Symbol : Symb, _Period , iShift, 1 , tValue) > 0 ) ? tValue[ 0 ] : - 1 ); \
    }                                                                                                         \
                                                                                                              \
    T operator []( const int iPos) const                                                                      \
    {                                                                                                         \
       return (CLASS ##NAME::Get(_Symbol, _Period , iPos));                                                       \
    }                                                                                                         \
  };                                                                                                          \
                                                                                                              \
  CLASS ##NAME NAME;                                                                                           \
                                                                                                              \
  T i ##NAME(const string Symb, const int TimeFrame, const int iShift) \
  {                                                                                                           \
     return (CLASS ##NAME::Get(Symb, TimeFrame, iShift));                                                        \
  }
//+------------------------------------------------------------------+
DEFINE_TIMESERIE(Volume,TickVolume, long )
DEFINE_TIMESERIE(Time,Time, datetime )
DEFINE_TIMESERIE(Open,Open, double )
DEFINE_TIMESERIE(High,High, double )
DEFINE_TIMESERIE(Low,Low, double )
DEFINE_TIMESERIE(Close,Close, double )
#define   test(M,S,EX)        { uint mss= GetTickCount (); int nn=( int ) pow ( 10 ,M); for ( int tst= 0 ;tst<nn&&! _StopFlag ;tst++){EX;} \
                                 printf ( "%s: loops=%i ms=%u" ,S,nn, GetTickCount ()-mss);}
//+------------------------------------------------------------------+
void OnStart ()
  {
   double buff[ 1 ];
   MqlRates rates[ 1 ];
   srand ( GetTickCount ());
   test( 10 , "CopyClose" , CopyClose ( _Symbol , _Period , rand (), 1 ,buff));
   srand ( GetTickCount ());
   test( 10 , "iClose" , iClose ( NULL , 0 , rand ())); 
   srand ( GetTickCount ());
   test( 10 , "Close[i]" ,Close[ rand ()]); 
   srand ( GetTickCount ());
   test( 10 , "CopyRates" , CopyRates ( _Symbol , _Period , rand (), 1 ,rates)); 
  }
//+------------------------------------------------------------------+

2019.07.30 00:59:10.911 tst_iXXX_Kopya (EURUSD,H1) CopyClose: döngüler=1410065408 ms=69765

2019.07.30 01:01:23.655 tst_iXXX_Kopya (EURUSD,H1) iClose : döngüler=1410065408 ms=132735

2019.07.30 01:03:51.541 tst_iXXX_Kopya (EURUSD,H1) Kapat[i]: döngüler=1410065408 ms=147890

2019.07.30 01:05:19.872 tst_iXXX_Kopya (EURUSD,H1) CopyRates: döngüler=1410065408 ms=88328

 
Igor Makanu :

grafikte çubuk sayısı için bir kontrol yok, var olmayan bir çubukta çökmek mümkün - ayarım sınırsız ve H1 dönemi İbranice'de, rand() 65 bin gibi bir maksimum veriyor


Rand() derleyicisini optimize ederken, 4 yöntemin tümünün doğru testi burada:

2019.07.30 00:59:10.911 tst_iXXX_Kopya (EURUSD,H1) CopyClose: döngüler=1410065408 ms=69765

2019.07.30 01:01:23.655 tst_iXXX_Kopya (EURUSD,H1) iClose: döngüler=1410065408 ms=132735

2019.07.30 01:03:51.541 tst_iXXX_Kopya (EURUSD,H1) Kapat[i]: döngüler=1410065408 ms=147890

2019.07.30 01:05:19.872 tst_iXXX_Kopya (EURUSD,H1) CopyRates: döngüler=1410065408 ms=88328

 2019.07 . 30 04 : 12 : 50.825 CopyClose : loops=- 2147483648 ms= 0
2019.07 . 30 04 : 12 : 50.825 iClose : loops=- 2147483648 ms= 0
2019.07 . 30 04 : 12 : 50.825 Close[i]: loops=- 2147483648 ms= 0
2019.07 . 30 04 : 12 : 50.825 CopyRates : loops=- 2147483648 ms= 0
Her nasılsa bir dosyaya ihtiyacınız olduğunda pek değil :)
 
Artyom Trishkin :
Her nasılsa bir dosyaya ihtiyacınız olduğunda pek değil :)

hmm, yarım litre olmadan hiçbir yolu yok gibi görünüyor ...

ve neden döngülerin değeri=-2147483648 , kaynakta başka bir tane var!

;)

Not: ulong- tanımdaki girişleri değiştirin - sabaha kadar test edecekseniz)))

 
Igor Makanu :

hmm, yarım litre olmadan hiçbir yolu yok gibi görünüyor ...

ve neden döngülerin değeri=-2147483648 , kaynakta başka bir tane var!

;)

Not: ulong- tanımdaki girişleri değiştirin - sabaha kadar test edecekseniz)))

Değiştirildi:

 2019.07 . 30 04 : 26 : 12.849 CopyClose : loops= 1410065408 ms= 71234
2019.07 . 30 04 : 26 : 12.849 iClose : loops= 1410065408 ms= 0
2019.07 . 30 04 : 26 : 12.849 Close[i]: loops= 1410065408 ms= 0
2019.07 . 30 04 : 26 : 12.849 CopyRates : loops= 1410065408 ms= 0

:))

 
Artyom Trishkin :

Değiştirildi:

:))

MQL kaynağı bire bir gönderildi, terminal günlüğünden kopyalayıp yapıştırarak test edin

hmm, sıkışmış şakacı eller başka nerede hayal etmek zor)))

Nadiren test ediyorum çünkü bunu açmıyorum, kod kesinlikle çalışıyor - benim için çalışıyor! tartışıldığında buraya alındı

Not: Vin10 - 64, yapı 2093 (Intel Core - 8GB RAM) - hiçbir sorun fark edilmedi, orada ne var?

-------------

ekli ... bu bir komut dosyası, komut dosyası klasöründe ... Başka ne önereceğimi bile bilmiyorum

Dosyalar:
 
Win10 x64'te tüm çekirdekler kullanılır
 2019.07 . 30 00 : 25 : 29.057 Test (GBPUSD,M1)   CopyClose : loops= 1410065408 ms= 72953
2019.07 . 30 00 : 27 : 51.501 Test (GBPUSD,M1)   iClose :    loops= 1410065408 ms= 143625
2019.07 . 30 00 : 30 : 17.904 Test (GBPUSD,M1)   Close[i]:  loops= 1410065408 ms= 149078
2019.07 . 30 00 : 31 : 56.618 Test (GBPUSD,M1)   CopyRates : loops= 1410065408 ms= 88891

Debian x64'te Wine altından nedense yalnızca bir çekirdek dahil
 2019.07 . 30 00 : 38 : 03.104 Test (GBPUSD,M1)   CopyClose : loops= 1410065408 ms= 119863
2019.07 . 30 00 : 41 : 10.478 Test (GBPUSD,M1)   iClose :    loops= 1410065408 ms= 187364
2019.07 . 30 00 : 44 : 16.935 Test (GBPUSD,M1)   Close[i]:  loops= 1410065408 ms= 186449
2019.07 . 30 00 : 46 : 29.732 Test (GBPUSD,M1)   CopyRates : loops= 1410065408 ms= 132794
Dosyalar:
CPU_Win10.png  47 kb
CPU_Wine.png  21 kb
 
Igor Makanu :

MQL kaynağı bire bir gönderildi, terminal günlüğünden kopyalayıp yapıştırarak test edin

hmm, sıkışmış şakacı eller başka nerede hayal etmek zor)))

Nadiren test ediyorum çünkü bunu açmıyorum, kod kesinlikle çalışıyor - benim için çalışıyor! tartışıldığında buraya alındı

Not: Vin10 - 64, yapı 2093 (Intel Core - 8GB RAM) - hiçbir sorun fark edilmedi, orada ne var?

-------------

ekli ... bu bir komut dosyası, komut dosyası klasöründe ... Başka ne önereceğimi bile bilmiyorum

 // Позволяет, как в MT4, работать с таймсериями: Open[Pos], High[Pos], Low[Pos], Close[Pos], Time[Pos], Volume[Pos].
// А так же задает привычные MT4-функции: iOpen, iHigh, iLow, iClose, iTime, iVolume.
#define DEFINE_TIMESERIE(NAME,FUNC,T)                                                                         \
   class CLASS ##NAME                                                                                           \
  {                                                                                                           \
   public :                                                                                                     \
     static T Get( const string Symb, const int TimeFrame, const int iShift) \
    {                                                                                                         \
      T tValue[];                                                                                             \
                                                                                                              \
       return ((Copy ##FUNC((Symb == NULL ) ? _Symbol : Symb, _Period , iShift, 1 , tValue) > 0 ) ? tValue[ 0 ] : - 1 ); \
    }                                                                                                         \
                                                                                                              \
    T operator []( const int iPos) const                                                                      \
    {                                                                                                         \
       return (CLASS ##NAME::Get(_Symbol, _Period , iPos));                                                       \
    }                                                                                                         \
  };                                                                                                          \
                                                                                                              \
  CLASS ##NAME NAME;                                                                                           \
                                                                                                              \
  T i ##NAME(const string Symb, const int TimeFrame, const int iShift) \
  {                                                                                                           \
     return (CLASS ##NAME::Get(Symb, TimeFrame, iShift));                                                        \
  }
//+------------------------------------------------------------------+
DEFINE_TIMESERIE(Volume,TickVolume, long )
DEFINE_TIMESERIE(Time,Time, datetime )
DEFINE_TIMESERIE(Open,Open, double )
DEFINE_TIMESERIE(High,High, double )
DEFINE_TIMESERIE(Low,Low, double )
DEFINE_TIMESERIE(Close,Close, double )
#define   test(M,S,EX)        { ulong mss= GetTickCount (); ulong nn=( ulong ) pow ( 10 ,M); for ( ulong tst= 0 ;tst<nn&&! _StopFlag ;tst++){EX;} \
                                 printf ( "%s: loops=%i ms=%u" ,S,nn, GetTickCount ()-mss);}
//+------------------------------------------------------------------+
void OnStart ()
  {
   double buff[ 1 ];
   MqlRates rates[ 1 ];
   srand ( GetTickCount ());
   test( 10 , "CopyClose" , CopyClose ( _Symbol , _Period , rand (), 1 ,buff));
   srand ( GetTickCount ());
   test( 10 , "iClose" , iClose ( NULL , 0 , rand ())); 
   srand ( GetTickCount ());
   test( 10 , "Close[i]" ,Close[ rand ()]); 
   srand ( GetTickCount ());
   test( 10 , "CopyRates" , CopyRates ( _Symbol , _Period , rand (), 1 ,rates)); 
  }
//+------------------------------------------------------------------+

Win10 - 64, yapı 2093 (Intel Core i3-3217U CPU @ 1.80GHz - 12GB RAM) - fark edilen sorunlar...

 
Artyom Trishkin :

fark edilen sorunlar...

burada sadece döngü sayısını azaltmak ve betiğin çalışacağı bir yer varsa - GetLastError () çıktısı aracılığıyla arayın

bir seçenek olarak: veya bazı terminal ayarları ? - hmm, ayarlar nelerdir? - grafikteki çubuk sayısı ve benzeri her şey

 
Igor Makanu :

burada sadece döngü sayısını azaltmak ve betiğin çalışacağı bir yer varsa - GetLastError () çıktısı aracılığıyla arayın

bir seçenek olarak: veya bazı terminal ayarları ? - hmm, ayarlar nelerdir? - grafikteki çubuk sayısı ve benzeri her şey

Tam olarak aramayacağım - zaman yok. "Kutunun dışında" bir şey olduğunu düşündüm - başlattım ve sonucu gördüm. Ve böylece ... Üstelik, komut dosyası hemen çalışmıyor, ancak simgesindeki RMB'yi zorla kapatana kadar askıda kalıyor. Ve ancak o zaman orada bir şey yazdırılır. Genel olarak - makrolarla bir nedenden dolayı bir güçlük.