/*
Входные параметры индикатора
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
*/double signal=iCustom(Symbol(),Period(),"MACD",
FastEMA,//параметр 1
SlowEMA,//параметр 2
SignalSMA,//параметр 30,//номер буфера индикатора
SignalBar);//бар, с которого получаем данные (внешняя переменная)
那么,只有这个iCustom 行被改变了?那么我们需要详细了解一下这个指标。
你找错了主题。你专注于优化,而问题显然出在EA上(参数转移 等)。暂时忘掉优化,把注释和打印机放在EA中,在视觉中用不同的参数运行,控制中间数据,找到所有的错误,然后再回到优化上。
同样的结果表明,优化的参数并不影响交易信号的形成,这是EA的问题,而不是测试者的问题。
如果我这样设置参数:(iCustom(NULL, 0, "ART", MA_Period, KFK, 0, 1), Digits); - 所有的零都出现,就像我上面举的例子。
如果我设置iCustom(NULL, 0, "ART", 0, 1), Digits);-那么就会出现计算值。
但它们都是一样的,尽管在测试器中,当以不同的参数运行时,交易的结果是非常不同的。
安吉拉,为了使优化工作顺利进行,你必须以某种方式在算法中使用优化器所改变的值,特别是你必须将它们传递给指标。如果你想优化它,有必要向指标传递参数。当你调用没有参数的指标时(即第二种情况iCustom(NULL, 0, "ART", 0, 1)),你实际上省略了参数,它用默认的参数工作,这些参数是在ART内部注册的(当然,它们没有被优化)。带参数的完整调用--第一个选项--是你需要优化的。最有可能的是,问题在于你没有正确传递参数。例如,如果他们在指标中的数量较少,而你传递了一个更好的值,或者反过来说,如果你不给他们所有的参数。如果该指标是一个秘密,至少要给出其参数列表。
谢谢大家,原因很简单。 从指标到EA的参数发送顺序不一致。
在专家顾问中是
Extern int MA_Period=151; // 101 10 201
extern double KFK=0.9; // 0.7 0.005 1.
相反,在指标中
外部双倍KFK=0.9; // 0.7 0.005 1.
外部int MA_Period=151; // 101 10 201
它在可视化模式下工作,但在优化模式 下不工作。
恭喜你。我还记得在传递参数方面的挣扎,直到我习惯于肆无忌惮。现在我把一段带有所有外延的指标代码复制到Expert Advisor中,然后写成iCustom,看一下样本。它有点愚钝,但从那时起,就没有错误了。
还有一件事。我查阅了komposter的 iCustom的说明性写作风格。一切都在我的手掌心上。
我正在调试我的第二个版本的TS,与第一个版本相比,交易数量增加了,可优化的参数数量明显减少了,尽管缩减了一倍。
但是我有一些疑问,系统在每个月都不是很稳定。 我还没有优化它,但是用GA的结果将在48小时内得到。800多次的运行并不令人鼓舞,6月份的优化结果比同期用初始参数测试的结果更糟糕。我带来了三份统计资料,分别是6月、7月和8月的,到目前为止我只调试了Buy。 我可以因为优化而把这样的系统拉出来,并获得稳定的结果,还是应该马上开始开发一个新的系统?
如果专家顾问中只涉及到mql代码,那一定是那里的代码不正确,因为800次运行不应该在开盘价时变慢。或者说我是不是误解了什么。通常情况下,具有外部约束力的专家,如神经网络库等,都是如此缓慢。当然,我们也可以假设mql有大量的嵌套循环(或调用一些 "贪婪 "的指标)--那么它可能会被完全减慢。因此,我只能重复所谓需要重构的想法;-)- 重新检查并重新转换一些代码片段或整个代码。
到写这篇文章的时候,8000多次运行中的800次已经过去,优化了5个小时,还有2天。但我没有等到最后,减少了一些参数的枚举范围,重新启动,8个小时后整个优化就完成了。
最好的结果。
盈利交易的数量超过亏损交易的数量,平均盈利交易多于亏损交易是一个非常好的迹象。在我看来,你不应该放弃这个系统,你应该在更长的时间内研究其行为。你也可以把它放在另一个十字架上。