交易中的机器学习:理论、模型、实践和算法交易 - 页 2065 1...205820592060206120622063206420652066206720682069207020712072...3399 新评论 Forester 2020.11.02 12:02 #20641 Evgeniy Chumakov: 假设历史上没有空隙,而且所有的日子都有1440分钟(星期五较少),代码应该是这样的 即使是欧元区也有差距。与酒吧的工作时间 Evgeniy Chumakov 2020.11.02 12:06 #20642 elibrarius: 即使在eurusd上也会出现缺口。 与酒吧时间的工作 这是可以理解的,如果是我,我也会这么做。这只是为了让它更容易解释。 Aleksey Nikolayev 2020.11.02 12:43 #20643 为了保存,在 rates[i].high 中收集了一个新的行,这似乎是有效的。 #property script_show_inputs //+------------------------------------------------------------------+ input datetime tstart = D'2020.5.1 00:00'; // начало промежутка исследуемого времени input datetime tstop = D'2020.10.1 00:00'; // конец промежутка исследуемого времени string zztn = "dvol\\" + _Symbol + ".txt"; // text file name //+------------------------------------------------------------------+ #define NM 1440 ulong NSM = 60; ulong NSD = 60 * 1440; //+------------------------------------------------------------------+ void OnStart() { MqlRates rates[]; double vol[NM] = {0.0}, d; int n[NM] = {0}, t; int nprice = CopyRates(Symbol(), PERIOD_M1, tstart, tstop, rates); for(int i = 0; i < nprice; ++i) { t = (int)((((ulong)rates[i].time) % NSD) / NSM); d = rates[i].close - rates[i].open; ++n[t]; vol[t] += d * d; } for(int i = 0; i < NM; ++i) { if(n[i] > 1) vol[i] /= n[i]; vol[i] = sqrt(vol[i]); } for(int i = 0; i < nprice; ++i) { t = (int)((((ulong)rates[i].time) % NSD) / NSM); if(vol[t] > 0) rates[i].high = (rates[i].close - rates[i].open) / vol[t]; if(i > 0) rates[i].high += rates[i - 1].high; } int ft = FileOpen(zztn, FILE_WRITE | FILE_COMMON | FILE_ANSI | FILE_TXT); FileWriteString(ft, "t p"); for(int i = 0; i < nprice; ++i) FileWriteString(ft, "\n" + (string)((ulong)rates[i].time) + " " + (string)rates[i].high); FileClose(ft); } Forester 2020.11.02 13:58 #20644 Aleksey Nikolayev: 为了保存,新的一行被收集在 rates[i].high 中,这似乎是有效的。 你把过去的条形图,例如从2020.5.1 00:00到未来的条形图,c 2020.10.1 00:00和那些在两者之间的条形图正常化。 你不能在真正的市场上这样做。 你必须对每个柱子进行同样的计算,但只对过去的柱子进行计算。 Forester 2020.11.02 14:31 #20645 Aleksey Nikolayev: 为了保存,新的一行被收集在rate[i].high中。 即使你做得很好,你也可以用net/forest非常准确地再现那些规范化的蜡烛图高度。 作为取数,我们提供了60个蜡烛图的高度,其中有一天的偏移量,并教授在你的代码中获得的归一化高度。 训练应该接近100%的准确性。 。 也就是说,规范化的蜡烛图高度不包含任何新的信息。 唯一的好处是不需要通过60个额外的特征来进行模型训练。 这是不可能的,有人会提交作为fiches酒吧2个月前,即新的信息,对于那些没有提交的人,仍然有)。 当然,我们应该检查这些归一化烛台的高度是否提高了模型的效率,当然我们也应该使用它(或你的一个筹码,这更可取,或由它组成的60分之一)。 mytarmailS 2020.11.02 15:07 #20646 让我们已经检查了一些东西,否则已经写了三页,浪费了精力,而且错误的增量上帝也不允许它是半个百分点。 Aleksey Vyazmikin 2020.11.02 15:26 #20647 elibrarius: 这很奇怪。我想知道如何能解释这个问题? 我有另一个版本的评论,但由于逻辑原因我不喜欢它。你用哪个RandomInteger()? 我是XOR。 我不知道该如何解释 :) 我把这个功能 int RandomInteger(int max_vl) { return (int)MathFloor((MathRand()+MathRand()*32767.0)/1073741824.0*max_vl); //случайное Int от 0 до 1073741824 } Aleksey Vyazmikin 2020.11.02 15:29 #20648 马克西姆,我怀疑C++的模型没有从CatBoost 中正确卸载--你能和python的模型进行比较吗? 我在MQL5中的模型解释值与二进制模型的值之间存在差异,其中CPP模型的值取自于二进制模型。三角值约为0.15--这是个很大的数字。 Aleksey Nikolayev 2020.11.02 15:39 #20649 elibrarius: 你将过去的条形图,例如从2020.5.1 00:00到未来的条形图,从2020.10.1 00:00以及两者之间的条形图进行归一化。 你在现实世界中不会这样做。 你必须从每个条形图中做大约相同的计算,但只从过去的条形图中计算。 是的,展望未来的问题是存在的,还有其他没有立即显现的问题。它不太适用于直接交易,但对于初步分析来说,它是不可替代的。例如,非相对增量之间的关联性是没有意义的。 Forester 2020.11.02 16:00 #20650 Aleksey Nikolayev: 是的,可以窥见未来,以及其他不是很明显的问题。直接来说,对于直接交易,它不太适用,但对于初步分析,它是不可缺少的。例如,计算非相对增量之间的相关关系是没有意义的。 我会考虑到这一点,也许有一天我会为以前的酒吧重新做一遍,并检查是否提高了训练性。 如果有人早些检查过,请告诉我。 初步分析是什么?你把模型送入输入,并比较是否有这个功能。 我认为最好是按最后30分钟进行正常化。 作为一种选择,这一天的最后30分钟和最后5天的30分钟。 对于3月份的波动方式,你的变体将需要很长的时间来适应,一个月或一个半月当前的价值将比一两个月前高很多。因此,该模型将在一个未知区域工作。它根本就没有这种工作的例子,无法在此基础上进行预测。 随着过去一周的正常化,它将更快地学习新的游戏规则。 1...205820592060206120622063206420652066206720682069207020712072...3399 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
假设历史上没有空隙,而且所有的日子都有1440分钟(星期五较少),代码应该是这样的
即使在eurusd上也会出现缺口。 与酒吧时间的工作
这是可以理解的,如果是我,我也会这么做。这只是为了让它更容易解释。
为了保存,在 rates[i].high 中收集了一个新的行,这似乎是有效的。
为了保存,新的一行被收集在 rates[i].high 中,这似乎是有效的。
你把过去的条形图,例如从2020.5.1 00:00到未来的条形图,c 2020.10.1 00:00和那些在两者之间的条形图正常化。
你不能在真正的市场上这样做。
你必须对每个柱子进行同样的计算,但只对过去的柱子进行计算。
为了保存,新的一行被收集在rate[i].high中。
作为取数,我们提供了60个蜡烛图的高度,其中有一天的偏移量,并教授在你的代码中获得的归一化高度。
训练应该接近100%的准确性。
。
也就是说,规范化的蜡烛图高度不包含任何新的信息。
唯一的好处是不需要通过60个额外的特征来进行模型训练。
这是不可能的,有人会提交作为fiches酒吧2个月前,即新的信息,对于那些没有提交的人,仍然有)。
当然,我们应该检查这些归一化烛台的高度是否提高了模型的效率,当然我们也应该使用它(或你的一个筹码,这更可取,或由它组成的60分之一)。
这很奇怪。我想知道如何能解释这个问题?
我有另一个版本的评论,但由于逻辑原因我不喜欢它。
你用哪个RandomInteger()? 我是XOR。
我不知道该如何解释 :)
我把这个功能
马克西姆,我怀疑C++的模型没有从CatBoost 中正确卸载--你能和python的模型进行比较吗?
我在MQL5中的模型解释值与二进制模型的值之间存在差异,其中CPP模型的值取自于二进制模型。三角值约为0.15--这是个很大的数字。
你将过去的条形图,例如从2020.5.1 00:00到未来的条形图,从2020.10.1 00:00以及两者之间的条形图进行归一化。
你在现实世界中不会这样做。
你必须从每个条形图中做大约相同的计算,但只从过去的条形图中计算。
是的,展望未来的问题是存在的,还有其他没有立即显现的问题。它不太适用于直接交易,但对于初步分析来说,它是不可替代的。例如,非相对增量之间的关联性是没有意义的。
是的,可以窥见未来,以及其他不是很明显的问题。直接来说,对于直接交易,它不太适用,但对于初步分析,它是不可缺少的。例如,计算非相对增量之间的相关关系是没有意义的。
如果有人早些检查过,请告诉我。
初步分析是什么?你把模型送入输入,并比较是否有这个功能。
我认为最好是按最后30分钟进行正常化。
作为一种选择,这一天的最后30分钟和最后5天的30分钟。
对于3月份的波动方式,你的变体将需要很长的时间来适应,一个月或一个半月当前的价值将比一两个月前高很多。因此,该模型将在一个未知区域工作。它根本就没有这种工作的例子,无法在此基础上进行预测。
随着过去一周的正常化,它将更快地学习新的游戏规则。