文章 "连续前行优化 (第八部分): 程序改进和修复" - 页 3 123 新评论 Andrey Azatskiy 2020.10.12 11:19 #21 fxsaber: 我请求作者录制一段视频,展示这个项目的不同用途。 如果您有时间的话。但总的来说,您的要求有点出乎我的意料,因为从第一篇文章开始,您就看到了我发表的文章(虽然可能并没有全部关注)。 Franco87 2021.01.14 16:49 #22 您好、 这个项目太棒了,非常感谢 。 我在编译DealHistoryGetter.mqh 时 遇到一个问题,错误信息是: "calcContracts" - 成员函数 未定义 ,第 488 行。 再次感谢您。 Franco87 2021.01.14 16:53 #23 您好、 这个项目太棒了,非常感谢 。 我在编译DealHistoryGetter.mqh 时 遇到一个问题 , 错误信息是: " calcContracts" - 成员函数 未定义 ,第 488 行 。 再次感谢您。 Documentation on MQL5: Constants, Enumerations and Structures / Named Constants / Predefined Macro Substitutions www.mql5.com Predefined Macro Substitutions - Named Constants - Constants, Enumerations and Structures - MQL5 Reference - Reference on algorithmic/automated trading language for MetaTrader 5 Andrey Azatskiy 2021.01.15 12:29 #24 Franco87:你好了不起的项目,非常感谢 。我在编译DealHistoryGetter.mqh 时 遇到一个问题 , 错误信息是: " calcContracts" - 成员函数 未定义 ,第 488 行 。再次感谢您。 你好,我最近编译了使用该文件的专家程序,一切正常。 EDUARDO RODRIGUES NASCIMENTO 2022.04.27 21:21 #25 如果我编译您从专家顾问发送的名为 "新上传变体 "的 .mq5 文件,就会出现很多错误,如下图所示。我刚刚下载了最新发布的版本(第 8 篇文章)。 我该如何解决这个问题? Good Beer 2023.05.14 19:27 #26 你好,安德烈。我决定重返寻找圣杯的旅程,很高兴发现您的优化器已投入使用并最终定稿。完全建立在 Mql5 基础上的解决方案对作者的支持要求很高,结果出了问题。只要有 C#,您的优化器就能正常工作,MT5 中的策略测试窗口将保持不变。奇怪的是,没有大众对前向优化的 需求。无论如何,非常感谢你们的辛勤工作! 测试仪已经在工作了,但我还是想表达一些愿望。 1. 我希望在有结果的表头有带解释的工具提示。什么是:var 90、var 95、mx.... 2. "结果 "选项卡窗口 1 和 3 中的 PL 和 DD 值不匹配。 3. OnTester()函数没有编译,因为它是在优化器文件中定义的,所以完全自定义的标准被取消了。 4. 没有平衡图表怎么行?没有平衡图表怎么行?您可以将所有前锋粘合在一起,在测试仪上运行,或者在优化器窗口中显示粗略图表,以评估 EA 是否值得继续浪费时间。至少,优化器应该显示所有前向传递的最终结果。 5. 以点为单位计算利润是必要的。特别是考虑到测试器如何使用加密货币。添加一个复选框。 6.最后,我想梦想一下添加多个 TF 的可能性。类似于添加多个资产的可能性。 好吧,还有很多很多钱....。 100 个最佳优化递次(第 1 部分)。 Andrey Azatskiy 2023.06.08 22:44 #27 Good Beer 优化的 需求。无论如何,非常感谢你们的劳动! 测试仪已经在工作了,但我还是要表达一些愿望。 1. 我希望在有结果的表头有带解释的工具提示。什么是:var 90、var 95、mx.... 2. "结果 "选项卡窗口 1 和 3 中的 PL 和 DD 值不匹配。 3. OnTester()函数没有编译,因为它是在优化器文件中定义的,所以完全自定义的标准被取消了。 4. 没有平衡图表怎么行?没有平衡图表怎么行?您可以将所有前锋粘合在一起,在测试仪上运行,或者在优化器窗口中显示粗略图表,以评估 EA 是否值得继续浪费时间。至少,优化器应该显示所有前向传递的最终结果。 5. 以点为单位计算利润是必要的。特别是考虑到测试器如何使用加密货币。添加一个复选框。 6.最后,我想梦想一下添加多个 TF 的可能性。类似于添加多个资产的可能性。 好吧,还有很多很多钱....。 感谢您的反馈,我不支持这个项目,但它应该可以长期运行。 如果有人想完善、调整这个项目--那就去做)https://github.com/AndreyKrivcov/MetaTrader-Auto-Optimiser。 GitHub - AndreyKrivcov/MetaTrader-Auto-Optimiser AndreyKrivcovgithub.com Experts mast use class CAutoUploader (CustomInclude/History manager/AutoLoader.mqh) Artyom Trishkin 2023.06.09 19:08 #28 EDUARDO RODRIGUES NASCIMENTO #: 如果我编译您从专家顾问发送的名为 "新上传变体 "的 .mq5 文件,就会出现很多错误,如下图所示。我刚刚下载了最新发布的版本(第 8 篇文章)。 我该如何解决这个问题? 致 谢 那么。下载文章所附的压缩包,查看其中的两个文件夹: So.我们下载了文章所附的压缩包,看到其中有两个文件夹: 将存档中的 MetaTrader-Auto-Optimiser 文件夹移至 MetaTrader 5 所在的根目录: 将存档中的 MetaTrader-Auto-Optimiser 文件夹移至 MetaTrader 5 所在的根目录: 存档中的 MQL5 文件夹中有两个文件夹 - 将其复制到终端的 MQL5 文件夹中。相应地,测试专家文件夹将复制到 MQL5 文件夹,两个文件夹:CustomGeneric 和 History manager 将复制到 MQL5 文件夹。 在 Experts\Test Expert\New 上传变体文件夹中编译 SimpleMA.mq5 文件: 存档中有两个文件夹,位于 MQL5 文件夹中 - 将它们复制到您终端的 MQL5 文件夹中。 编译位于 Experts\Test Expert\New uploading variant 文件夹中的 SimpleMA.mq5 文件: 我们得到 100 个错误和 60 个警告: 我们得到 100 个错误和 60 个警告: 让我们继续处理第一个错误,看看它是不是一个封闭的导入: 我们继续查看第一个错误,发现这不是一个关闭的导入: 双击关于该错误的说明,并在出现错误的一行找到文件 UploadersEntities.mqh: 双击有关该错误的说明,并进入有该错误行的 UploadersEntities.mqh 文件: 我们看到了什么?我们看到确实没有关闭导入。让我们修复 它: 我们看到了什么?And we see really not closed import.我们修复 它: //+------------------------------------------------------------------+ //|上传者实体。mqh //| Copyright 2020, MetaQuotes Software Corp. //|https://www.mql5.com || //+------------------------------------------------------------------+ #property copyright "Copyright 2020, MetaQuotes Software Corp." #property link "https://www.mql5.com" #include "ReportCreator.mqh" #import "ReportManager.dll" #import //+------------------------------------------------------------------+ //| 存储输入参数数据的结构 //+------------------------------------------------------------------+ struct BotParams { string name,value; }; // 为动态数组添加新值 #define ADD_TO_ARR(arr, value) \ {\ int s = ArraySize(arr);\ ArrayResize(arr,s+1,s+1);\ arr[s] = value;\ } // 在动态参数数组中添加一个新的机器人参数 #define APPEND_BOT_PARAM(Var,BotParamArr) \ {\ BotParams param;\ param.name = #Var;\ param.value = (string)Var;\ \ ADD_TO_ARR(BotParamArr,param);\ } //+------------------------------------------------------------------+ //| 复制数组列表的函数 //+------------------------------------------------------------------+ void CopyBotParams(BotParams &dest[], const BotParams &src[]) { int total = ArraySize(src); for(int i=0; i<total; i++) { ADD_TO_ARR(dest,src[i]); } } //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ double GetAverageCoef(CoefChartType type, CReportCreator &report_manager) { CoefChart_item coef_chart[]; report_manager.GetCoefChart(false,type,coef_chart); double ans= 0; int total = ArraySize(coef_chart); for(int i=0; i<total; i++) ans+=coef_chart[i].coef; ArrayFree(coef_chart); return (ans/(double)total); } //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ string get_path_to_expert(void) { string arr[]; StringSplit(MQLInfoString(MQL_PROGRAM_PATH),'\\',arr); string relative_dir=NULL; int total= ArraySize(arr); bool save= false; for(int i=0; i<total; i++) { if(save) { if(relative_dir== NULL) relative_dir=arr[i]; else relative_dir+="\\"+arr[i]; } if(StringCompare("Experts",arr[i])==0) save=true; } return relative_dir; } //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ typedef void(*TCallback)(); typedef double(*TCustomFilter)(); typedef int (*TOnTesterInit)(); //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ void EmptyCallback() {} //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ double EmptyCustomCoefCallback() {return 0;} //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ int EmptyOnTesterInit() {return(INIT_SUCCEEDED);} enum ENUM_CALLBACK_TYPE { CB_ON_TICK, CB_ON_TESTER_DEINIT }; struct Data { int tf, // ReportItem.TF laverage, // ReportReader.Laverage totalTrades, // ReportItem.OptimisationCoefficients.TotalTrades totalProfitTrades, // ReportItem.OptimisationCoefficients.MaxPLDD.Profit.TotalTrades totalLooseTrades, // ReportItem.OptimisationCoefficients.MaxPLDD.DD.TotalTrades consecutiveWins, // ReportItem.OptimisationCoefficients.MaxPLDD.Profit.ConsecutivesTrades consequtiveLoose, // ReportItem.OptimisationCoefficients.MaxPLDD.DD.ConsecutivesTrades numberProfitTrades_mn, // ReportItem.OptimisationCoefficients.TradingDays[Mn].Profit.Trades numberProfitTrades_tu, // ReportItem.OptimisationCoefficients.TradingDays[Tu].Profit.Trades numberProfitTrades_we, // ReportItem.OptimisationCoefficients.TradingDays[We].Profit.Trades numberProfitTrades_th, // ReportItem.OptimisationCoefficients.TradingDays[Th].Profit.Trades numberProfitTrades_fr, // ReportItem.OptimisationCoefficients.TradingDays[Fr].Profit.Trades numberLooseTrades_mn, // ReportItem.OptimisationCoefficients.TradingDays[Mn].DD.Trades numberLooseTrades_tu, // ReportItem.OptimisationCoefficients.TradingDays[Tu].DD.Trades numberLooseTrades_we, // ReportItem.OptimisationCoefficients.TradingDays[We].DD.Trades numberLooseTrades_th, // ReportItem.OptimisationCoefficients.TradingDays[Th].DD.Trades numberLooseTrades_fr; // ReportItem.OptimisationCoefficients.TradingDays[Fr].DD.Trades ulong startDT, // ReportItem.DateBorders.From finishDT; // ReportItem.DateBorders.Till double payoff, // ReportItem.OptimisationCoefficients.Payoff profitFactor, // ReportItem.OptimisationCoefficients.ProfitFactor averageProfitFactor, // ReportItem.OptimisationCoefficients.AverageProfitFactor recoveryFactor, // ReportItem.OptimisationCoefficients.RecoveryFactor averageRecoveryFactor, // ReportItem.OptimisationCoefficients.AverageRecoveryFactor pl, // ReportItem.OptimisationCoefficients.PL dd, // ReportItem.OptimisationCoefficients.DD altmanZScore, // ReportItem.OptimisationCoefficients.AltmanZScore var_90, // ReportItem.OptimisationCoefficients.VaR.Q_90 var_95, // ReportItem.OptimisationCoefficients.VaR.Q_95 var_99, // ReportItem.OptimisationCoefficients.VaR.Q_99 mx, // ReportItem.OptimisationCoefficients.VaR.Mx std, // ReportItem.OptimisationCoefficients.VaR.Std max_profit, // ReportItem.OptimisationCoefficients.MaxPLDD.Profit.Value max_dd, // ReportItem.OptimisationCoefficients.MaxPLDD.DD.Value averagePl_mn, // ReportItem.OptimisationCoefficients.TradingDays[Mn].Profit.Value averagePl_tu, // ReportItem.OptimisationCoefficients.TradingDays[Tu].Profit.Value averagePl_we, // ReportItem.OptimisationCoefficients.TradingDays[We].Profit.Value averagePl_th, // ReportItem.OptimisationCoefficients.TradingDays[Th].Profit.Value averagePl_fr, // ReportItem.OptimisationCoefficients.TradingDays[Fr].Profit.Value averageDd_mn, // ReportItem.OptimisationCoefficients.TradingDays[Mn].DD.Value averageDd_tu, // ReportItem.OptimisationCoefficients.TradingDays[Tu].DD.Value averageDd_we, // ReportItem.OptimisationCoefficients.TradingDays[We].DD.Value averageDd_th, // ReportItem.OptimisationCoefficients.TradingDays[Th].DD.Value averageDd_fr, // ReportItem.OptimisationCoefficients.TradingDays[Fr].DD.Value balance; // ReportReader.Balance char currency[100]; }; //+------------------------------------------------------------------+ 再次编译。导入错误消失了,但现在编译器看不到导入文件中的函数和方法: 再次编译。导入错误消失了,但现在编译器看不到导入文件中的函数和方法: 请记住,我们是从第三方 dll 中导入方法和类的。它应该位于 MQL5/Libraries 文件夹中。 打开从压缩包复制到 MetaTrader 5 根目录下的 MetaTrader-Auto-Optimiser 文件夹。我们可以在其中看到 Metatrader Auto Optimiser.sln 文件: 我们记得,我们是从第三方 dll 中导入方法和类的。 打开从压缩包复制到 MetaTrader 5 根目录的 MetaTrader-Auto-Optimiser 文件夹。我们会在其中看到 Metatrader Auto Optimiser.sln 文件: 双击该文件,在 MS Visual Studio 中打开项目。 打开该项目后,我们会发现它适用于过时的平台: 双击该文件,在 MS Visual Studio 中打开项目。 打开项目时,我们会发现它适用于过时的平台: 选中 "将目标升级到 .NET Framefork 4.8 平台 "复选框,然后点击 "继续 "按钮。 然后再查看第二个项目: 保留 "将目标升级到 .NET Framefork 4.8 平台 "复选框,然后单击 "继续 "按钮。,然后再次加载第二个项目: 加载项目后,选择 "Release(发布)",然后选择 "Any CPU": 加载项目后,选择 "Release"(发布)和 Any CPU: 然后按 Ctrl+F5 来编译和构建项目。 在 MS Visual Studio 中编译完项目后,转到终端的根目录,并在其中的 \MetaTrader-AutoOptimiser\ReportManager\bin\Release 文件夹中。将该文件夹中已构建的 ReportManager.dll 库文件复制到终端的 MQL5/Libraries 目录中。 现在再次编译 MQL5\Experts\Test Expert\New uploading variant 文件夹中的 SimpleMA.mq5 文件。 完成,没有错误: 然后按 Ctrl+F5 来编译和构建项目。 在 MS Visual Studio 中编译项目后,转到终端的根目录,并在其中转到 \MetaTrader-Auto-Optimiser\ReportManager\bin\Release 文件夹。 现在让我们再次从 MQL5\Experts\Test Expert\New uploading variant 文件夹中编译 SimpleMA.mq5 文件。 完成,没有错误: 尽情享受 附加的文件: UploadersEntities.mqh 16 kb 连续前行优化 (第八部分): 程序改进和修复 Rashid Umarov 2023.06.12 12:21 #29 Artyom Trishkin #:那么。下载文章所附的压缩包,可以看到其中有两个文件夹:所以。我们下载文章所附的存档,看到其中有两个文件夹:将存档中的 MetaTrader-Auto-Optimiser 文件夹转移到 MetaTrader 5 所在的根目录下:将存档中的 MetaTrader-Auto-Optimiser 文件夹移至 MetaTrader 5 所在的根目录:存档中的 MQL5 文件夹中有两个文件夹 - 将其复制到终端的 MQL5 文件夹中。相应地,测试专家文件夹将复制到 MQL5 文件夹,两个文件夹:CustomGeneric 和 History Manager 将复制到 MQL5 文件夹。编译位于 Experts\Test Expert\New 上传变体文件夹中的 SimpleMA.mq5 文件:存档中有两个文件夹,位于 MQL5 文件夹中 - 将它们复制到终端的 MQL5 文件夹中。 编译位于 Experts\Test Expert\New uploading variant 文件夹中的 SimpleMA.mq5 文件:我们得到 100 个错误和 60 个警告:我们得到 100 个错误和 60 个警告: 查看第一个错误,发现它不是一个封闭的导入:让我们继续查看第一个错误,看看这是不是一个封闭的导入: 谢谢,更新了文章所附的来源 123 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我请求作者录制一段视频,展示这个项目的不同用途。
如果您有时间的话。但总的来说,您的要求有点出乎我的意料,因为从第一篇文章开始,您就看到了我发表的文章(虽然可能并没有全部关注)。
您好、
这个项目太棒了,非常感谢 。
我在编译DealHistoryGetter.mqh 时 遇到一个问题,错误信息是: "calcContracts" - 成员函数 未定义 ,第 488 行。
再次感谢您。
您好、
这个项目太棒了,非常感谢 。
我在编译DealHistoryGetter.mqh 时 遇到一个问题 , 错误信息是: " calcContracts" - 成员函数 未定义 ,第 488 行 。
再次感谢您。
你好
了不起的项目,非常感谢 。
我在编译DealHistoryGetter.mqh 时 遇到一个问题 , 错误信息是: " calcContracts" - 成员函数 未定义 ,第 488 行 。
再次感谢您。
你好,我最近编译了使用该文件的专家程序,一切正常。
我该如何解决这个问题?
你好,安德烈。我决定重返寻找圣杯的旅程,很高兴发现您的优化器已投入使用并最终定稿。完全建立在 Mql5 基础上的解决方案对作者的支持要求很高,结果出了问题。只要有 C#,您的优化器就能正常工作,MT5 中的策略测试窗口将保持不变。奇怪的是,没有大众对前向优化的 需求。无论如何,非常感谢你们的辛勤工作!
测试仪已经在工作了,但我还是想表达一些愿望。
1. 我希望在有结果的表头有带解释的工具提示。什么是:var 90、var 95、mx....
2. "结果 "选项卡窗口 1 和 3 中的 PL 和 DD 值不匹配。
3. OnTester()函数没有编译,因为它是在优化器文件中定义的,所以完全自定义的标准被取消了。
4. 没有平衡图表怎么行?没有平衡图表怎么行?您可以将所有前锋粘合在一起,在测试仪上运行,或者在优化器窗口中显示粗略图表,以评估 EA 是否值得继续浪费时间。至少,优化器应该显示所有前向传递的最终结果。
5. 以点为单位计算利润是必要的。特别是考虑到测试器如何使用加密货币。添加一个复选框。
6.最后,我想梦想一下添加多个 TF 的可能性。类似于添加多个资产的可能性。
好吧,还有很多很多钱....。
测试仪已经在工作了,但我还是要表达一些愿望。
1. 我希望在有结果的表头有带解释的工具提示。什么是:var 90、var 95、mx....
2. "结果 "选项卡窗口 1 和 3 中的 PL 和 DD 值不匹配。
3. OnTester()函数没有编译,因为它是在优化器文件中定义的,所以完全自定义的标准被取消了。
4. 没有平衡图表怎么行?没有平衡图表怎么行?您可以将所有前锋粘合在一起,在测试仪上运行,或者在优化器窗口中显示粗略图表,以评估 EA 是否值得继续浪费时间。至少,优化器应该显示所有前向传递的最终结果。
5. 以点为单位计算利润是必要的。特别是考虑到测试器如何使用加密货币。添加一个复选框。
6.最后,我想梦想一下添加多个 TF 的可能性。类似于添加多个资产的可能性。
好吧,还有很多很多钱....。
感谢您的反馈,我不支持这个项目,但它应该可以长期运行。
如果有人想完善、调整这个项目--那就去做)
https://github.com/AndreyKrivcov/MetaTrader-Auto-Optimiser。
如果我编译您从专家顾问发送的名为 "新上传变体 "的 .mq5 文件,就会出现很多错误,如下图所示。我刚刚下载了最新发布的版本(第 8 篇文章)。 我该如何解决这个问题? 致 谢
那么。下载文章所附的压缩包,查看其中的两个文件夹:
So.我们下载了文章所附的压缩包,看到其中有两个文件夹:
将存档中的 MetaTrader-Auto-Optimiser 文件夹移至 MetaTrader 5 所在的根目录:
将存档中的 MetaTrader-Auto-Optimiser 文件夹移至 MetaTrader 5 所在的根目录:
存档中的 MQL5 文件夹中有两个文件夹 - 将其复制到终端的 MQL5 文件夹中。相应地,测试专家文件夹将复制到 MQL5 文件夹,两个文件夹:CustomGeneric 和 History manager 将复制到 MQL5 文件夹。
在 Experts\Test Expert\New 上传变体文件夹中编译 SimpleMA.mq5 文件:
存档中有两个文件夹,位于 MQL5 文件夹中 - 将它们复制到您终端的 MQL5 文件夹中。
编译位于 Experts\Test Expert\New uploading variant 文件夹中的 SimpleMA.mq5 文件:
我们得到 100 个错误和 60 个警告:
我们得到 100 个错误和 60 个警告:
让我们继续处理第一个错误,看看它是不是一个封闭的导入:
我们继续查看第一个错误,发现这不是一个关闭的导入:
双击关于该错误的说明,并在出现错误的一行找到文件 UploadersEntities.mqh:
双击有关该错误的说明,并进入有该错误行的 UploadersEntities.mqh 文件:
我们看到了什么?我们看到确实没有关闭导入。让我们修复 它:
我们看到了什么?And we see really not closed import.我们修复 它:
再次编译。导入错误消失了,但现在编译器看不到导入文件中的函数和方法:
再次编译。导入错误消失了,但现在编译器看不到导入文件中的函数和方法:
请记住,我们是从第三方 dll 中导入方法和类的。它应该位于 MQL5/Libraries 文件夹中。
打开从压缩包复制到 MetaTrader 5 根目录下的 MetaTrader-Auto-Optimiser 文件夹。我们可以在其中看到 Metatrader Auto Optimiser.sln 文件:
我们记得,我们是从第三方 dll 中导入方法和类的。
打开从压缩包复制到 MetaTrader 5 根目录的 MetaTrader-Auto-Optimiser 文件夹。我们会在其中看到 Metatrader Auto Optimiser.sln 文件:
双击该文件,在 MS Visual Studio 中打开项目。
打开该项目后,我们会发现它适用于过时的平台:
双击该文件,在 MS Visual Studio 中打开项目。
打开项目时,我们会发现它适用于过时的平台:
选中 "将目标升级到 .NET Framefork 4.8 平台 "复选框,然后点击 "继续 "按钮。
然后再查看第二个项目:
保留 "将目标升级到 .NET Framefork 4.8 平台 "复选框,然后单击 "继续 "按钮。
,然后再次加载第二个项目:
加载项目后,选择 "Release(发布)",然后选择 "Any CPU":
加载项目后,选择 "Release"(发布)和 Any CPU:
然后按 Ctrl+F5 来编译和构建项目。
在 MS Visual Studio 中编译完项目后,转到终端的根目录,并在其中的 \MetaTrader-AutoOptimiser\ReportManager\bin\Release 文件夹中。将该文件夹中已构建的 ReportManager.dll 库文件复制到终端的 MQL5/Libraries 目录中。
现在再次编译 MQL5\Experts\Test Expert\New uploading variant 文件夹中的 SimpleMA.mq5 文件。
完成,没有错误:
然后按 Ctrl+F5 来编译和构建项目。
在 MS Visual Studio 中编译项目后,转到终端的根目录,并在其中转到 \MetaTrader-Auto-Optimiser\ReportManager\bin\Release 文件夹。
现在让我们再次从 MQL5\Experts\Test Expert\New uploading variant 文件夹中编译 SimpleMA.mq5 文件。
完成,没有错误:
尽情享受
那么。下载文章所附的压缩包,可以看到其中有两个文件夹:
所以。我们下载文章所附的存档,看到其中有两个文件夹:
将存档中的 MetaTrader-Auto-Optimiser 文件夹转移到 MetaTrader 5 所在的根目录下:
将存档中的 MetaTrader-Auto-Optimiser 文件夹移至 MetaTrader 5 所在的根目录:
存档中的 MQL5 文件夹中有两个文件夹 - 将其复制到终端的 MQL5 文件夹中。相应地,测试专家文件夹将复制到 MQL5 文件夹,两个文件夹:CustomGeneric 和 History Manager 将复制到 MQL5 文件夹。
编译位于 Experts\Test Expert\New 上传变体文件夹中的 SimpleMA.mq5 文件:
存档中有两个文件夹,位于 MQL5 文件夹中 - 将它们复制到终端的 MQL5 文件夹中。
编译位于 Experts\Test Expert\New uploading variant 文件夹中的 SimpleMA.mq5 文件:
我们得到 100 个错误和 60 个警告:
我们得到 100 个错误和 60 个警告:
查看第一个错误,发现它不是一个封闭的导入:
让我们继续查看第一个错误,看看这是不是一个封闭的导入:
谢谢,更新了文章所附的来源