Kütüphaneler: MultiTester - sayfa 50

 

Gönderim yanlış başlıkta oluşturuldu, burada olmalıydı:

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi üzerine forum

MetaTrader 5 yapı 5200'ün yeni sürümü: OpenBLAS uzantısı ve MQL5'te artırılmış kontrol

Stanislav Korotky, 2025.09.05 11:13 AM

Neden 31 değil de 30? Başlık 31 gün için tasarlanmış gibi görünüyor.

uint Buffer[64 + 12 * 30];

Peki ya kripto?

 
Stanislav Korotky #:

Neden 31 değil de 30? Başlık 31 gün için gibi görünüyor.

0'dan 30'a kadar olan endeksler 31'dir.

 
fxsaber #:

0'dan 30'a kadar olan endeksler 31 adettir.

Tam olarak, 0'dan 30'a kadar, dahil - toplam 31.

 
Stanislav Korotky #:

Tam olarak, 0 ila 30, dahil - toplam 31.

Doğru mu anladın?

 
fxsaber #:

Yani doğru mu anladın?

Hayır. Dosya başlığında, görebildiğim kadarıyla, 31 gün için dizi ayrılmış, ki bu mantıklı. Yani kodda 12*31 olması gerekiyor. Nerede hata yapıyorum?

Ya da bir ayda (en fazla) 30 gün olması gerektiğini söyleyen tkc format açıklamasına bir bağlantı verin.

 
Stanislav Korotky #:

Hayır. Dosya başlığı, görebildiğim kadarıyla, 31 gün için bir dizi ayırıyor, bu da mantıklı.

Başlık hakkında herhangi bir bilgim yok. Özel bir karakter yapıyordum ve hangi baytların değiştiğine bakıyordum. Yalnızca bu eylemlerden, başlıktaki belirli baytların ne için sorumlu olduğunu anladım.

Yani kodda 12*31 olması gerekiyor. Nerede hata yapıyorum?

Ya da bir ayda (en fazla) 30 gün olması gerektiğini söyleyen tkc format açıklamasına bir bağlantı verin.

      uint Buffer[64 + 12 * 30];
      uint Read;

      kernel32::ReadFile(handle, Buffer, sizeof(Buffer), Read, 0);

      if (Read == sizeof(Buffer))
        for (int i = 63; i < (sizeof(Buffer) >> 2); i += 12)
          Res += (int)Buffer[i];

i değişkeni 31 değer alır.

 
fxsaber #:

Başlık hakkında herhangi bir bilgim yok. Özel bir sembol yaptım ve hangi baytların değiştiğini izledim. Sadece bu eylemler sayesinde başlıktaki belirli baytların nelerden sorumlu olduğunu anladım.

i değişkeni 31 değer alır.

Açıkça, döngü 63'ten itibaren sayılır, ancak diziyi tanımlarken, başlık için 64 ayrılır, bu da döngünün -1'den başlamasına eşdeğerdir. Pek sezgisel değil ama matematik uyuyor.

 
fxsaber #:
Bir takvim ayındaki tik sayısını standart olmayan bir şekilde elde edin.

Sembollere göre mevcut geçmiş tik sayıları hakkında bilgi alın.

#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/tr/code/26132

string NumToString( ulong Num, const string Delimeter = " " )
{
  string Res = (Num ? NULL : "0");

  while (Num)
  {
    Res = ((Num < 1000) ? (string)(Num % 1000) : ::IntegerToString(Num % 1000, 3, '0')) +
          ((Res == NULL) ? NULL : Delimeter) + Res;

    Num /= 1000;
  }

  return(Res);
}

string TicksDataToString( const string Symb )
{
  datetime From = 0;
  datetime To;
  
  const int Amount = MTTESTER::GetAmountFileTicks(From, To, Symb);
  const string SizeStr = ::DoubleToString((long)Amount * sizeof(MqlTick) / (double)(1 << 20), 3) + " MB";
  
  return(Symb + ": " + NumToString(Amount) +" ticks (MqlTick[] = " + SizeStr + ")" +
         (From ? ", " + ::TimeToString(From) + " - " + ::TimeToString(To) +
                 ", " + GetDiffTime(From, To) // https://www.mql5.com/ru/forum/170952/page308#comment_57872629
               : NULL));  
}

void OnStart()
{
  const int Size = SymbolsTotal(true);
  
  for (int i = 0; i < Size; i++)
    Print(IntegerToString(i + 1, 3, '0') + "/" + IntegerToString(Size, 3, '0') +
          ". " + TicksDataToString(SymbolName(i, true)));
}


Sonuç.

001/045. EURUSD: 473 689 648 ticks (MqlTick[] = 27104.739 MB), 2011.12.01 00:00 - 2025.09.01 00:00, 13 Years 9 Months
002/045. GBPUSD: 508 981 458 ticks (MqlTick[] = 29124.153 MB), 2011.12.01 00:00 - 2025.01.01 00:00, 13 Years 1 Months
003/045. USDCAD: 402 756 151 ticks (MqlTick[] = 23045.892 MB), 2011.12.01 00:00 - 2025.01.01 00:00, 13 Years 1 Months
004/045. USDCHF: 353 129 808 ticks (MqlTick[] = 20206.250 MB), 2011.12.01 00:00 - 2025.01.01 00:00, 13 Years 1 Months
005/045. USDJPY: 482 177 651 ticks (MqlTick[] = 27590.427 MB), 2011.12.01 00:00 - 2025.01.01 00:00, 13 Years 1 Months
006/045. AUDCAD: 446 882 461 ticks (MqlTick[] = 25570.820 MB), 2011.12.01 00:00 - 2025.01.01 00:00, 13 Years 1 Months
007/045. AUDCHF: 387 336 224 ticks (MqlTick[] = 22163.557 MB), 2011.12.01 00:00 - 2025.01.01 00:00, 13 Years 1 Months


Hata 4004'ün nedenini görebilirsiniz.

 
MTTester.mqh derlenmiyor. Sanırım bunun nedeni, aniden artık derlenmeyen pek çok şeyin olduğu son MT5 derlemesi. Bu kütüphanenin güncellenmiş bir sürümünü sağlama şansınız var mı? Harika bir kütüphane gibi görünüyor.
 
Goesta Torsten Hulden #:
MTTester.mqh derlenmemiştir.

Güncel sürüm yalnızca kütüphanenin Rusça sayfasında bulunmaktadır.