到底发生了什么事? - 页 4 12345678910 新评论 Andrey Dik 2020.05.11 10:54 #31 SeriousRacoon: 并尝试禁用当前的逻辑,用一个普通的向导来取代它。你会立即看到猫在哪里出了问题,在逻辑或执行方面。 好建议....我们不应该到了这样的地步:我们认为优化只不过是单一运行的独立实例,至少,这是用户所希望的,也是开发者所希望的。 这意味着,无论专家顾问的算法有多复杂,单次运行的结果 与优化过程中一组运行的结果应该是相同的。 我将在优化过程中每次运行完成后打印(如Renat建议的那样)交易历史到一个包含参数的文件中(以方便在一堆创建的文件中搜索),并对单次运行做同样的处理,这样就有可能找到优化后和单次运行的结果差异。 这似乎是了解真相的唯一途径。 然而,我非常好奇是什么,什么细微的差别,可能导致优化和单次运行的不同结果,因为逻辑上表明,这在原则上是不可能的,只要单次运行与优化批次运行中的结果相同。 Andrey Dik 2020.05.11 11:01 #32 Алексей Тарабанов: "几乎所有的数据都在一个循环中被初始化"。 伙计们,你们不能在一个循环中初始化。你必须在循环中阅读。 我告诉你在哪些情况下,这不仅是可能的,而且是必要的,没有其他办法。 [删除] 2020.05.11 11:26 #33 @Andrey Dik,我想知道究竟如何栓住打印到文件。我在想,文件应该是边走边写。而那里究竟应该写些什么呢?价格--不具参考价值。 你需要写一些信息,帮助你理解差异的原因。什么样的信息?我们在哪里可以找到它?我还不知道。 Andrey Dik 2020.05.11 11:49 #34 Сергей Таболин: @Andrey Dik,我想知道究竟如何栓住打印到文件。看来,文件应该是边走边写。而那里究竟应该写些什么呢?价格是没有信息的。你需要写一些信息,帮助你理解差异的原因。什么样的信息?我们在哪里可以找到它?我还没有想法。 在OnTester()函数中,创建一个名为InputName1 + "_" + InputName2 + "_" + InputName3 + "_" + InputName4 + "_" +....的文件。并在其中记录所有交易(不是头寸)的历史,所有必要的分析信息、时间、价格等都会被记录下来。你也可以在这个文件中写一些对某一特定EA来说非常有趣的东西,这对搜索优化器和单一运行之间的不一致可能很有用。 不要忘记检查MQLInfoInteger (MQL_OPTIMIZATION));在单次运行时在文件名中添加后缀,以便在优化后不覆盖同一文件。 如果你得到两个内容不同的文件,这对开发人员来说是不够的,只能给你一个方向,在哪里进一步挖掘,你需要带来一个可重复的问题代码。 [删除] 2020.05.11 12:10 #35 Andrey Dik: 在OnTester()函数中创建一个名为InputName1 + "_" + InputName2 + "_" + InputName3 + "_" + InputName4 + "_" +....的文件。并在其中记录所有交易(不是头寸)的历史,所有必要的分析信息、时间、价格等都会被记录下来。你也可以在这个文件中写一些对某一特定EA来说非常有趣的东西,这对搜索优化器和单一运行之间的不一致可能很有用。 不要忘记检查MQLInfoInteger (MQL_OPTIMIZATION));在单次运行时在文件名中添加后缀,以便在优化后不覆盖同一文件。 SZY.如果你得到两个内容不同的文件,对开发者来说是不够的,只能给你提供下一步挖掘的方向,你需要举出一个可重复的代码问题。 我希望问题是在EA代码中。 谢谢你。会做的。 Andrey F. Zelinsky 2020.05.11 13:07 #36 Сергей Таболин: 谢谢你。我将这样做。 Andrey F. Zelinsky 2020.05.11 13:20 #37 Сергей Таболин: 谢谢你。会做的。 检查全局声明变量的初始化。 如果初始化不是在OnInit()中,而是在声明中,并且如果它们的值在代码中被改变。 Andrey Dik 2020.05.11 13:28 #38 Andrey F. Zelinsky: 检查全局声明变量的初始化。 如果初始化不是在OnInit()中,而是在声明中,并且如果它们的值在代码中被改变。 无论变量是否被初始化,但在两种测试模式(优化和单次运行)下,结果应该是一致的。 SeriousRacoon 2020.05.11 13:40 #39 Andrey Dik: 好建议....我们不应该到了这样的地步:我们认为优化不过是单一运行的独立实例,至少这是用户希望的,也是开发者希望的。 这意味着,无论专家顾问的算法有多复杂,单次运行的结果 与优化过程中一组运行的结果应该是相同的。 我将在优化期间每次运行完成后打印(如Renat建议的那样)交易历史到一个包含参数的文件中(以方便在创建的文件堆中搜索),并在单次运行中做同样的事情,这样就有可能找出优化后和单次运行的结果差异。 然而,我非常好奇是什么,什么细微的差别,可能导致优化和单次运行的不同结果,因为逻辑上表明,这在原则上是不可能的,只要单次运行与优化批次运行中的结果相同。 一般来说,我同意你的观点。如果owl真的不根据环境(无论是在优化器中还是在测试器中运行)进行分支,那么我们唯一可以假设的是,在优化模式下,测试器中的一些api调用在速度上过于优化,原谅我的同义词。也许这取决于所使用的函数中的标志。一个详细的交易和执行结果的日志会有帮助,是的。 我个人没有遇到过这种情况。 Andrey F. Zelinsky 2020.05.11 13:40 #40 Andrey Dik:无论变量是否被初始化,但在两种测试器模式(优化和单次运行)下,结果应该是一致的。 全局声明一个变量,并在声明时初始化它,例如,int kk=0。 然后在OnTick()中取消打印并改变数值,例如Print("kk=",kk); ++kk; 然后改变TF或参数 -- 并看到结果。 12345678910 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
并尝试禁用当前的逻辑,用一个普通的向导来取代它。你会立即看到猫在哪里出了问题,在逻辑或执行方面。
好建议....我们不应该到了这样的地步:我们认为优化只不过是单一运行的独立实例,至少,这是用户所希望的,也是开发者所希望的。
这意味着,无论专家顾问的算法有多复杂,单次运行的结果 与优化过程中一组运行的结果应该是相同的。
我将在优化过程中每次运行完成后打印(如Renat建议的那样)交易历史到一个包含参数的文件中(以方便在一堆创建的文件中搜索),并对单次运行做同样的处理,这样就有可能找到优化后和单次运行的结果差异。 这似乎是了解真相的唯一途径。
然而,我非常好奇是什么,什么细微的差别,可能导致优化和单次运行的不同结果,因为逻辑上表明,这在原则上是不可能的,只要单次运行与优化批次运行中的结果相同。
"几乎所有的数据都在一个循环中被初始化"。
伙计们,你们不能在一个循环中初始化。你必须在循环中阅读。
我告诉你在哪些情况下,这不仅是可能的,而且是必要的,没有其他办法。
@Andrey Dik,我想知道究竟如何栓住打印到文件。我在想,文件应该是边走边写。而那里究竟应该写些什么呢?价格--不具参考价值。 你需要写一些信息,帮助你理解差异的原因。什么样的信息?我们在哪里可以找到它?我还不知道。
@Andrey Dik,我想知道究竟如何栓住打印到文件。看来,文件应该是边走边写。而那里究竟应该写些什么呢?价格是没有信息的。你需要写一些信息,帮助你理解差异的原因。什么样的信息?我们在哪里可以找到它?我还没有想法。
在OnTester()函数中,创建一个名为InputName1 + "_" + InputName2 + "_" + InputName3 + "_" + InputName4 + "_" +....的文件。并在其中记录所有交易(不是头寸)的历史,所有必要的分析信息、时间、价格等都会被记录下来。你也可以在这个文件中写一些对某一特定EA来说非常有趣的东西,这对搜索优化器和单一运行之间的不一致可能很有用。
不要忘记检查MQLInfoInteger (MQL_OPTIMIZATION));在单次运行时在文件名中添加后缀,以便在优化后不覆盖同一文件。
如果你得到两个内容不同的文件,这对开发人员来说是不够的,只能给你一个方向,在哪里进一步挖掘,你需要带来一个可重复的问题代码。
在OnTester()函数中创建一个名为InputName1 + "_" + InputName2 + "_" + InputName3 + "_" + InputName4 + "_" +....的文件。并在其中记录所有交易(不是头寸)的历史,所有必要的分析信息、时间、价格等都会被记录下来。你也可以在这个文件中写一些对某一特定EA来说非常有趣的东西,这对搜索优化器和单一运行之间的不一致可能很有用。
不要忘记检查MQLInfoInteger (MQL_OPTIMIZATION));在单次运行时在文件名中添加后缀,以便在优化后不覆盖同一文件。
SZY.如果你得到两个内容不同的文件,对开发者来说是不够的,只能给你提供下一步挖掘的方向,你需要举出一个可重复的代码问题。 我希望问题是在EA代码中。
谢谢你。会做的。
谢谢你。我将这样做。
谢谢你。会做的。
检查全局声明变量的初始化。
如果初始化不是在OnInit()中,而是在声明中,并且如果它们的值在代码中被改变。
检查全局声明变量的初始化。
如果初始化不是在OnInit()中,而是在声明中,并且如果它们的值在代码中被改变。
无论变量是否被初始化,但在两种测试模式(优化和单次运行)下,结果应该是一致的。
好建议....我们不应该到了这样的地步:我们认为优化不过是单一运行的独立实例,至少这是用户希望的,也是开发者希望的。
这意味着,无论专家顾问的算法有多复杂,单次运行的结果 与优化过程中一组运行的结果应该是相同的。
我将在优化期间每次运行完成后打印(如Renat建议的那样)交易历史到一个包含参数的文件中(以方便在创建的文件堆中搜索),并在单次运行中做同样的事情,这样就有可能找出优化后和单次运行的结果差异。
然而,我非常好奇是什么,什么细微的差别,可能导致优化和单次运行的不同结果,因为逻辑上表明,这在原则上是不可能的,只要单次运行与优化批次运行中的结果相同。
一般来说,我同意你的观点。如果owl真的不根据环境(无论是在优化器中还是在测试器中运行)进行分支,那么我们唯一可以假设的是,在优化模式下,测试器中的一些api调用在速度上过于优化,原谅我的同义词。也许这取决于所使用的函数中的标志。一个详细的交易和执行结果的日志会有帮助,是的。
我个人没有遇到过这种情况。
无论变量是否被初始化,但在两种测试器模式(优化和单次运行)下,结果应该是一致的。
全局声明一个变量,并在声明时初始化它,例如,int kk=0。
然后在OnTick()中取消打印并改变数值,例如Print("kk=",kk); ++kk;
然后改变TF或参数 -- 并看到结果。