文章 "创建 EA 交易优化的自定义标准" - 页 2 123 新评论 sigma7i 2012.07.21 09:56 #11 Karlson:您是说代码的类型是if(balance <3000)ExpertRemove(); 不起作用?可以。我已经明白了。它会中断优化,但仍会显示结果,这就是我认为它不起作用的原因。卡尔森但我不是这么说的。我说的是,这样的故障(至少以前是这样的)最终导致基因组离开。 没错。但如果你将 OnTester() 的结果重置为零,或者像上面那样做(赋负值-777),那么基因的行为就真的无法预测了,因为选择是通过 OnTester() 的返回值对结果执行的。 sigma7i 2012.07.21 09:57 #12 问题仍然是如何从报告中删除不必要的结果。MT4 中就有这样的功能:当然可以借助 MQL5 工具来实现,因为开发人员已经完全删除了此类功能。当然,一切都可以复制到 Excel 中,但我想利用新平台的优势。我们已经解决了限制问题--我们可以使用ExpertRemove() 来实现。如何跳过报告中无用的结果? Vladimir Gomonov 2012.07.21 15:06 #13 sigma7i:如何跳过报告中无用的结果?你不能在标准报告中这样做,也不需要这样做(我反对这样做)。 制作你自己的报告吧。现在,您可以在优化阶段生成任何格式的报告(https://www.mql5.com/zh/docs/optimization_frames)。而且很快(呼呼)就可以自己管理基因了。 Ingvar Engelbrecht 2013.12.07 14:52 #14 非常棒。从我早期在神经网络和遗传算法领域预测期货的工作中,我意识到了合理的直线股本曲线的重要性。因此,我编写了一些例程来考虑这一点。这确实是衡量预测系统 "鲁棒性 "的一个标准。 Ingvar Engelbrecht 2013.12.22 16:53 #15 现在,我终于开始测试和探索各种可能性。我同意这一点。一个全新的世界正在打开。这是一个非常强大的工具。再次感谢您的文章 Ingvar Engelbrecht 2013.12.23 00:19 #16 发现实际工作。直线度模块是一个良好的开端,但并不完整。零利润也能获得很好的评价。因此,利润必须纳入等式。仅仅从总利润中加入某种衡量标准是行不通的。是行不通的。如果在开始时有一些赢利,中间有一些缩水,最后有一些较好的赢利,那么就可以得到一条具有良好价值的直线。这将产生一条具有良好拟合度的水平直线,并显示出一定的利润。但这并不是我们真正想要的。我们真正想要的是一条拟合度良好的上升回归线。因此,为了实现使用偏差尽可能小的回归线的想法,必须在方程中加入向上倾斜的系数。这就是我们希望看到的。一条拟合良好的向上倾斜回归线。我会尝试将其纳入方程。欢迎提出建议和帮助 :-) Ingvar Engelbrecht 2013.12.27 21:58 #17 自定义标准的值与 "标准 "标准一起显示在结果列表中。是否有可能在自定义标准中创建 2 个值?还没有找到结合直线度和坡度的好方法 Ingvar Engelbrecht 2014.01.08 00:05 #18 我正在试用 CSTS 代码。我发现这个结果有点奇怪:结果 利润 #交易 Frofit 因子 DrawDown 预期回报 恢复系数0.58 1237 84 1.26 12.70 14.74 0.930.57 1598 90 1.38 8.69 17.36 1.76下面是另一个例子0.61 3175 123 1.33 21.04 25.82 1.480.60 4460 145 1.49 11.32 30.77 2.56从各方面来看,第二行的数值都更好!!但得分却更低。我唯一可以推断的是,很多交易都会受到惩罚。如果是我就会反过来最后一点。似乎只有一个人对这个问题感兴趣,那就是我。进一步说。我在代码中犯了一个错误,导致挂单 没有被清除。这也导致在 12 个月的测试期间只下了 5 个订单。利润还不错。这确实使优化结果超过了 100。显然,"平均获胜 "的值非常高,导致了这一极端得分。从技术上讲这是正确的,但在回溯测试中却毫无意义在回溯测试中毫无意义。像这样的长期趋势有多大的代表性?因此,我认为必须以某种方式将交易次数纳入等式。经过反复试验和修改代码,我终于找到了一种能产生我认为有用的结果的方法。变化:// CSTS: double tssf=real/teor; if(tssf <= 0) return 0; work = TesterStatistics( STAT_TRADES ); if( work <= 0) work = 1; work = MathSqrt(work/4); tssf = tssf * work; if( tssf < 1 ) tssf = 0; if(TesterStatistics( STAT_PROFIT) <= 0) tssf = 0;return(tssf);原来的方法对于判断运行中的系统可能很好,但对于根据回溯测试运行的参数基本上是无用的 Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties www.mql5.com Standard Constants, Enumerations and Structures / Trade Constants / Order Properties - Documentation on MQL5 Discussion of article "Creating [Archive!] Pure mathematics, physics, YZ_PIPSATOR_EURGPB - inspiration from Ingvar Engelbrecht 2014.01.21 00:36 #19 我又来了,这个宇宙中的独行侠:-)我一直在尝试 "直线度自定义标准",试图将计算出的直线斜率纳入等式。现在的情况是,它可以在非常微薄的利润上给你一个非常高的评级。仅仅将最终利润为了将实际斜率添加到等式中,我修改了代码,如下所示。这不是一个完美的解决方案,但它更接近我想要看到的结果。在使用此代码时,将结果与余额或利润一起使用对我来说效果很好//--------------------------------------------------------------------- // 获取优化结果的值: //--------------------------------------------------------------------- double TBalanceSlopeCriterion::GetCriterion() { // 让我们试着计算平衡曲线的斜率: double current_slope=1000.0*this.balance_Ptr.CalcSlope(); // 如果倾斜向下: if(current_slope<0.0) { return(-1.0); } double temp=this.balance_Ptr.GetCurrentSKO(); if(temp>0.0) { // return(this.scale/temp); // 这只是返回结果与直线的贴合程度,直线可以是水平线,也可以是指向上方的直线。 double temp2 = this.scale/temp; // Ingvar补充道 return(temp2 * current_slope); // Ingvar补充道 } return(0.0); } Rogerio Figurelli 2014.01.21 01:39 #20 ingvar_e:我又来了,这个宇宙中的独行侠:-)我一直在尝试 "直线度自定义标准",试图将计算出的直线斜率纳入等式。现在的情况是,它可以在非常微薄的利润上给你一个非常高的评级。仅仅将最终利润为了将实际斜率添加到等式中,我修改了代码,如下所示。这不是一个完美的解决方案,但它更接近我想要看到的结果。在使用此代码时,将结果与余额或利润一起使用对我来说效果很好 例如, 对于遗传算法,你必须有一个好的适合度算法,并创建一个与适合度相匹配的自定义标准。 我不确定计算平衡曲线的斜率是否是更好的方法,因为我们还有其他几种方法,无论如何,请允许我探索和讨论这个想法。 123 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
您是说代码的类型是
if(balance <3000)ExpertRemove();
不起作用?
可以。我已经明白了。它会中断优化,但仍会显示结果,这就是我认为它不起作用的原因。
卡尔森
但我不是这么说的。我说的是,这样的故障(至少以前是这样的)最终导致基因组离开。
没错。
但如果你将 OnTester() 的结果重置为零,或者像上面那样做(赋负值-777),那么基因的行为就真的无法预测了,因为选择是通过 OnTester() 的返回值对结果执行的。
MT4 中就有这样的功能:
当然可以借助 MQL5 工具来实现,因为开发人员已经完全删除了此类功能。
当然,一切都可以复制到 Excel 中,但我想利用新平台的优势。
我们已经解决了限制问题--我们可以使用ExpertRemove() 来实现。
如何跳过报告中无用的结果?
如何跳过报告中无用的结果?
你不能在标准报告中这样做,也不需要这样做(我反对这样做)。 制作你自己的报告吧。
现在,您可以在优化阶段生成任何格式的报告(https://www.mql5.com/zh/docs/optimization_frames)。
而且很快(呼呼)就可以自己管理基因了。
非常棒。
从我早期在神经网络和遗传算法领域预测期货的工作中,我意识到了合理的直线股本曲线的重要性。
因此,我编写了一些例程来考虑这一点。这确实是衡量预测系统 "鲁棒性 "的一个标准。
发现实际工作。
直线度模块是一个良好的开端,但并不完整。零利润也能获得很好的评价。因此,利润必须纳入等式。仅仅从总利润中加入某种衡量标准是行不通的。
是行不通的。如果在开始时有一些赢利,中间有一些缩水,最后有一些较好的赢利,那么就可以得到一条具有良好价值的直线。这将产生一条具有良好拟合度的水平直线,并显示出一定的利润。但这并不是我们真正想要的。
我们真正想要的是一条拟合度良好的上升回归线。因此,为了实现使用偏差尽可能小的回归线的想法,必须在方程中加入向上倾斜的系数。这就是
我们希望看到的。一条拟合良好的向上倾斜回归线。我会尝试将其纳入方程。欢迎提出建议和帮助 :-)
我正在试用 CSTS 代码。
我发现这个结果有点奇怪:
结果 利润 #交易 Frofit 因子 DrawDown 预期回报 恢复系数
0.58 1237 84 1.26 12.70 14.74 0.93
0.57 1598 90 1.38 8.69 17.36 1.76
下面是另一个例子
0.61 3175 123 1.33 21.04 25.82 1.48
0.60 4460 145 1.49 11.32 30.77 2.56
从各方面来看,第二行的数值都更好!!但得分却更低。
我唯一可以推断的是,很多交易都会受到惩罚。如果是我就会反过来
最后一点。似乎只有一个人对这个问题感兴趣,那就是我。
进一步说。我在代码中犯了一个错误,导致挂单 没有被清除。这也导致在 12 个月的测试期间只下了 5 个订单。利润还不错。
这确实使优化结果超过了 100。显然,"平均获胜 "的值非常高,导致了这一极端得分。从技术上讲这是正确的,但在回溯测试中却毫无意义
在回溯测试中毫无意义。像这样的长期趋势有多大的代表性?因此,我认为必须以某种方式将交易次数纳入等式。
经过反复试验和修改代码,我终于找到了一种能产生我认为有用的结果的方法。
变化:
// CSTS:
double tssf=real/teor;
if(tssf <= 0) return 0;
work = TesterStatistics( STAT_TRADES );
if( work <= 0) work = 1;
work = MathSqrt(work/4);
tssf = tssf * work;
if( tssf < 1 ) tssf = 0;
if(TesterStatistics( STAT_PROFIT) <= 0) tssf = 0;
return(tssf);
原来的方法对于判断运行中的系统可能很好,但对于根据回溯测试运行的参数基本上是无用的
我又来了,这个宇宙中的独行侠:-)
我一直在尝试 "直线度自定义标准",试图将计算出的直线斜率纳入等式。现在的情况是,它可以在非常微薄的利润上给你一个非常高的评级。仅仅将最终利润
为了将实际斜率添加到等式中,我修改了代码,如下所示。
这不是一个完美的解决方案,但它更接近我想要看到的结果。在使用此代码时,将结果与余额或利润一起使用对我来说效果很好
我又来了,这个宇宙中的独行侠:-)
我一直在尝试 "直线度自定义标准",试图将计算出的直线斜率纳入等式。现在的情况是,它可以在非常微薄的利润上给你一个非常高的评级。仅仅将最终利润
为了将实际斜率添加到等式中,我修改了代码,如下所示。
这不是一个完美的解决方案,但它更接近我想要看到的结果。在使用此代码时,将结果与余额或利润一起使用对我来说效果很好
例如, 对于遗传算法,你必须有一个好的适合度算法,并创建一个与适合度相匹配的自定义标准。
我不确定计算平衡曲线的斜率是否是更好的方法,因为我们还有其他几种方法,无论如何,请允许我探索和讨论这个想法。