程序库: 多功能测试仪 - 页 56 1...4950515253545556575859 新评论 fxsaber 2026.01.23 20:43 #551 有时有必要以表格形式查看某些价格历史。可以通过 CTRL+U,选择 "Bars/Ticks(条形图/点数)"选项卡来实现。手工输入必要的时间间隔。这很繁琐。 因此,我创建了一个附加功能,下面的智能交易系统就演示了这一功能。 #include <fxsaber\MultiTester\MTTester.mqh> //https://www.mql5.com/zh/code/26132 #include <fxsaber\Keyboard\Keyboard.mqh> //https://www.mql5.com/zh/code/48393 input bool inTicks = true; // true - Ticks,false - Bars input int inBefore = -60; // 以秒为单位 input int inAfter = 60; // 秒后 input ENUM_TIMEFRAMES inPeriod = PERIOD_CURRENT; // 周期(条形模式) datetime GetTime( const int X ) { int Window; datetime Res; double Price; return(ChartXYToTimePrice(0, X, 0, Window, Res, Price) ? Res : 0); } void OnChartEvent( const int32_t id, const long &lparam, const double&, const string& ) { if ((id == CHARTEVENT_CLICK) && KEYBOARD::IsControl()) { const datetime Time = GetTime((int)lparam); if (Time) { if (inTicks) MTTESTER::CopyTicks(_Symbol, Time + inBefore, Time + inAfter); else MTTESTER::CopyRates(_Symbol, inPeriod, Time + inBefore, Time + inAfter); } } } 点击(按住 CTRL 键)图表的必要位置,就能立即自动获取相应的表格数据。 所选功能只需填写特定数据字段并进行查询。然后通过图形用户界面查看您感兴趣的内容。总的来说就是自动化。 hini 2026.01.24 01:17 #552 也许,编写一个结合各种便捷功能的 EA 工具会是一个不错的想法。 Aleksei Skrypnev 2026.01.26 07:22 #553 5430 在准备任务时,窗口仍会闪烁。 如何解决这个问题? fxsaber 2026.01.26 10:23 #554 Aleksei Skrypnev #:5430 准备作业时,Windows 仍会闪烁。如何解决这个问题?用这种方法。 Попробуйте загрузить все файлы в архиве. 2025.12.22www.mql5.com если бы время файлов в архиве совпадало со временем модификации в кодобазе. Не соответствует времени изменения конкретного файла. Я вижу корректную структуру после разархивирования а ведь сам редактор позволяет загрузить все эти файлы именно так Aleksei Skrypnev 2026.01.26 12:05 #555 fxsaber #: 因此。 这是一个很棒的主题。但我下载之前分别下载的一切仍然闪烁。 我看到在MultiTester_Example.mq5 文件中 添加行的 MultiTester_Example.mq5 文件。 #define FAKE // 删除 - 绕过 KB 中的代码。 #ifdef FAKE void OnStart() {} #else // #ifdef FAKE #endif // #ifdef FAKE #else 我是这样注释的,还是应该换一种方式?或者我可以删除所有这 4 行吗? //#define FAKE // 移除 - 旁路将代码放入 KB。 #ifdef FAKE// void OnStart() {} #else // #ifdef FAKE #endif // #ifdef FAKE #else 附注:我看到在没有这些行的情况下,我使用旧的任务列表时,它闪烁了一下。有了新的一行,它就不会闪烁了。 但我只注释掉了一行,这正确吗? hini 2026.01.26 12:21 #556 Aleksei Skrypnev #:这是一个很棒的主题。但我在下载之前分别下载的所有内容仍然闪烁。我在MultiTester_Example.mq5 文件中看到了这一点添加了几行我是这样注释的,还是应该换一种注释方式?或者我可以删除所有这 4 行吗?附注:我看到我拿的旧任务列表没有这几行,它在闪烁。有了新行后就不闪了。但我是否只正确注释了一行? 您的理解是正确的:删除注释或完全删除这 4 行。 klycko 2026.02.19 04:41 #557 日安,亲爱的 fxsaber!请帮我解决一个问题。我的脚本有一个存档函数,是在伟大的 MTTESTER 库的帮助下开发的。它将 Settin 写入 Tester 文件夹,行文如下:if(!kernel32::CopyFileW(SrcPath,DstPath,false)) // Overwrite Settin from the Files sandbox to the Tester folder。我们会得到一个名为 "归档后 "的集合。但显然由于编码的原因,它不适合进一步修改。不过,如果在策略测试器中 手动将其写入机器人,然后以 "手动写入机器人并保存后 "的名称保存,那么这组数据就已经合适了。而且,这不仅仅是改头换面的问题,而是另有隐情。我向铁人们(Qwen、Deep Seek)求助,他们生成了一个脚本 "ReloadSetsFromCommonFixed"。它有很多很棒的功能,而且能正常工作,除了这一行:if(!FileCopy(source_path, FILE_COMMON, dest_path, FILE_COMMON))文件集被复制了,但在验证打印输出时,输出却是 abracadabra,这显然是编码造成的。Iron 提供了 4 种解决方案,但没有一种奏效(文本中有所有的解决方案)。我最后的希望是皮革的。有没有办法修改存档函数中的这一行:if(!kernel32::CopyFileW(SrcPath,DstPath,false)),以模拟手动写入机器人,然后以 "手动写入机器人并保存后 "的格式保存?亚历山大 附加的文件: 6h9i87_egjqcjee9.txt 2 kb r7tzr_e8qlujiki.set 4 kb fxkq8_2e39t5_nbbwbc_b_lta9rn_4_ov8a8podd1.set 7 kb ReloadSetsFromCommonFixed.txt 20 kb Libraries: MultiTester 交易者的 LifeHack: 四次回测比一次好 MQL5 程序 - 测试交易策略 fxsaber 2026.02.19 07:27 #558 klycko #: 是否有办法更改存档功能中的这一行? 我在这里(在打开的窗口中按地址栏中的 ENTER 键)查看了设置记录。很可能需要这些标志。 FileOpen(FileName, FILE_WRITE | FILE_UNICODE | FILE_TXT); klycko 2026.02.19 09:54 #559 这些标记帮了大忙,归档问题也迎刃而解。现在结果格式正确了。 非常感谢你们! 但在我的脚本 Nocturne 中,该命令不能正常工作 : prWrite0 = MTTESTER::SetSettings2(Settings); // 将设置写入机器人 虽然命令执行后,prWrite0 = true。 从文件夹中读取设置时,可能又是标志的问题。 这可以通过 GetKthFileContent 函数来实现,该函数中包含以下内容 int handle = FileOpen(full_path, FILE_READ | FILE_WRITE |FILE_UNICODE| FILE_TXT | FILE_COMMON); 下面一行的变体也不起作用: // int handle = FileOpen(full_path, FILE_READ | FILE_TXT | FILE_COMMON); // 源 变体 行 // int handle = FileOpen(full_path, FILE_READ | FILE_UNICODE | FILE_TXT | FILE_COMMON); 下一条命令: prRead0 = MTTESTER::GetSettings(Control); // 读取刚刚安装的机器人设置。 这条命令运行正常,执行后 prRead0 = true。 但在控制网络中,prMFI=true,因为它最初是手动加载到机器人中的。这意味着,尽管写入符号 prWrite0 = true,但写入机器人的操作实际上并没有发生。 在原始网络中,prHEX=true 在机器人的原始网络中,prMFI=true MTTESTER::SetSettings2(设置)命令正常运行,但这些设置并没有出现在机器人中。 问题出在哪里? 亚历山大 附加的文件: Nocturne.mq5 79 kb u2l_pm0k140_7b510u4qy67_u_2jwbto_MFI.set 7 kb ovt_40a_khzbg3djdg8_4zm7o2_l_14vulv_HEX-449.set 7 kb fxsaber 2026.02.19 21:32 #560 klycko #:那么问题出在哪里呢? 我懒得研究标志,决定写一段代码来保存和加载测试仪的设置文件。 // 加载/保存测试仪的设置文件。 #property script_show_inputs input bool inLoad = true; // 载入/保存设置 - 真/假 #include <fxsaber\MultiTester\MTTester.mqh> //https://www.mql5.com/zh/code/26132 void OnStart() { const string FileName = __FILE__ + ".set"; string Settings; ushort Words[]; if (inLoad) // 载入设置。 { Print("Load: " + (string)FileLoad(FileName, Words)); Settings = ShortArrayToString(Words, 1); // 1 - 统一码 Print(MTTESTER::SetSettings(Settings)); } else if (MTTESTER::GetSettings(Settings)) // 保存设置。 { Words[ArrayResize(Words, 1) - 1] = 0xFEFF; // 1 - 统一码 StringToShortArray(Settings, Words, ArraySize(Words)); Print("Save: " + (FileSave(FileName, Words) ? (string)ArraySize(Words) : "error")); } } 你可以通过脚本保存(inLoad = false)一个集合文件,然后手工修改其中的某些内容,并通过脚本将其加载(inLoad = true)到测试器中。 如果成功了,就可以自己获取相应的源文件。 1...4950515253545556575859 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
有时有必要以表格形式查看某些价格历史。可以通过 CTRL+U,选择 "Bars/Ticks(条形图/点数)"选项卡来实现。手工输入必要的时间间隔。这很繁琐。
因此,我创建了一个附加功能,下面的智能交易系统就演示了这一功能。
点击(按住 CTRL 键)图表的必要位置,就能立即自动获取相应的表格数据。
所选功能只需填写特定数据字段并进行查询。然后通过图形用户界面查看您感兴趣的内容。总的来说就是自动化。
5430 在准备任务时,窗口仍会闪烁。
如何解决这个问题?
5430 准备作业时,Windows 仍会闪烁。
如何解决这个问题?
因此。
这是一个很棒的主题。但我下载之前分别下载的一切仍然闪烁。
我看到在MultiTester_Example.mq5 文件中
添加行的 MultiTester_Example.mq5 文件。
我是这样注释的,还是应该换一种方式?或者我可以删除所有这 4 行吗?
附注:我看到在没有这些行的情况下,我使用旧的任务列表时,它闪烁了一下。有了新的一行,它就不会闪烁了。
但我只注释掉了一行,这正确吗?
这是一个很棒的主题。但我在下载之前分别下载的所有内容仍然闪烁。
我在MultiTester_Example.mq5 文件中看到了这一点
添加了几行
我是这样注释的,还是应该换一种注释方式?或者我可以删除所有这 4 行吗?
附注:我看到我拿的旧任务列表没有这几行,它在闪烁。有了新行后就不闪了。
但我是否只正确注释了一行?
是否有办法更改存档功能中的这一行?
我在这里(在打开的窗口中按地址栏中的 ENTER 键)查看了设置记录。很可能需要这些标志。
这些标记帮了大忙,归档问题也迎刃而解。现在结果格式正确了。
非常感谢你们!
但在我的脚本 Nocturne 中,该命令不能正常工作 :
prWrite0 = MTTESTER::SetSettings2(Settings); // 将设置写入机器人
虽然命令执行后,prWrite0 = true。
从文件夹中读取设置时,可能又是标志的问题。
这可以通过 GetKthFileContent 函数来实现,该函数中包含以下内容
int handle = FileOpen(full_path, FILE_READ | FILE_WRITE |FILE_UNICODE| FILE_TXT | FILE_COMMON);
下面一行的变体也不起作用:
// int handle = FileOpen(full_path, FILE_READ | FILE_TXT | FILE_COMMON); // 源 变体 行
// int handle = FileOpen(full_path, FILE_READ | FILE_UNICODE | FILE_TXT | FILE_COMMON);
下一条命令:
prRead0 = MTTESTER::GetSettings(Control); // 读取刚刚安装的机器人设置。
这条命令运行正常,执行后 prRead0 = true。
但在控制网络中,prMFI=true,因为它最初是手动加载到机器人中的。这意味着,尽管写入符号 prWrite0 = true,但写入机器人的操作实际上并没有发生。
在原始网络中,prHEX=true
在机器人的原始网络中,prMFI=true
MTTESTER::SetSettings2(设置)命令正常运行,但这些设置并没有出现在机器人中。
问题出在哪里?
亚历山大
那么问题出在哪里呢?
我懒得研究标志,决定写一段代码来保存和加载测试仪的设置文件。
你可以通过脚本保存(inLoad = false)一个集合文件,然后手工修改其中的某些内容,并通过脚本将其加载(inLoad = true)到测试器中。
如果成功了,就可以自己获取相应的源文件。