程序库: 多功能测试仪 - 页 9 12345678910111213141516...53 新评论 fxsaber 2019.11.12 11:47 #81 fxsaber:现在,您可以完全自由地将测试仪自动化。 实际应用示例之一(所有操作均自动完成) 提取所有符号,并对每个符号执行以下步骤。 开始优化。 在最佳通过结束时,获取数据并从中形成(输入参数设置范围)多个优化任务。 执行第 3 项中的所有优化任务。 从第 4 项的所有优化中提取最佳通过,并保存为组合交易集。 结果证明,这是一个非常强大的市场扫描器和 TS 调整器。此类操作不需要 TC 源。 fxsaber 2019.11.12 18:01 #82 // 向测试仪加载 Set-file 的示例。 #property script_show_inputs #include <fxsaber\MultiTester\MTTester.mqh> //https://www.mql5.com/zh/code/26132 input string inFileName = "SetFile.set"; // 设置文件 string FileToString( const string FileName ) { ushort Buffer[]; return(FileLoad(FileName, Buffer) ? ShortArrayToString(Buffer) : NULL); } void OnStart() { MTTESTER::SetSettings("[TesterInputs]\n" + FileToString(inFileName)); } 与测试仪的 ini 文件类似。 Edgar Akhmadeev 2019.11.12 23:12 #83 谢谢 fxsaber 2019.11.13 15:44 #84 该库已针对 MT5 build2209+ 进行了更新。 fxsaber 2019.11.13 16:00 #85 fxsaber:事实证明,它是一个非常强大的市场扫描器和 TS 调整器。 #property script_show_inputs #include <fxsaber\MultiTester\MultiTester.mqh> //https://www.mql5.com/zh/code/26132 #include <fxsaber\MultiTester\Task.mqh> input bool OnlyCustomSymbols = true; // 仅限自定义字符 input bool AllSymbols = false; // 所有字符或当前字符 void Add( const string SymbName ) { TesterSettings.Add(NULL, SymbName, 0, 0, 0, TASK::InitBase, TASK::DeinitBase); for (int i = 0; i < ::inAmount; i++) TesterSettings.Add(NULL, NULL, 0, 0, 0, TASK::InitSub, TASK::DeinitSub); } // 该函数负责生成任务列表。 void SetTesterSettings() { if (AllSymbols) // 从市场观察中搜索所有符号。 for (int i = SymbolsTotal(true) - 1; i >= 0; i--) { const string Name = SymbolName(i, true); if (!OnlyCustomSymbols || SymbolInfoInteger(Name, SYMBOL_CUSTOM)) Add(Name); } else if (!OnlyCustomSymbols || SymbolInfoInteger(_Symbol, SYMBOL_CUSTOM)) Add(_Symbol); } 智能交易系统应具备 sinput int inMinTrades = 500; // 最少交易次数(头寸)。 sinput int inMaxTrades = 90000; // 交易(头寸)的最大数量。 double OnTester() { return(((TesterStatistics(STAT_TRADES) >= inMinTrades) && (TesterStatistics(STAT_TRADES) <= inMaxTrades)) ? TesterStatistics(STAT_PROFIT) : 0); } fxsaber 2019.11.17 23:22 #86 绕过了几个陷阱。已更新。 traveller00 2019.11.18 12:13 #87 我不知道以前的版本。但最新版本可以对同一仪器进行多次测试。 日志中会出现 "完成"(Done),然后为空(不出现 "开始"(Start)),同时终端又开始了新的测试。似乎是 else if (IsRun = (Init = TesterSettings.Init(Pos))&& TesterSettings.Run(Pos)) 返回 false,因为 TesterSettings.Run(Pos) 返回 false。在下一次定时器计时时,if (MTTESTER::IsReady()) 将返回 false,这将使它循环等待。TesterSettings.Run(Pos))本身返回 false,这似乎是因为超时的缘故,即它只是不等待并退出。 fxsaber 2019.11.18 12:24 #88 traveller00: TesterSettings.Run(Pos))返回 false 似乎是超时导致的微不足道的错误,即不等待就退出。 如果是这样,请尝试增加这个数字 static bool ClickStart( const bool Check = true, const int Attempts = 5 ) 我从未遇到过 "开始 "按钮在按下很长时间后没有变成 "停止 "按钮的情况。 我在 Example3 中运行了 100 个字符,一切正常。 traveller00 2019.11.18 12:27 #89 是的,我自己就是这么做的,我把它增加到了 50。但这只是为了防止其他人遇到类似问题,或者想在通用版本中进行调整。 fxsaber 2019.11.18 12:30 #90 traveller00: 是的,我自己就是这么做的,我把它增加到了 50。但为了防止其他人遇到类似的问题,或者想在通用版本中进行调整,我建议您 记录更改按钮状态的尝试次数。有趣的结果。 ZY 也许这个错误 仍然存在。 12345678910111213141516...53 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
现在,您可以完全自由地将测试仪自动化。
实际应用示例之一(所有操作均自动完成)
结果证明,这是一个非常强大的市场扫描器和 TS 调整器。此类操作不需要 TC 源。
事实证明,它是一个非常强大的市场扫描器和 TS 调整器。
智能交易系统应具备
我不知道以前的版本。但最新版本可以对同一仪器进行多次测试。
日志中会出现 "完成"(Done),然后为空(不出现 "开始"(Start)),同时终端又开始了新的测试。似乎是 else if (IsRun = (Init = TesterSettings.Init(Pos))&& TesterSettings.Run(Pos)) 返回 false,因为 TesterSettings.Run(Pos) 返回 false。在下一次定时器计时时,if (MTTESTER::IsReady()) 将返回 false,这将使它循环等待。TesterSettings.Run(Pos))本身返回 false,这似乎是因为超时的缘故,即它只是不等待并退出。
traveller00:
TesterSettings.Run(Pos))返回 false 似乎是超时导致的微不足道的错误,即不等待就退出。
如果是这样,请尝试增加这个数字
我从未遇到过 "开始 "按钮在按下很长时间后没有变成 "停止 "按钮的情况。
我在 Example3 中运行了 100 个字符,一切正常。
是的,我自己就是这么做的,我把它增加到了 50。但为了防止其他人遇到类似的问题,或者想在通用版本中进行调整,我建议您
记录更改按钮状态的尝试次数。有趣的结果。
ZY 也许这个错误 仍然存在。