Mql5 dilinin özellikleri, incelikleri ve çalışma yöntemleri - sayfa 139

 
fxsaber :

Bu seçenek çalışmıyor.

Kodu düzelttim, şimdi her şey yolunda.
 
Alexey Navoykov :
Kodu düzelttim, şimdi her şey yolunda.

Hatalı bir şey gönderdin, tk. hiç derleme yapmıyor.

 
fxsaber :

Hatalı bir şey gönderdin, tk. hiç derleme yapmıyor.

Evet, mühürlü. Düzeltildi.
 
Alexey Navoykov :
Evet, mühürlü. Düzeltildi.

Teşekkürler Çalışıyor. Performans üzerindeki etkisini görmek için kalır.

 
Dinamik kaynaklar (örneğin Canvas) kullananlar için dizilerin doldurulmasını bu şekilde hızlandırmanızı tavsiye ederim.

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

fxsaber , 2019.07.09 18:36

 void FillArray1( int &Array[] )
{
   const int Size = ArraySize (Array);
  
   for ( int i = 0 ; i < Size; i++)
    Array[i] = i;
}

#define ARRAY_SIZE 10000

void FillArray2( int &Array[] )
{
   int ArrayStatic[ARRAY_SIZE];
  
   const int Size = ArraySize (Array);
  
   for ( int i = 0 ; i < Size;)
  {
     const int Size2 = i + ARRAY_SIZE < Size ? ARRAY_SIZE : Size - i;
    
     for ( int j = 0 ; j < Size2; j++)
      ArrayStatic[j] = i++;
      
     if (Size2)
       ArrayCopy (Array, ArrayStatic, i - Size2, 0 , Size2);
  }
}

#define BENCH(A)                                                               \
{                                                                              \
   const ulong _StartTime = GetMicrosecondCount ();                              \
  A;                                                                           \
   Print ( "Time[" + #A + "] = " + ( string )( GetMicrosecondCount () - _StartTime)); \
}

void OnStart ()
{
   int Array1[];
   ArrayResize (Array1, 1 e7);

   int Array2[];
   ArrayResize (Array2, 1 e7);
  
  BENCH(FillArray1(Array1));
  BENCH(FillArray2(Array2));
}
Yüzde onlarca hızlanma.

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum

Hatalar, hatalar, sorular

fxsaber , 2019.07.09 19:40

Time[FillArray1(Array1)] = 39501
Time[FillArray2(Array2)] = 30304

Yayın sürümünü çalıştırıyorum. Optimizasyon etkinleştirildi.


Tehdit Deneysel olarak statik bir dizinin en uygun boyutunu buldu

 #define ARRAY_SIZE 256
 
fxsaber :
Dinamik kaynaklar (örneğin Canvas) kullananlar için dizilerin doldurulmasını bu şekilde hızlandırmanızı tavsiye ederim.
Yüzde onlarca hızlanma.


Tehdit Deneysel olarak statik bir dizinin en uygun boyutunu buldu

ve mql5'ten ArrayFill ile karşılaştırırsanız, hız kazancı olur mu, olmaz mı?

 

Konunun tamamını okumadım, belki bu sorunun cevabı zaten vardır, MT5 grafik nesnelerle anlaşılmaz davranıyor, terminal bir süre kapalı ve nesneler anlaşılmaz noktalara bağlı kalıyor. Bununla nasıl başa çıkıyorsun? Grafik penceresinin açık olduğu durumlarda bunu yapmak zor değildir. OnInit'te () OnDeinit'e kişisel olarak bir geçiş ekledim, ancak pencere işaretliyse bu sorunu çözmez. Ve belki birileri size MT5'in yaratıcılarının dileklerini nerede "seslendirebileceğinizi" söyleyecektir.

.

 
Alexander Lasygin :

Konunun tamamını okumadım, belki bu sorunun cevabı zaten vardır, MT5 grafik nesnelerle anlaşılmaz davranıyor, terminal bir süre kapalı ve nesneler anlaşılmaz noktalara bağlı kalıyor. Bununla nasıl başa çıkıyorsun? Grafik penceresinin açık olduğu durumlarda bunu yapmak zor değildir. OnInit'te () OnDeinit'e kişisel olarak bir geçiş ekledim, ancak pencere işaretliyse bu sorunu çözmez. Ve belki birileri size MT5'in yaratıcılarının dileklerini nerede "seslendirebileceğinizi" söyleyecektir.

.

Çoğaltma için doğru veriler sağlayın: örneğin nesneler içeren bir grafik şablonu.

Göstergenin hala nesneler çizdiğinden şüpheleniyorum ve prev_calculated'ı yanlış takip eden de bu.

 
Konstantin :

ve mql5'ten ArrayFill ile karşılaştırırsanız, hız kazancı olur mu olmaz mı?

olacağını sanmıyorum.

 
fxsaber :

olacağını sanmıyorum.

öyleyse neden zaten üretken bir işlev varsa, neden kendi lisapedinizi icat ettin?