Kütüphaneler: MultiTester - sayfa 45

 

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

MetaTrader 5 build 3081'in yeni sürümü: MQL5 hizmetlerindeki iyileştirmeler ve güncellenmiş tasarım

fxsaber, 2021.10.15 12:33 pm

Komut dosyası, dosya yöneticisinde sorunsuz bir şekilde oluşturulan dosya adlarının uzunluğunda anlaşılmaz bir sınırlama gösterir.

void CheckFile( string FileName )
{
  uchar Bytes[1];  
  
  FileName = "TempFolder\\" + FileName + "\\" + FileName + "\\" + FileName;
  Print(StringLen(FileName)); // 313

  Print(FileSave(FileName, Bytes)); //false
  Print(_LastError); // ERR_TOO_LONG_FILENAME (5003)
}

void OnStart()
{
  CheckFile("ExpertNameExpertName.EURUSDEURUSDEURUSD.M1.20210701.20211009.41.BAA0EE191CCD66EB8291EC4D6434A6C8.opt");
}

Lütfen dosya adının uzunluğunu çözün. Pratikte burayı kullanmalısınız.


Aşağıdaki fonksiyonlar uzun yollarla (MAX_PATH'den daha fazla) çalışmaya izin verir.

MTTESTER::FileSave
MTTESTER::FileLoad
MTTESTER::FileCopy
MTTESTER::FileMove
MTTESTER::FileIsExist


Standart fonksiyonu değiştirirseniz yukarıdaki örnek çalışacaktır.

Print(MTTESTER::FileSave(TerminalInfoString(TERMINAL_DATA_PATH) + "\\MQL5\\Files\\" + FileName, Bytes)); //true


Ayrıca alt klasörler de dahil olmak üzere maskeye göre dosyaların bir listesini almak için bir fonksiyon eklendi ( buna benzer).

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

void OnStart()
{
  string FileNames[];
  
  // Terminal klasöründeki tüm günlük dosyalarını al. Uzun yolları destekler (> MAX_PATH).
  MTTESTER::GetFileNames(FileNames, TerminalInfoString(TERMINAL_DATA_PATH) + "\\*.log");

  ArrayPrint(FileNames);
}


Standart fonksiyonlarda dosya yolu uzunluğu ile ilgili sınırlamalarla sık sık karşılaştım. Uygulamaya bakılırsa, standart fonksiyonlara uzun yollara sahip dosyalar için olası destek eklenmesi MQ tarafında basit görünüyor.

 
Kodda hata ayıklarken, önceki oturumla karışıklığı önlemek için genellikle etkin yazdırmalardan önce günlükleri temizlemeyi kullanırım.
#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/tr/code/26132

void OnStart()
{
  MTTESTER::TerminalJournalClear(); // Uzmanlar Günlüğünün Temizlenmesi.
  
  Print("First Print.");
}
 

Dosya adlarına ve içeriklerine ek bilgiler eklendi. Aksi takdirde ne zaman ve neyin başlatıldığını anlamak zordu (çok fazla otomatik hesaplama yapıyorum).

// bool MTTESTER::CheckInputs(const bool) tarafından oluşturulmuştur: https://www.mql5.com/tr/code/26132
// Bağlantı: https://www.mql5.com/ru/blogs/post/760770

// [Tester].
// Uzman=HelloWorld.ex5
// Sembol=EURUSD
// Dönem=M1
// FromDate=2024.11.04.
// Depozito=10000.0
// Para Birimi=EUR
// Kaldıraç=500
// ServerName=MetaQuotes-Demo
// [TesterInputs]

inRange1=3
; GroupName
inRange2=3



Artık bu verileri panoya kopyalayabilir (CTRL+C) ve Test Cihazının Ayarlar sekmesine (CTRL+V) aktarabilirsiniz. Bundan sonra alarm kombinasyonunun tek bir geçişini çalıştırın.

 
fxsaber #:
Kodda hata ayıklarken, önceki oturumla karışıklığı önlemek için genellikle etkin yazdırmalardan önce günlük temizlemeyi kullanırım.

İşlevin adı TerminalJournalClear, ancak günlüğü temizlemez, yalnızca Uzman sekmesini temizler.

 
Andrei Iakovlev #:

İşlev TerminalJournalClear olarak adlandırılır, ancak günlüğü temizlemez, yalnızca Uzman sekmesini temizler.

Terminolojik bir zorluk mu var? Uzmanlar sekmesinin temizlenmesi - komut dosyaları var. Günlükler sekmesi - Bunu düşünmemiştim.

 
Merhaba, MTTester.mqh kütüphanesinin 6 Haziran 2025 tarihli yeni 5100 derlemesiyle kullanımdan kaldırılıp kaldırılmadığını doğrulayabilecek biri var mı?
 
Muhammad Fahad #:
Merhaba, MTTester.mqh kütüphanesinin 6 Haziran 2025 tarihli yeni 5100 derlemesiyle kullanımdan kaldırılıp kaldırılmadığını doğrulayabilecek biri var mı?
'MTTester.mqh'
WinAPI.mqh                      
windef.mqh                      
winnt.mqh                       
fileapi.mqh                     
winbase.mqh                     
winuser.mqh                     
wingdi.mqh                      
winreg.mqh                      
handleapi.mqh                   
processthreadsapi.mqh                   
securitybaseapi.mqh                     
errhandlingapi.mqh                      
sysinfoapi.mqh                  
processenv.mqh                  
libloaderapi.mqh                        
memoryapi.mqh                   
0 errors, 0 warnings, 193 msec elapsed, cpu='X64 Regular'
 

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

Kütüphaneler: MultiTester

fxsaber, 2022.09.01 10:26 AM

Terminal LiveUpdate yönetimi.
// Terminal LiveUpdate durumunun değiştirilmesi.

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

void OnStart()
{
  const bool IsLiveUpdate = MTTESTER::IsTerminalLiveUpdate();
                     
  if (MessageBox("Current LiveUpdate - " + (IsLiveUpdate ? "ON" : "OFF") + ".\n\nWant to switch?",
                 "LiveUpdate Status", MB_YESNO) == IDYES)
   MessageBox("Current LiveUpdate - " + ((IsLiveUpdate ? !MTTESTER::TerminalLiveUpdateOFF() : MTTESTER::TerminalLiveUpdateON()) ? "ON." : "OFF."));
}

Güncellemelere izin vermemek için servis.

#property service

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

void OnStart()
{
  while (!IsStopped())
  {
    MTTESTER::TerminalLiveUpdateOFF();
    
    Sleep(5000);
  }
}

 
İyi günler. Kütüphane için çok teşekkür ederim! Lütfen bana kaba kuvvet optimizasyon kriterlerini nasıl uygulayacağımı söyleyebilir misiniz?
 
parameter convertion type 'short[260]' to 'ushort[] &' is not allowed	MTTester.mqh	135	39
   int user32::GetClassNameW(long,ushort&[],int)	winuser.mqh	1414	37
'ReadFile' - no one of the overloads can be applied to the function call	MTTester.mqh	1283	21
   in template 'int MTTESTER::FileLoad(const string,T&[])' specified with [T=short]	MTTester.mqh	1270	14
   see template instantiation 'MTTESTER::FileLoad<short>'	MTTester.mqh	1569	23
could be one of 3 function(s)	MTTester.mqh	1283	21
   int kernel32::ReadFile(long,ushort&[],uint,uint&,OVERLAPPED&)	fileapi.mqh	124	8
   int kernel32::ReadFile(long,ushort&[],uint,uint&,long)	fileapi.mqh	125	8
   int kernel32::ReadFile(long,uchar&[],uint,uint&,long)	MTTester.mqh	60	7
2 errors, 0 warnings		2	0
текущий MTTester.mqh не  проходит проверку при компиляции себя же самого в 5100

Bu güncellemede 2 farklı bilgisayarda - MultiTester

Güncelleme: 2025.06.06 08:04