[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 366 1...359360361362363364365366367368369370371372373...432 新评论 Алексей Тарабанов 2013.05.29 07:36 #3651 lottamer: 没有虱子。也许是EA内部缺乏规范化,导致了这种效果。然而,当输入参数 标签出现时,优化本身并没有发生。测试员做了一些事情,在底部你可以看到当前的过冲数(7/62),但在完成后在标签中的优化结果,和优化图是 空的!这是不可能的。参数上的复选标记当然是....我甚至不知道该往哪边看... 测试仪不能用不变的数据提供可重复的结果,因为测试时传播的变化是不知不觉的。治疗方法:https://www.mql5.com/ru/forum/119830 elllfix 2013.05.29 07:47 #3652 Chiripaha:空值可能表明优化特定参数的结果是无利可图的--也就是流失。尝试用Visualisation运行其中一个参数,你可能会看到这个结果。关于归一化,我认为也不会有这样的影响,因为既然数值相同,数学数字也会完全相同--因此没有变化。至于 "以何种方式思考"--有时最好不要思考,把问题搁置起来--想法和思路会在以后出现。你必须给你的大脑以回旋的余地,休息和思考而不紧张。 1.该顾问是有利可图的。2.我已经用手检查过了--在参数的整个范围内都是有利可图的。 我只是想把范围扩大一点,让步子变小。 elllfix 2013.05.29 07:49 #3653 tara: 测试员不能用不变的数据提供可重复的结果,因为在测试过程中传播的变化是不可知的。治疗方法:https://www.mql5.com/ru/forum/119830 差价是浮动的,不是吗?另一件事是,它必须被巩固在历史上......总的来说,结果略有浮动,交易数量没有变化......所以这个问题并没有让我感到太害怕......另一件事是,优化器根本不工作!这很烦人...... 这是测试人员在日志中所说的..: 2013.05.29 12:20:10 在优化过程中共进行了8次,有8个结果因不重要而被放弃。 Chiripaha 2013.05.29 08:51 #3654 tara: 测试员不能用不变的数据提供可重复的结果,因为在测试过程中传播的变化是不知不觉的。治疗方法:https://www.mql5.com/ru/forum/119830 这也许是可能的,但我的传播尺寸是放在信息中的--当你改变它时,它就会显示出来。在测试器上,我没有注意到传播的浮动。它从经常账户的MarketInfo中获取标准参数数据,并不再改变它。这种治疗方法改变了价差p-r,因此,你可以看到不同价差的不同优化结果。根据我的理解,这是需要链接中的软件的唯一目的。 Chiripaha 2013.05.29 08:53 #3655 lottamer: 2013.05.29 12:20:10 在优化过程中共进行了8次,有8个结果因不重要而被放弃。 嗯,这是正确的--这些结果被认为是不重要的而被抛弃了。- 这就是为什么它没有显示在结果或图表中的原因。 elllfix 2013.05.29 09:01 #3656 Chiripaha: 嗯,这是正确的--这些结果被标记为不重要的。- 这就是为什么它没有在结果或图表中显示出来。 我想我在这里有一个更深的问题。我昨天的第一个问题是如何优化 用户函数内的参数。我被告知:把它们移到外部的双倍区。我做到了。而现在优化器抛出了结果......我一定是把它们放错了。这是代码,它是停止和获取的一个常见修饰语以前有数字100和200,而不是STOP和TAKE。我把数字改为 "停 "和 "取"。而在代码的开头,我加入了外来的双数 STOP = 100;外来的双数 TAKE = 200。这里有什么地方出错了吗?(修改器本身100%有效) int My_modify() { bool result; double take_profit,stop_loss,point; int cmd,total,error; //---- total=OrdersTotal(); point=MarketInfo(Symbol(),MODE_POINT); //---- // for(int i=0; i<total; i++) // { if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)) { //---- print selected order OrderPrint(); cmd=OrderType(); //---- buy or sell orders are considered if(cmd==OP_BUY || cmd==OP_SELL) { //---- modify first market order while(true) { if(cmd==OP_BUY) stop_loss=OrderOpenPrice()-STOP*point; else stop_loss=OrderOpenPrice()+STOP*point; if(cmd==OP_BUY) take_profit=OrderOpenPrice()+TAKE*point; else take_profit=OrderOpenPrice()-TAKE*point; result=OrderModify(OrderTicket(),0,stop_loss, take_profit,0,CLR_NONE); if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); } else error=0; if(error==135) RefreshRates(); else break; } //---- print modified order (it still selected after modify) OrderPrint(); // break; } } else { Print( "Error when order select ", GetLastError()); } // } //---- return(0); } Chiripaha 2013.05.29 09:34 #3657 我现在看的是代码,但我允许沿途有一些评论。这句话完全没有意义。point=MarketInfo(Symbol(),MODE_POINT); /* поскольку это ровным счетом то же самое, что штатный параметр */ Point 只有当你有一个多币种策略时才需要它,但那时,你必须使用 Symbol()你将需要使用其他预定义的值,但不是这个正常的功能。这个变量也是不必要的。total=OrdersTotal();因为在你的函数中,它只被应用了一次,在枚举中,由于某种原因被注释掉了,而且它只会使代码变得更加混乱。- 因此,问题是--你为什么要按顺序注释掉枚举?这一点。if(cmd==OP_BUY) stop_loss=OrderOpenPrice()-STOP*point; else stop_loss=OrderOpenPrice()+STOP*point; if(cmd==OP_BUY) take_profit=OrderOpenPrice()+TAKE*point; else take_profit=OrderOpenPrice()-TAKE*point;一般来说,最好归为一组--条件是一样的。顺便说一下,你按结构把它们写得不同。- 是对结构损失的问题。写作风格必须统一--那么你就可以看到结构,可能的错误会像雪后的颠簸一样出现。if(cmd==OP_BUY){ stop_loss = OrderOpenPrice()-STOP*point; take_profit = OrderOpenPrice()+TAKE*point; } else { stop_loss = OrderOpenPrice()+STOP*point; take_profit = OrderOpenPrice()-TAKE*point; } 从你介绍的情况来看,我没有发现任何可能影响结果的原则点。但是...你在这里只提出了一个函数(写得相当草率,除非你算上注释的枚举--这在问题中有所体现)。要说判决书--你不需要函数,你需要程序代码,因为你不知道原因在哪里,在哪里,你需要寻找它。要做到这一点,你必须在测试器中运行程序,亲眼看到可能出现的错误。然后已经运行了代码(或以相反的顺序),并寻找原因。作为一个总体感觉,我可以说你,奥列格,有相当多的马虎(冷漠,我想说)。这可能导致1。对使用中的系统乱扔垃圾的行为。2.由于这种乱丢垃圾的行为,导致结构的损失,而且难以识别和检测虫子。所以我的建议是这样的。- 如果可能的话,扔掉代码中所有的 "垃圾"(不必要的)--错误会更容易被发现。- 这是大多数人寻求帮助的一个典型错误--粗心。 Chiripaha 2013.05.29 09:44 #3658 lottamer: 它可能比这更深。我昨天的第一个问题是如何优化自定义函数内的参数。我被告知:把它们放在extern double 中。我做到了。而现在优化器抛出的结果......显然,我把它们拿出来的方法是错误的。不,我认为你错了。测试员抛出这个结果不是因为我们放出的参数,而是因为结果没有通过显著性标准。但也有可能是程序本身含有错误。此外,不稳定的结果也是一种间接的指示。- 这意味着有些事情是错误的。在我的实践中,我不允许这种程序进入现实世界。因为如果出了问题,就意味着情况是无法控制的。而且什么都可以出来。根据定义,止损和止盈参数在任何程序中都属于外部变量,而且不仅仅是因为它们需要被优化。这并不是说你每次想改变它们时都要进入你的代码。所以,不管是外部变量还是内部变量,都不重要。- 那是肯定的。 elllfix 2013.05.29 09:49 #3659 Chiripaha:我现在正在看代码,但我允许沿途有一些评论。这句话完全没有意义。只有当你有一个多货币策略时,你才会需要它,但这时你不需要 你将需要替代其他预定义的值,但不是这个基本功能。这个变量也是不必要的。它只在枚举中的函数内使用了一次,由于某种原因被注释掉了,只会使代码变得更加混乱。- 因此,问题是--你为什么要按顺序注释出列举的内容?在这里,它是。一般来说,最好把它们放在一起--条件是一样的。嗯,我没有从你提出的内容中发现任何可能影响结果的原则性问题。但是!...你在这里只提出了一个函数(写得相当草率,除非你算上注释的超限--这在问题中有所反映)。要说判决书--你不需要函数,你需要程序代码,因为你不知道原因在哪里,在哪里,你需要寻找它。要做到这一点,你必须在测试器中运行程序,亲眼看到可能出现的错误。然后已经运行了代码(或以相反的顺序),寻找这个原因。作为一般的感觉,我可以说,你,奥列格,有相当多的粗心(冷漠,我想说)。这可能导致1。对使用中的系统的垃圾。2.由于这种乱丢垃圾的行为,导致结构的损失,而且难以识别和检测虫子。所以我的建议是这样的。- 如果可能的话,扔掉代码中所有的 "垃圾"(不必要的)--错误会更容易被发现。- 这是大多数人寻求帮助的一个典型错误--粗心。 我没有写这个修饰语。我从图书馆准备好了。最主要的是,它是100%的工作。但为什么里面的参数没有被优化--这就是问题所在.....。没有基本的错误!其余的代码都能工作。 在算法上设置任何条件。- 购买-修改 - 关闭---------------------------并尝试在我的订单修改器中对参数进行优化 - 即停止和采取 elllfix 2013.05.29 09:57 #3660 Chiripaha:不,我认为你错了。测试者不是因为你输入的参数而被抛出,而是因为结果没有通过显著性标准。但也有可能是软件本身含有错误。此外,不稳定的结果也是一种间接的指示。- 这意味着有些事情是错误的。在我的实践中,我不允许这种程序进入现实世界。因为如果出了问题,就意味着情况是无法控制的。而且什么都可以出来。根据定义,止损和止盈参数在任何程序中都属于外部变量,而且不仅仅是因为它们需要被优化。这并不是说你每次想改变它们时都要进入代码。所以,不管是外部变量还是内部变量,都不重要。- 那是肯定的。 嗯,看。如果我现在把所有的东西都还回去,即删除外部的STOP和TAKE参数,在函数里面写上数字来代替它们,那么这个EA已经周而复始地运行了10周,并显示出清晰的结果。如果我手动改变停止和拍摄的参数--一切都将工作,并给出稍微不同的结果(这是自然的)。但是现在,为什么当我把这些参数转移到修改器之外时--优化器认为它们不重要? 1...359360361362363364365366367368369370371372373...432 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
没有虱子。
也许是EA内部缺乏规范化,导致了这种效果。
然而,当输入参数 标签出现时,优化本身并没有发生。
测试员做了一些事情,在底部你可以看到当前的过冲数(7/62),但在完成后在标签中的优化结果,和优化图是 空的!这是不可能的。
参数上的复选标记当然是....
我甚至不知道该往哪边看...
测试仪不能用不变的数据提供可重复的结果,因为测试时传播的变化是不知不觉的。
治疗方法:https://www.mql5.com/ru/forum/119830
空值可能表明优化特定参数的结果是无利可图的--也就是流失。尝试用Visualisation运行其中一个参数,你可能会看到这个结果。
关于归一化,我认为也不会有这样的影响,因为既然数值相同,数学数字也会完全相同--因此没有变化。
至于 "以何种方式思考"--有时最好不要思考,把问题搁置起来--想法和思路会在以后出现。你必须给你的大脑以回旋的余地,休息和思考而不紧张。
1.该顾问是有利可图的。
2.我已经用手检查过了--在参数的整个范围内都是有利可图的。 我只是想把范围扩大一点,让步子变小。
测试员不能用不变的数据提供可重复的结果,因为在测试过程中传播的变化是不可知的。
治疗方法:https://www.mql5.com/ru/forum/119830
差价是浮动的,不是吗?
另一件事是,它必须被巩固在历史上......
总的来说,结果略有浮动,交易数量没有变化......所以这个问题并没有让我感到太害怕......
另一件事是,优化器根本不工作!这很烦人......
这是测试人员在日志中所说的..:
2013.05.29 12:20:10 在优化过程中共进行了8次,有8个结果因不重要而被放弃。
测试员不能用不变的数据提供可重复的结果,因为在测试过程中传播的变化是不知不觉的。
治疗方法:https://www.mql5.com/ru/forum/119830
这也许是可能的,但我的传播尺寸是放在信息中的--当你改变它时,它就会显示出来。在测试器上,我没有注意到传播的浮动。它从经常账户的MarketInfo中获取标准参数数据,并不再改变它。
这种治疗方法改变了价差p-r,因此,你可以看到不同价差的不同优化结果。根据我的理解,这是需要链接中的软件的唯一目的。
2013.05.29 12:20:10 在优化过程中共进行了8次,有8个结果因不重要而被放弃。
嗯,这是正确的--这些结果被标记为不重要的。- 这就是为什么它没有在结果或图表中显示出来。
我想我在这里有一个更深的问题。
我昨天的第一个问题是如何优化 用户函数内的参数。
我被告知:把它们移到外部的双倍区。
我做到了。
而现在优化器抛出了结果......我一定是把它们放错了。
这是代码,它是停止和获取的一个常见修饰语
以前有数字100和200,而不是STOP和TAKE。
我把数字改为 "停 "和 "取"。
而在代码的开头,我加入了
外来的双数 STOP = 100;
外来的双数 TAKE = 200。
这里有什么地方出错了吗?
(修改器本身100%有效)
我现在看的是代码,但我允许沿途有一些评论。
这句话完全没有意义。
point=MarketInfo(Symbol(),MODE_POINT); /* поскольку это ровным счетом то же самое, что штатный параметр */ Point
只有当你有一个多币种策略时才需要它,但那时,你必须使用
Symbol()
你将需要使用其他预定义的值,但不是这个正常的功能。
这个变量也是不必要的。
total=OrdersTotal();
因为在你的函数中,它只被应用了一次,在枚举中,由于某种原因被注释掉了,而且它只会使代码变得更加混乱。- 因此,问题是--你为什么要按顺序注释掉枚举?
这一点。
一般来说,最好归为一组--条件是一样的。顺便说一下,你按结构把它们写得不同。- 是对结构损失的问题。写作风格必须统一--那么你就可以看到结构,可能的错误会像雪后的颠簸一样出现。
从你介绍的情况来看,我没有发现任何可能影响结果的原则点。但是...你在这里只提出了一个函数(写得相当草率,除非你算上注释的枚举--这在问题中有所体现)。要说判决书--你不需要函数,你需要程序代码,因为你不知道原因在哪里,在哪里,你需要寻找它。要做到这一点,你必须在测试器中运行程序,亲眼看到可能出现的错误。然后已经运行了代码(或以相反的顺序),并寻找原因。
作为一个总体感觉,我可以说你,奥列格,有相当多的马虎(冷漠,我想说)。这可能导致1。对使用中的系统乱扔垃圾的行为。2.由于这种乱丢垃圾的行为,导致结构的损失,而且难以识别和检测虫子。所以我的建议是这样的。- 如果可能的话,扔掉代码中所有的 "垃圾"(不必要的)--错误会更容易被发现。- 这是大多数人寻求帮助的一个典型错误--粗心。
它可能比这更深。
我昨天的第一个问题是如何优化自定义函数内的参数。
我被告知:把它们放在extern double 中。
我做到了。
而现在优化器抛出的结果......显然,我把它们拿出来的方法是错误的。
不,我认为你错了。测试员抛出这个结果不是因为我们放出的参数,而是因为结果没有通过显著性标准。
但也有可能是程序本身含有错误。此外,不稳定的结果也是一种间接的指示。- 这意味着有些事情是错误的。在我的实践中,我不允许这种程序进入现实世界。因为如果出了问题,就意味着情况是无法控制的。而且什么都可以出来。
根据定义,止损和止盈参数在任何程序中都属于外部变量,而且不仅仅是因为它们需要被优化。这并不是说你每次想改变它们时都要进入你的代码。所以,不管是外部变量还是内部变量,都不重要。- 那是肯定的。
我现在正在看代码,但我允许沿途有一些评论。
这句话完全没有意义。
只有当你有一个多货币策略时,你才会需要它,但这时你不需要
你将需要替代其他预定义的值,但不是这个基本功能。
这个变量也是不必要的。
它只在枚举中的函数内使用了一次,由于某种原因被注释掉了,只会使代码变得更加混乱。- 因此,问题是--你为什么要按顺序注释出列举的内容?
在这里,它是。
一般来说,最好把它们放在一起--条件是一样的。
嗯,我没有从你提出的内容中发现任何可能影响结果的原则性问题。但是!...你在这里只提出了一个函数(写得相当草率,除非你算上注释的超限--这在问题中有所反映)。要说判决书--你不需要函数,你需要程序代码,因为你不知道原因在哪里,在哪里,你需要寻找它。要做到这一点,你必须在测试器中运行程序,亲眼看到可能出现的错误。然后已经运行了代码(或以相反的顺序),寻找这个原因。
作为一般的感觉,我可以说,你,奥列格,有相当多的粗心(冷漠,我想说)。这可能导致1。对使用中的系统的垃圾。2.由于这种乱丢垃圾的行为,导致结构的损失,而且难以识别和检测虫子。所以我的建议是这样的。- 如果可能的话,扔掉代码中所有的 "垃圾"(不必要的)--错误会更容易被发现。- 这是大多数人寻求帮助的一个典型错误--粗心。
我没有写这个修饰语。
我从图书馆准备好了。
最主要的是,它是100%的工作。
但为什么里面的参数没有被优化--这就是问题所在.....。
没有基本的错误!
其余的代码都能工作。
在算法上设置任何条件。
- 购买
-修改
- 关闭
---------------------------
并尝试在我的订单修改器中对参数进行优化 - 即停止和采取
不,我认为你错了。测试者不是因为你输入的参数而被抛出,而是因为结果没有通过显著性标准。
但也有可能是软件本身含有错误。此外,不稳定的结果也是一种间接的指示。- 这意味着有些事情是错误的。在我的实践中,我不允许这种程序进入现实世界。因为如果出了问题,就意味着情况是无法控制的。而且什么都可以出来。
根据定义,止损和止盈参数在任何程序中都属于外部变量,而且不仅仅是因为它们需要被优化。这并不是说你每次想改变它们时都要进入代码。所以,不管是外部变量还是内部变量,都不重要。- 那是肯定的。
嗯,看。
如果我现在把所有的东西都还回去,即删除外部的STOP和TAKE参数,在函数里面写上数字来代替它们,那么这个EA已经周而复始地运行了10周,并显示出清晰的结果。
如果我手动改变停止和拍摄的参数--一切都将工作,并给出稍微不同的结果(这是自然的)。
但是现在,为什么当我把这些参数转移到修改器之外时--优化器认为它们不重要?