编码帮助 - 页 408 1...401402403404405406407408409410411412413414415...786 新评论 Robert 2014.12.18 00:29 #4071 airquest: 好吧,还是...这里有一些测试。- 默认设置(无优化,WriteCSV为真):Microsoft Excel - BB+CCI-EURUSD-H1-2014.12.18 00h11-SA1.csv - 优化设置为True,PeriodMin为20,PeriodMax为20。Microsoft Excel - BB+CCI-EURUSD-H1-2014.12.18 00h13-SA1.csv 第一条给出了一致的数值(CSV文件和屏幕结果一致)。这很正常,因为两者都是来自相同的变量。但是在第二个文件中,opti结果与屏幕结果相比几乎乘以10。虽然,它们最终的结果应该是一样的...... 总之,不急,也许随着时间的推移,我会发现问题所在。谢谢你的帮助,Mladen。 嗨,Airquest。 谢谢你为策略测试器提供了一个非常有趣的替代方案......你的编码非常有创意和才华。 我确实用你的指标玩了一下...。 看起来你有两个不同的变量来计算总数... 一个用于正常运行=TotalTrades... 和一个用于优化运行=总交易量... 但是......你的评论只显示了你的正常运行TotalTrades......。 继续添加你的优化...totalTrades...到你的评论中,看看是否解决了这个问题... 这希望能回答你的问题,为什么屏幕显示的......和电子表格的总数之间会有差异? 希望这有帮助。 罗伯特 airquest 2014.12.18 01:17 #4072 cosmiclifeform: Hi Airquest,谢谢你为策略测试器提供了一个非常有趣的替代方案......你的编码很有创意,很有才华......! 我确实玩了一下你的指标... 看起来你有两个不同的变量来计算总数...。 一个用于正常运行=TotalTrades... 和一个用于优化运行=总交易量... 但是......你的评论只显示了你的正常运行TotalTrades......。 继续添加你的优化...totalTrades...到你的评论中,看看是否解决了这个问题... 这希望能回答你的问题,为什么屏幕显示的......和电子表格的总数之间会有差异? 希望这有帮助。 罗伯特 不确定最终的结果是否正确。问题是,通过显示来自opti函数 的总交易量,你可以看到这个函数是否运行良好。也不知道如何从double函数中返回一个以上的参数(你需要同时返回余额和胜率)。但主要原因是要看到结果有差异,所以函数中应该有问题...... awratten 2014.12.18 12:57 #4073 大家好,我刚刚写了这个基于RSI的自定义指标。 我有一个想法,想在EA中使用它。 我需要帮助来编写它... 这是个只买不卖的策略。 在每个上涨信号时买入...下跌信号时全部平仓 理想情况下,EA将增加每一个连续上涨信号的手数,而不进行平仓。(当然,有一个最高限额) 该指标的工作原理是,每当RSI越过一个设定的水平时,在图表上出现一个箭头。 arrow_rsi.mq4 附加的文件: arrow_rsi.mq4 3 kb Mladen Rakic 2014.12.18 16:27 #4074 airquest: 不确定最终的结果是否正确。问题是,通过显示来自opti函数的总交易量,你可以看到这个函数是否运行良好。也不知道如何从double函数中返回一个以上的参数(你需要同时返回余额和胜率)。但主要原因是要看到结果有差异,因此函数中应该有问题...... 空问 要从一个函数 中 "返回 "你所需要的参数,可以通过引用将一个参数传递给一个函数。像这样: double a; double b; double c = testFunction(a,b)。 double tectFunction(double& _a,double& _b) { _a = 1; _b = 2; 返回(_a+_b)。 } 之后,a和b将被testFunction赋予1和2的值(在这个例子中隐含地 "返回 "了3个值--我在函数中使用_a和_b的名字只是为了表明,当通过引用传递时,它们不一定要有相同的名字,否则根本不需要这样做)。 Robert 2014.12.18 17:05 #4075 airquest: 不确定最终的结果是否正确。问题是,通过显示来自opti函数的总交易量,你可以看到这个函数是否运行良好。也不知道如何从double函数中返回一个以上的参数(你需要同时返回余额和胜率)。但主要原因是要看到结果有差异,因此函数中应该有问题...... 嗨,艾奎斯。 从我看到的情况来看......你的指标似乎工作得很好。 我仍然认为这是一个 "显示值 "问题...而不是任何计算问题。 以下是我看到的指标中发生的情况...... 程序有两个选项 - 1)正常运行 2)优化运行 它们不是非此即彼的选择...... 当没有选择优化时......程序只做正常运行......。 当选择优化时......程序仍然进行正常运行......然后进行优化运行......所以它得到了两个值。 然而......只有正常运行的数值显示在屏幕注释中......而根本不显示优化的数值。 附上我的测试,显示屏幕上显示的优化值与电子表格上的值 相同......。 这告诉我,你的所有计算都是正确的... 另外,看起来它使用电子表格中的最后一条记录来获得最终的优化值...... 我还建议在不加载其他图表/指标的情况下运行它......并且每次只使用几个选定的值来测试。 我有20多个图表在运行......当MT4为这个指标进行计算时,它变得没有反应......。 最好使用一个干净的MT4设置来运行优化测试...... 但好消息是......它不会锁住我的系统,因为我可以在它计算数字和制作报告时做其他事情。 同时......就我在下面的屏幕截图中可以看出......你的指标似乎工作得很好......。 BTW......这是一个了不起的编码......。非常感谢你的分享...! 希望这有帮助。 罗伯特 附加的文件: airquest_-_optimize_totaltrades1.jpg 109 kb airquest_-_optimize_totaltrades2.jpg 41 kb airquest 2014.12.19 00:18 #4076 cosmiclifeform: 嗨,Airquest,从我看到的情况来看......你的指标似乎工作得很好。 不客气,非常感谢您的发言。这个想法确实是为了取代mt4策略测试器 的优化(我认为它很烂,太慢了),用于回测简单的策略。是的,你需要等待一下它的加载和计算,但从我看到的情况来看,它已经比普通的优化更快、更方便。 但是,我仍然认为这个指标有问题,它不能正常工作。用优化后的结果取代屏幕上的文字,根本不能显示这些出来的结果是对还是错。这就像给一辆生锈的汽车刷漆一样。 我认为opti功能给出了错误的结果。你可以从你的截图中看到,CSV中的结果是5'307个交易。这是不可能的。这取决于你的屏幕上有多少个柱子,但不可能该策略给出了5'307个交易。为了确定,你不需要计算箭头,你可以减少测试的条数,就像我在这个截图中做的那样(我把它设置为100条)。 你可以看到,对于100个柱子,只有10次交易,有4个赢家(计算箭头),而opti的结果显示有89次交易。因此,基于视觉回测,屏幕结果是正确的(对于opti所说的最佳时期),而CSV是错误的。因此,这表明我们不应该相信CSV的结果,无论是用于计算交易还是用于确定哪些设置是最好的。 所以我把这个问题用更简单的方法解决了。我做了一个简单的指标(附后),在屏幕上显示优化双倍函数和启动int函数(主要计算)的结果。所以你不需要写CSV就能看到这两个结果是不同的。 基于这个指标,我的(简单)问题是:为什么地球上两个完全相同的计算(一个在Start函数中,另一个在Optimization double函数中)会得到不同的结果?如果有人能帮助我理解这一点,那就太好了,因为我真的不明白。在我看来,两者是完全一样的,应该得出相同的结果。非常感谢。 PS:这个指标还是有点慢,你可能需要等待几秒钟才能显示结果。不过,当结果出来的时候,它会播放声音。 附加的文件: sa1.png 78 kb sa3.png 41 kb sa_bb_cci_simple_test.mq4 21 kb Robert 2014.12.19 18:07 #4077 Hi Airquest, 我试了一下你的 "样本测试",但无法使其工作。我看了看代码,它有400多行被删除了......所以我没有管它。 我确实回去测试了你的原始代码......我想我开始明白你所说的 "太多交易 "的问题了。 为了保持测试的简单和快速......我只用Bands进行了测试......并最小化了设置(Bands 10和Bands 20),只运行了两(2)次,以便更快地看到结果。 我还关注了 "BarsToCount",因为这似乎与交易的数量直接相关......。 虽然我没有找到任何答案......但我可能有一些更多的线索给你...... "BarsToCount"...似乎不起作用... 我运行了你的代码,有1个柱子...2个柱子...和100个柱子...。 结果都完全一样......这不应该......因为更多的柱子应该等于更多的交易......而更少的柱子应该等于更少的交易。 我附上了我所做的三次运行的屏幕截图......只改变了 "BarsToCount"......。 也许这条线索可以帮助你找到其他的问题。祝你找到你的答案。 希望这有帮助。 罗伯特 附加的文件: airquest_-_bars_back_-_no_changes.jpg 127 kb airquest 2014.12.19 20:12 #4078 最后我成功地制作了一个工作版本。现在opti的结果是正确的,与屏幕上的结果一致。我只是去掉了双重功能,把它全部放到了启动功能中。所以现在,你只有一个选择:在测试者模式(所以它会使用默认设置)或在优化者模式(不会绘制任何东西,只会写一个CSV文件)下运行它。运行优化后,你可以回到测试者模式,检查结果是否正确。 如果你发现任何问题,请让我知道,最好是通过PM,因为我们不想破坏这个主题。伙计们,非常感谢你们的帮助。这个论坛很好,人们互相激励和帮助(大部分时间),这也是我在这里发表的原因。现在让我们开始回测 附加的文件: tester-optimizer_bbcci_for_fx_v1.0.mq4 46 kb tester-optimizer.png 65 kb airquest 2014.12.19 20:28 #4079 cosmiclifeform: 你好,艾奎斯。 罗伯特,谢谢你的帮助。请看我上面发布的版本,它现在应该可以工作了。 PS : 为了限制条形图的数量,你需要把UseAllBars变成False。你可能没有看到这一点。 请注意。 Robert 2014.12.19 21:21 #4080 嗨,Airquest。 干得好,跟踪它并让它工作...! 我期待着这周能与它一起玩... 谢谢你,保重。 罗伯特 1...401402403404405406407408409410411412413414415...786 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
好吧,还是...这里有一些测试。
- 默认设置(无优化,WriteCSV为真):Microsoft Excel - BB+CCI-EURUSD-H1-2014.12.18 00h11-SA1.csv
- 优化设置为True,PeriodMin为20,PeriodMax为20。Microsoft Excel - BB+CCI-EURUSD-H1-2014.12.18 00h13-SA1.csv
第一条给出了一致的数值(CSV文件和屏幕结果一致)。这很正常,因为两者都是来自相同的变量。但是在第二个文件中,opti结果与屏幕结果相比几乎乘以10。虽然,它们最终的结果应该是一样的......
总之,不急,也许随着时间的推移,我会发现问题所在。谢谢你的帮助,Mladen。嗨,Airquest。
谢谢你为策略测试器提供了一个非常有趣的替代方案......你的编码非常有创意和才华。
我确实用你的指标玩了一下...。
看起来你有两个不同的变量来计算总数...
一个用于正常运行=TotalTrades...
和一个用于优化运行=总交易量...
但是......你的评论只显示了你的正常运行TotalTrades......。
继续添加你的优化...totalTrades...到你的评论中,看看是否解决了这个问题...
这希望能回答你的问题,为什么屏幕显示的......和电子表格的总数之间会有差异?
希望这有帮助。
罗伯特
Hi Airquest,
谢谢你为策略测试器提供了一个非常有趣的替代方案......你的编码很有创意,很有才华......!
我确实玩了一下你的指标...
看起来你有两个不同的变量来计算总数...。
一个用于正常运行=TotalTrades...
和一个用于优化运行=总交易量...
但是......你的评论只显示了你的正常运行TotalTrades......。
继续添加你的优化...totalTrades...到你的评论中,看看是否解决了这个问题...
这希望能回答你的问题,为什么屏幕显示的......和电子表格的总数之间会有差异?
希望这有帮助。
罗伯特不确定最终的结果是否正确。问题是,通过显示来自opti函数 的总交易量,你可以看到这个函数是否运行良好。也不知道如何从double函数中返回一个以上的参数(你需要同时返回余额和胜率)。但主要原因是要看到结果有差异,所以函数中应该有问题......
大家好,我刚刚写了这个基于RSI的自定义指标。
我有一个想法,想在EA中使用它。 我需要帮助来编写它...
这是个只买不卖的策略。
在每个上涨信号时买入...下跌信号时全部平仓
理想情况下,EA将增加每一个连续上涨信号的手数,而不进行平仓。(当然,有一个最高限额)
该指标的工作原理是,每当RSI越过一个设定的水平时,在图表上出现一个箭头。
arrow_rsi.mq4
不确定最终的结果是否正确。问题是,通过显示来自opti函数的总交易量,你可以看到这个函数是否运行良好。也不知道如何从double函数中返回一个以上的参数(你需要同时返回余额和胜率)。但主要原因是要看到结果有差异,因此函数中应该有问题......
空问
要从一个函数 中 "返回 "你所需要的参数,可以通过引用将一个参数传递给一个函数。像这样:
double a;
double b;
double c = testFunction(a,b)。
double tectFunction(double& _a,double& _b)
{
_a = 1;
_b = 2;
返回(_a+_b)。
}
之后,a和b将被testFunction赋予1和2的值(在这个例子中隐含地 "返回 "了3个值--我在函数中使用_a和_b的名字只是为了表明,当通过引用传递时,它们不一定要有相同的名字,否则根本不需要这样做)。
不确定最终的结果是否正确。问题是,通过显示来自opti函数的总交易量,你可以看到这个函数是否运行良好。也不知道如何从double函数中返回一个以上的参数(你需要同时返回余额和胜率)。但主要原因是要看到结果有差异,因此函数中应该有问题......
嗨,艾奎斯。
从我看到的情况来看......你的指标似乎工作得很好。
我仍然认为这是一个 "显示值 "问题...而不是任何计算问题。
以下是我看到的指标中发生的情况......
程序有两个选项 - 1)正常运行 2)优化运行
它们不是非此即彼的选择......
当没有选择优化时......程序只做正常运行......。
当选择优化时......程序仍然进行正常运行......然后进行优化运行......所以它得到了两个值。
然而......只有正常运行的数值显示在屏幕注释中......而根本不显示优化的数值。
附上我的测试,显示屏幕上显示的优化值与电子表格上的值 相同......。
这告诉我,你的所有计算都是正确的...
另外,看起来它使用电子表格中的最后一条记录来获得最终的优化值......
我还建议在不加载其他图表/指标的情况下运行它......并且每次只使用几个选定的值来测试。
我有20多个图表在运行......当MT4为这个指标进行计算时,它变得没有反应......。
最好使用一个干净的MT4设置来运行优化测试......
但好消息是......它不会锁住我的系统,因为我可以在它计算数字和制作报告时做其他事情。
同时......就我在下面的屏幕截图中可以看出......你的指标似乎工作得很好......。
BTW......这是一个了不起的编码......。非常感谢你的分享...!
希望这有帮助。
罗伯特
嗨,Airquest,从我看到的情况来看......你的指标似乎工作得很好。
不客气,非常感谢您的发言。这个想法确实是为了取代mt4策略测试器 的优化(我认为它很烂,太慢了),用于回测简单的策略。是的,你需要等待一下它的加载和计算,但从我看到的情况来看,它已经比普通的优化更快、更方便。
但是,我仍然认为这个指标有问题,它不能正常工作。用优化后的结果取代屏幕上的文字,根本不能显示这些出来的结果是对还是错。这就像给一辆生锈的汽车刷漆一样。
我认为opti功能给出了错误的结果。你可以从你的截图中看到,CSV中的结果是5'307个交易。这是不可能的。这取决于你的屏幕上有多少个柱子,但不可能该策略给出了5'307个交易。为了确定,你不需要计算箭头,你可以减少测试的条数,就像我在这个截图中做的那样(我把它设置为100条)。
你可以看到,对于100个柱子,只有10次交易,有4个赢家(计算箭头),而opti的结果显示有89次交易。因此,基于视觉回测,屏幕结果是正确的(对于opti所说的最佳时期),而CSV是错误的。因此,这表明我们不应该相信CSV的结果,无论是用于计算交易还是用于确定哪些设置是最好的。
所以我把这个问题用更简单的方法解决了。我做了一个简单的指标(附后),在屏幕上显示优化双倍函数和启动int函数(主要计算)的结果。所以你不需要写CSV就能看到这两个结果是不同的。
基于这个指标,我的(简单)问题是:为什么地球上两个完全相同的计算(一个在Start函数中,另一个在Optimization double函数中)会得到不同的结果?如果有人能帮助我理解这一点,那就太好了,因为我真的不明白。在我看来,两者是完全一样的,应该得出相同的结果。非常感谢。
PS:这个指标还是有点慢,你可能需要等待几秒钟才能显示结果。不过,当结果出来的时候,它会播放声音。
Hi Airquest,
我试了一下你的 "样本测试",但无法使其工作。我看了看代码,它有400多行被删除了......所以我没有管它。
我确实回去测试了你的原始代码......我想我开始明白你所说的 "太多交易 "的问题了。
为了保持测试的简单和快速......我只用Bands进行了测试......并最小化了设置(Bands 10和Bands 20),只运行了两(2)次,以便更快地看到结果。
我还关注了 "BarsToCount",因为这似乎与交易的数量直接相关......。
虽然我没有找到任何答案......但我可能有一些更多的线索给你......
"BarsToCount"...似乎不起作用...
我运行了你的代码,有1个柱子...2个柱子...和100个柱子...。
结果都完全一样......这不应该......因为更多的柱子应该等于更多的交易......而更少的柱子应该等于更少的交易。
我附上了我所做的三次运行的屏幕截图......只改变了 "BarsToCount"......。
也许这条线索可以帮助你找到其他的问题。祝你找到你的答案。
希望这有帮助。
罗伯特
最后我成功地制作了一个工作版本。现在opti的结果是正确的,与屏幕上的结果一致。我只是去掉了双重功能,把它全部放到了启动功能中。所以现在,你只有一个选择:在测试者模式(所以它会使用默认设置)或在优化者模式(不会绘制任何东西,只会写一个CSV文件)下运行它。运行优化后,你可以回到测试者模式,检查结果是否正确。
如果你发现任何问题,请让我知道,最好是通过PM,因为我们不想破坏这个主题。伙计们,非常感谢你们的帮助。这个论坛很好,人们互相激励和帮助(大部分时间),这也是我在这里发表的原因。现在让我们开始回测
你好,艾奎斯。
罗伯特,谢谢你的帮助。请看我上面发布的版本,它现在应该可以工作了。
PS : 为了限制条形图的数量,你需要把UseAllBars变成False。你可能没有看到这一点。
请注意。
嗨,Airquest。
干得好,跟踪它并让它工作...!
我期待着这周能与它一起玩...
谢谢你,保重。
罗伯特