void calcSignal()
{
sig1=0;
for(int i=0;i<ArraySize(ag1.agent);i++) - the agents are stored in "ag1.agent" array. We have 5 agents, so array size is 5
{
CopyClose(_Symbol,0,0,100,ag1.agent[i].inpVector); - for each agent from array (now we have 5 agents) fill predictors (100 close prices). For each feature we fill a single value
normalizeArrays(ag1.agent[i].inpVector);
}
sig1=ag1.getTradeSignal(); this function return averaged signal for all agents
}
2018.09.1601:33:27.3192018.09.1323:59:59 Agent 5 Model 40 passed with errors: 0.24221789883268480.50972762645914392018.09.1601:33:27.3192018.09.1323:59:59 Agent 5 Model 41 passed with errors: 0.22957198443579770.48249027237354092018.09.1601:33:27.3192018.09.1323:59:59 Agent 5 Model 42 passed with errors: 0.25583657587548640.49610894941634242018.09.1601:33:27.3192018.09.1323:59:59 Agent 5 Model 43 passed with errors: 0.24221789883268480.48638132295719842018.09.1601:33:27.3192018.09.1323:59:59 Agent 5 Model 44 passed with errors: 0.24221789883268480.47665369649805452018.09.1601:33:27.3192018.09.1323:59:59 Agent 5 Model 45 passed with errors: 0.2451361867704280.53793774319066152018.09.1601:33:27.3192018.09.1323:59:59 Agent 5 Model 46 passed with errors: 0.25875486381322960.49124513618677042018.09.1601:33:27.3192018.09.1323:59:59 Agent 5 Model 47 passed with errors: 0.24805447470817120.47762645914396892018.09.1601:33:27.3192018.09.1323:59:59 Agent 5 Model 48 passed with errors: 0.26361867704280160.50097276264591442018.09.1601:33:27.3192018.09.1323:59:59 Agent 5 Model 49 passed with errors: 0.26167315175097280.490272373540856
CRLAgents *ag1=new CRLAgents("RlExp1iter",5,100,50,regularize,learn);
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
ag1.setAgentSettings(0,100,50,0.1); for each agent you can set number of features, number of trees and r setting, individually
ag1.setAgentSettings(1,50,50,0.2);
ag1.setAgentSettings(2,30,50,0.05);
ag1.setAgentSettings(3,20,50,0.1);
ag1.setAgentSettings(4,10,50,0.05);
//---return(INIT_SUCCEEDED);
}
因为模型仍然很烂^),有很大的误差,需要模型的工作时间更长
例如,2个月的学习和1周的交易你可能是正确的,但我不认为任何这样的模型会被RDF发现,哪怕是完整的一天,直到我们可以做类似于 "ALPHA ZERO "算法的无限随机蜡烛模拟。
因为市场几乎每小时都在变化,如果突然发生新闻事件或市场因某种原因而改变其行为,一个模型将可怕地失败。但如果我们做了数百万次的蜡烛模拟,那么可能系统可以在市场变化时以最小的损失恢复,并能在之后迅速恢复损失。这似乎是可能的。
我将同时尝试你的模型选择方法和我的蜡烛模拟方法,看看一切进展如何:))。
顺便说一下,我试过1天训练,5天训练等,但第二天就失败了:))))))))))))))))。
因此,一个模型可能无法工作......尽管我可能是错的......
另外,我还有一个请求,马克西姆......
当你发表文章时,请尽量对代码进行注释,这样可以让别人快速、容易地理解代码,从而使我们的工作进展更快......
否则,如果我需要很长的时间来理解代码,那么就需要更多的时间来修改它。
所以我请求你尽可能多地添加代码的注释和解释。现在我将尝试快速理解,如果我有什么不明白的地方会问你:))
另外,我还有一个请求,马克西姆......
当你发表文章时,请尽量对代码进行注释,这样可以让别人快速、容易地理解代码,从而使我们的工作进展更快......
否则,如果我需要很长的时间来理解代码,那么就需要更多的时间来修改它。
所以我请求你尽可能多地添加代码的注释和解释。现在我将尝试快速理解,如果我有什么不明白的地方会问你:))
好了,现在我只是不断地改变许多东西,没有意义的评论。
你也可以考虑如何改变输出...也许使用不同设置的 "之 "字形,而不是奖励功能 或其他东西。好了,现在我只是不断地改变许多东西,没有意义的评论。
你也可以考虑如何改变输出...也许使用不同设置的 "之 "字形,而不是奖励功能 或其他东西。我只是快速浏览了一下代码。但到目前为止,我还没有弄清楚指标到底在哪里,或者它是如何决定交易入口的。所以我不确定该如何处理输出。你是说使用GDMH的输出?
我只是用各种设置进行测试,但它似乎完全是随机交易。
另外,在测试阶段,它不会创建 "Mtrees "文本文件,对吗?
我是说你提供的代码并不完整,对吗?或者说,如果直接连接到图表上而不进行优化,它是否能够进行交易。
我只是快速浏览了一下代码。但到目前为止,我还没有弄清楚指标到底在哪里,或者它是如何决定交易入口的。所以我不确定该如何处理输出。
我只是用各种设置进行测试,但它似乎完全是随机交易,因为它显示了一些奇怪的行为,因此,我只是重新启动了我的服务器。它是否与VPS的真实内核有任何关系?
另外,在测试阶段,它不会创建 "Mtrees "文本文件,对吗?
当第一次在测试器中运行时,选择 "true"
他将进行随机交易,然后学习并保存模型。
第2次运行选择错误。就这样吧。而且他上传模型,并将在+进行交易。
接下来,在EA中你可以添加代理,现在你有5个代理,每个代理有100个功能,50棵树
在这个函数中,我们为每个代理人添加100个收盘价(100个预测因素)。然后将数据规范化。你可以添加不同的指标,例如前50个特征--收盘价,接下来的25个rsi,接下来的25个adx,或者在你声明代理时改变预测器的数量
每次交易后,他都会更新政策,当交易结束时--更新奖励(TD,时间差RL)。
真正简单的图书馆使用
在训练模式下,他将向你展示每个迭代的错误日志
在测试器的交易模式中,显示每个代理的训练和测试子集的最终误差
100个收盘价的结果。
当第一次在测试器中运行时,选择 "true"
他将进行随机交易,然后学习并保存模型。
第2次运行选择了虚假。就这样吧。他上传了模型,并将进行交易+。
接下来,在EA中你可以添加代理,现在你有5个代理,每个代理有100个功能,50棵树
在这个函数中,我们为每个代理人添加100个收盘价(100个预测因素)。然后将数据规范化。你可以添加不同的指标,例如前50个特征--收盘价,接下来的25个rsi,接下来的25个adx,或者在你声明代理时改变预测器的数量
每次交易后,他都会更新政策,当交易结束时--更新奖励(TD,时间差RL)。
库的真正简单用法
是的,这似乎很简单,同时也很强大......让我们实验一下,看看......伟大的工作!!!!!。
那么,GDMH的用途在哪里?
我正在考虑写我的GDMH代码。你可以向我展示RDF输入和输出的代码,或者你试图实现GDMH的具体位置,这样我就可以试着写我的那段代码,然后,我们可以比较你的代码和我的代码的结果并进行评估。
是的,这似乎很简单,同时也很强大。让我们实验一下,看看。伟大的工作!!!!!。
那么,GDMH的用途在哪里?
我正在考虑写我的GDMH代码。你可以向我展示RDF输入和输出的代码,或者你试图实现GDMH的具体位置,这样我就可以试着写我的那段代码,然后,我们可以比较你的代码和我的代码的结果并进行评估。
在这里,我使用了简单的内核CRLAgent::kernelizedMatrix(void)(在库中),所以需要为gdmh修改这个函数
在这里,我使用了简单的内核CRLAgent::kernelizedMatrix(void)(在库中),所以需要为gdmh修改这个函数
好吧,让我们看看我是否能写出自己的代码....
如果只是关于GDMH逻辑,那么我可以很容易地将GDMH算法翻译或转换为MQL5代码,但如果它与其他一些内核函数或库有关,那么我需要时间来研究和转换。
另一个特点是:你可以在委员会中配置每个代理。
当填补预测值时,只需改变这里。
同时,你可以添加不同的代理组
好吧,让我们看看我是否能写出自己的代码....
如果只是关于GDMH逻辑,那么我可以很容易地将GDMH算法翻译或转换为MQL5代码,但如果它与其他一些内核函数或库有关,那么我需要时间来研究和转换。
如果你能转换gmdh逻辑 - 这将是非常有帮助的,然后我可以为我的图书馆改变它。