Bibliotheken: MultiTester - Seite 45

 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Neue Version von MetaTrader 5 build 3081: Verbesserungen der MQL5-Dienste und aktualisiertes Design

fxsaber, 2021.10.15 12:33 Uhr

Das Skript zeigt eine unverständliche Begrenzung der Länge von Dateinamen, die ohne Probleme im Dateimanager erstellt werden.

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

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

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

Bitte lösen Sie die Länge des Dateinamens auf. In der Praxis sollten Sie hier verwenden.


Die folgenden Funktionen erlauben es, mit langen Pfaden (mehr als MAX_PATH) zu arbeiten.

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


Das obige Beispiel wird funktionieren, wenn Sie die Standardfunktion ersetzen.

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


Außerdem wurde eine Funktion hinzugefügt, die eine Liste von Dateien nach Maske ausgibt, einschließlich Unterordnern (ähnlich dieser Funktion).

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

void OnStart()
{
  string FileNames[];
  
  // Holt alle Protokolldateien im Terminalordner. Unterstützt lange Pfade (> MAX_PATH).
  MTTESTER::GetFileNames(FileNames, TerminalInfoString(TERMINAL_DATA_PATH) + "\\*.log");

  ArrayPrint(FileNames);
}


Ich bin oft auf Beschränkungen der Dateipfadlänge in Standardfunktionen gestoßen. Nach der Implementierung zu urteilen, scheint die Unterstützung von Dateien mit langen Pfaden in den Standardfunktionen von der MQ-Seite aus einfach zu sein.

 
Beim Debuggen von Code verwende ich oft das Löschen von Protokollen vor aktiven Ausdrucken, um Verwechslungen mit der vorherigen Sitzung zu vermeiden.
#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/de/code/26132

void OnStart()
{
  MTTESTER::TerminalJournalClear(); // Säuberung der Zeitschrift der Experten.
  
  Print("First Print.");
}
 

Zusätzliche Informationen zu den Dateinamen und deren Inhalt hinzugefügt. Sonst war es schwierig zu verstehen, wann und was gestartet wurde (ich mache viele automatische Berechnungen).

// Erzeugt von bool MTTESTER::CheckInputs(const bool): https://www.mql5.com/de/code/26132
// Link: https://www.mql5.com/ru/blogs/post/760770

// [Tester].
// Experte=HelloWorld.ex5
// Symbol=EURUSD
// Zeitraum=M1
// FromDate=2024.11.04.
// Einzahlung=10000.0
// Währung=EUR
// Hebelwirkung=500
// ServerName=MetaQuotes-Demo
// [TesterInputs]

inRange1=3
; GroupName
inRange2=3



Jetzt können Sie diese Daten in die Zwischenablage kopieren (CTRL+C) und in die Registerkarte Einstellungen (CTRL+V) des Testers übertragen. Danach führen Sie einen einzelnen Durchlauf der Alarmkombination durch.

 
fxsaber #:
Beim Debuggen von Code verwende ich oft die Funktion zum Löschen des Protokolls vor den aktiven Ausdrucken, um Verwechslungen mit der vorherigen Sitzung zu vermeiden.

Die Funktion heißt TerminalJournalClear, aber sie löscht nicht das Protokoll, sondern nur die Registerkarte Expert.

 
Andrei Iakovlev #:

Die Funktion heißt TerminalJournalClear, aber sie löscht nicht das Journal, sondern nur die Registerkarte Experte.

Gibt es eine terminologische Schwierigkeit? Löschen der Registerkarte Experten - dafür gibt es Skripte. Die Registerkarte Logs - daran habe ich nicht gedacht.

 
Hallo, kann jemand bestätigen, ob die MTTester.mqh-Bibliothek mit dem neuen 5100-Build-Push vom 6. Juni 2025 obsolet geworden ist ?
 
Muhammad Fahad #:
Hallo, kann jemand bestätigen, ob die MTTester.mqh-Bibliothek mit dem neuen 5100-Build-Push vom 6. Juni 2025 obsolet geworden ist ?
'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'
 

Forum zum Thema Handel, automatische Handelssysteme und Testen von Handelsstrategien

Bibliotheken: MultiTester

fxsaber, 2022.09.01 10:26 AM

Terminal LiveUpdate-Verwaltung.
// Umschalten des LiveUpdate-Status des Terminals.

#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/de/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."));
}

Dienst zum Verhindern von Updates.

#property service

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

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

 
Guten Tag! Herzlichen Dank für die Bibliothek! Könnten Sie mir bitte sagen, wie man Brute-Force-Optimierungskriterien implementiert?
 
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

Auf 2 verschiedenen Computern mit diesem Update - MultiTester

Aktualisiert: 2025.06.06 08:04