程序库: 多功能测试仪 - 页 45

 

交易、自动交易系统和交易策略测试论坛

新版 MetaTrader 5 build 3081:改进 MQL5 服务并更新设计

fxsaber, 2021.10.15 12:33 pm

该脚本对文件名的长度显示了难以理解的限制,而在文件管理器中创建的文件名没有问题。

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

  Print(FileSave(FileName, Bytes)); //假
  Print(_LastError); // err_too_long_filename (5003)
}

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

请解决文件名长度问题。在实践中,您应该使用


以下函数可以处理长路径(超过 MAX_PATH)。

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


如果替换标准函数,上面的示例也能正常工作。

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


另外还添加了一个函数,用于按掩码获取文件列表,包括子文件夹(与 函数类似)。

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

void OnStart()
{
  string FileNames[];
  
  // 获取终端文件夹中的所有日志文件。支持长路径(> MAX_PATH)。
  MTTESTER::GetFileNames(FileNames, TerminalInfoString(TERMINAL_DATA_PATH) + "\\*.log");

  ArrayPrint(FileNames);
}


我经常在标准函数中遇到文件路径长度的限制。从实现情况来看,在标准函数中添加对长路径文件的支持在 MQ 方面似乎很简单。

 
在调试代码时,我经常会在主动打印之前清除日志,以避免与前一个会话混淆。
#include <fxsaber\MultiTester\MTTester.mqh> //https://www.mql5.com/zh/code/26132

void OnStart()
{
  MTTESTER::TerminalJournalClear(); // 清理专家期刊。
  
  Print("First Print.");
}
 

为文件名及其内容添加了附加信息。否则很难理解何时启动以及启动了什么(我做了很多自动计算)。

// 由 bool MTTESTER::CheckInputs(const bool) 生成:https://www.mql5.com/zh/code/26132
// 链接:https://www.mql5.com/ru/blogs/post/760770

// [Tester].
// Expert=HelloWorld.ex5
// 符号=欧元兑美元
// Period=M1
// FromDate=2024.11.04.
// 存款=10000.0
// 货币=欧元
// 杠杆=500
// ServerName=MetaQuotes-Demo
// [测试器输入]

inRange1=3
; GroupName
inRange2=3



现在,您可以将这些数据复制到剪贴板 (CTRL+C),然后传输到测试仪的 "设置 "选项卡 (CTRL+V)。然后运行一次警报组合。

 
fxsaber #:
在调试代码时,我经常在主动打印之前使用日志清除功能,以避免与上一个会话混淆。

该函数名为 TerminalJournalClear,但它不会清除日志 只会清除专家选项卡。

 
Andrei Iakovlev #:

该函数名为 TerminalJournalClear,但它不会清除 日志,只会清除 专家选项卡。

是否存在术语上的困难?清除专家选项卡--有脚本。日志选项卡--我还没想到。

 
您好,有谁能确认 MTTester.mqh 库是否已随着2025 年 6 月 6 日 新版 5100 的推出而过时
 
Muhammad Fahad #:
您好,有谁能确认 MTTester.mqh 库是否已随着2025 年 6 月 6 日 新版 5100 的推出而过时
'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'
 

关于交易、自动交易系统和测试交易策略的论坛

库:MultiTester

fxsaber, 2022.09.01 10:26 AM

终端 LiveUpdate 管理。
// 切换终端的 LiveUpdate 状态。

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

禁止更新的服务。

#property service

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

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

 
下午好非常感谢你提供的资料库!能告诉我如何实现强制优化标准 吗?
 
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

在两台不同的电脑上进行更新 - MultiTester

更新时间: 2025.06.06 08:04