交易中的机器学习:理论、模型、实践和算法交易 - 页 516 1...509510511512513514515516517518519520521522523...3399 新评论 Maxim Dmitrievsky 2017.11.03 22:13 #5151 elibrarius。检查和搭架子--比NS快得多(4分钟),结果也差不多。而有趣的是线性回归 的计算速度更快,结果也一样。 正如有人在这里写的那样--这都是关于功能的。 好吧,这是最主要的,有不同型号和包的游戏不会有大的增长:) Forester 2017.11.03 22:13 #5152 马克西姆-德米特里耶夫斯基。 在那里,据我所知,你可以设置1-2个历时,因为它几乎总是在第一次就收敛......也许这是一个遗漏?尽管我已经很久没有使用它了,我可能被混淆了。 我在任何地方都没有看到一个以纪元为单位的限制 Maxim Dmitrievsky 2017.11.03 22:16 #5153 elibrarius。 我还没有在任何地方看到过纪元的限制mlptrainlm函数/************************************************************************* 使用精确Hessian计算和正则化的改良Levenberg-Marquardt的神经网络训练。子程序通过从随机位置重新启动来训练神经网络。该算法非常适用于中小型问题(数百个权重)。 输入参数: 网络 - 具有初始化几何形状的神经网络 XY - 训练集 NPoints - 训练集大小 衰减 - 权重衰减常数,>=0。001 衰减项'Decay*||Weights||^2'被添加到误差函数中。 如果你不知道选择什么样的衰减,使用0.001。 重新启动 - 从随机位置重新启动的次数,>0。如果你不知道选择什么样的重新启动,使用2。 我想这就是了。 Forester 2017.11.03 22:17 #5154 马克西姆-德米特里耶夫斯基。 嗯,这是最主要的,玩不同的模型和包不会给你带来多大的提升 :) 我认为NS的优势在于找到非线性的依赖关系并加以利用。 在弗拉基米尔的最后一篇文章 中,有2个这样的例子。线性回归它们反而会恶化。 Forester 2017.11.03 22:20 #5155 马克西姆-德米特里耶夫斯基。 mlptrainlm函数 这只是一个推荐值,没有人阻止至少1000人,但这需要很长的时间......我看了一下代码--只有一个关于历时数的循环(顺便说一下,我也用了2)。 Maxim Dmitrievsky 2017.11.03 22:26 #5156 elibrarius。 我认为NS的优势在于找到非线性的依赖关系并加以利用。 弗拉基米尔的最后一篇文章 中就有2篇。相反,线性回归会因为它们而退化。脚手架也是专门用于非线性模式的提前,它对线性模式不起作用。 Yuriy Asaulenko 2017.11.03 22:28 #5157 elibrarius: 这只是一个推荐值,没有人阻止你放1000,但会花很长时间......在代码中看了一下--只有一个关于历时数的循环(顺便说一下,我也用了2)。 在6层的基础上做到了1500。是的,很长--大约32个小时,但是,首先,结果超过了预期。第二,与手工投射 相比,根本不长)。而用MLP--标准的结构,教你喜欢的东西。)) Forester 2017.11.03 22:35 #5158 马克西姆-德米特里耶夫斯基。 脚手架也是专门用于非线性模式的提前,它对线性模式不起作用。 也许这就是为什么验证图上的森林比线性回归 好0.4%之多))。学习时间分别为36和3分钟(在265个输入时)。我开始喜欢线性回归 了。 Maxim Dmitrievsky 2017.11.03 22:37 #5159 如果有人想玩一玩,脚手架以增量方式学习,并提前预测1小节。在设置中,设置学习深度、增量的滞后和条目数(每一个新条目都是向后移动1个小节)。然后从当前价格 中扣除预测值。直方图只为每一个新的柱状图而画,我在visualizer中看到了它。//+------------------------------------------------------------------+ //| NonLinearPredictor.mql5 | //| Dmitrievsky Max | //| https://www.mql5.com/ru/users/dmitrievsky | //+------------------------------------------------------------------+ #property copyright "Dmitrievsky Max." #property link "https://www.mql5.com/ru/users/dmitrievsky" #property version "1.00" #property indicator_separate_window #property indicator_buffers 2 #property indicator_plots 1 //--- plot Label1 #property indicator_label1 "Tensor non-linear predictor" #property indicator_type1 DRAW_COLOR_HISTOGRAM #property indicator_color1 clrOrangeRed,clrOrange #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- подключим библиотеку Alglib #include <Math\Alglib\alglib.mqh> //RDF system. Here we create all RF objects. CDecisionForest RDF; //Random forest object CDFReport RDF_report; //RF return errors in this object, then we can check it double RFout[1], vector[]; //Arrays for calculate result of RF CMatrixDouble RMmatrix; int retcode=0; //--- input parameters input int last_bars=500; input int lag=5; input int bars_seria = 100; //--- indicator buffers double SpreadBuffer[]; double ColorsBuffer[]; //--- время открытия предыдущего бара static datetime last_time=0; int needToLearn=0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,SpreadBuffer,INDICATOR_DATA); SetIndexBuffer(1,ColorsBuffer,INDICATOR_COLOR_INDEX); //--- установим индексацию как в таймсерии - от настоящего в прошлое ArraySetAsSeries(SpreadBuffer,true); ArraySetAsSeries(ColorsBuffer,true); RMmatrix.Resize(last_bars,bars_seria); ArrayResize(vector,bars_seria-1); //--- IndicatorSetString(INDICATOR_SHORTNAME,StringFormat("Non-linear predictor (%s, %s, %s)",_Symbol,(string)last_bars, (string)lag)); IndicatorSetInteger(INDICATOR_DIGITS,5); return(INIT_SUCCEEDED); } int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- ArraySetAsSeries(close,true); if(prev_calculated==0 || needToLearn>last_bars/5) { for(int i=0;i<last_bars;i++) { for(int l=0;l<ArraySize(vector);l++) { RMmatrix[i].Set(l,MathLog(close[i+1+l]/close[i+lag+1+l])); } RMmatrix[i].Set(bars_seria-1,MathLog(close[i]/close[i+lag])); } CDForest::DFBuildRandomDecisionForest(RMmatrix,last_bars,bars_seria-1,1,100,0.95,retcode,RDF,RDF_report); needToLearn=0; } if(isNewBar()) { if(retcode==1) { for(int i=0;i<ArraySize(vector);i++) { vector[i]=MathLog(close[i]/close[i+lag]); } CDForest::DFProcess(RDF,vector,RFout); SpreadBuffer[0]=MathLog(close[0]/close[0+lag])-RFout[0]; ColorsBuffer[0]=(SpreadBuffer[0]>0?0:1); } needToLearn++; } return(rates_total); } //+------------------------------------------------------------------+ //| возвращает true при появлении нового бара | //+------------------------------------------------------------------+ bool isNewBar() { datetime lastbar_time=datetime(SeriesInfoInteger(Symbol(),_Period,SERIES_LASTBAR_DATE)); if(last_time==0) { last_time=lastbar_time; return(false); } if(last_time!=lastbar_time) { last_time=lastbar_time; return(true); } return(false); } Maxim Dmitrievsky 2017.11.03 22:38 #5160 elibrarius。 也许这就是为什么验证图中的森林比线性回归 好了0.4%之多))。学习时间分别为36和3分钟(在265个输入时)。我开始喜欢线性回归 了。我也进行了比较--我做了BP自回归,我也通过森林做了同样的事情--差异很小:)从本质上说,这意味着那里或那里没有正常的模式。 1...509510511512513514515516517518519520521522523...3399 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
检查和搭架子--比NS快得多(4分钟),结果也差不多。而有趣的是线性回归 的计算速度更快,结果也一样。
正如有人在这里写的那样--这都是关于功能的。
好吧,这是最主要的,有不同型号和包的游戏不会有大的增长:)
在那里,据我所知,你可以设置1-2个历时,因为它几乎总是在第一次就收敛......也许这是一个遗漏?尽管我已经很久没有使用它了,我可能被混淆了。
我还没有在任何地方看到过纪元的限制
mlptrainlm函数
嗯,这是最主要的,玩不同的模型和包不会给你带来多大的提升 :)
在弗拉基米尔的最后一篇文章 中,有2个这样的例子。
线性回归它们反而会恶化。
mlptrainlm函数
我认为NS的优势在于找到非线性的依赖关系并加以利用。
弗拉基米尔的最后一篇文章 中就有2篇。
相反,线性回归会因为它们而退化。
脚手架也是专门用于非线性模式的提前,它对线性模式不起作用。
这只是一个推荐值,没有人阻止你放1000,但会花很长时间......在代码中看了一下--只有一个关于历时数的循环(顺便说一下,我也用了2)。
脚手架也是专门用于非线性模式的提前,它对线性模式不起作用。
如果有人想玩一玩,脚手架以增量方式学习,并提前预测1小节。在设置中,设置学习深度、增量的滞后和条目数(每一个新条目都是向后移动1个小节)。然后从当前价格 中扣除预测值。直方图只为每一个新的柱状图而画,我在visualizer中看到了它。
也许这就是为什么验证图中的森林比线性回归 好了0.4%之多))。学习时间分别为36和3分钟(在265个输入时)。我开始喜欢线性回归 了。
我也进行了比较--我做了BP自回归,我也通过森林做了同样的事情--差异很小:)从本质上说,这意味着那里或那里没有正常的模式。