交易中的机器学习:理论、模型、实践和算法交易 - 页 7 1234567891011121314...3399 新评论 СанСаныч Фоменко 2016.05.31 17:14 #61 Dr.Trader:谢谢你,我试过了。我可以看出,你在选择预测器方面做了很多工作,因为神经元很容易对它们进行训练,并将结果也存储在测试数据集上。下面的结果是指关于R1.F3的培训。1)Rattle有一个有趣的结果。采用标准配置的HH显示出30%/29%/33%的训练/验证/测试误差。R2.F3的误差为35%。但这一切真的只是一个幸运的案例,在其他配置中,它很容易训练不足或训练过度,在这里它只是运气好。2)然后我采取了一个简单粗暴的无监督学习方法,200个隐藏的神经元,网络被训练到停止改进。错误训练/验证/测试/R2.F3 - 2%/30%/27%/45%。很明显,网络被重新训练。3)监督下的学习。这与树木不同,但你应该始终对一个神经元这样做,不要过度训练它。它的本质是偶尔暂停训练,检查训练/验证/测试结果。我不知道结果整理的黄金法则,但很正常的做法是在训练数据集上进行训练,然后在验证和测试数据集中寻找错误,当验证/测试中的错误不再下降时停止训练。这为防止过度训练提供了某种保障。在这整个过程中,R2.F3被认为是不可用的,测试只在训练结束后进行。在这种情况下,训练/验证/测试/R2.F3的误差为27%/30%/31%/37%。这里又有过度训练的情况,但不多。你可以在列车误差明显小于验证/测试误差后提前停止学习过程,但这是猜测......可能有帮助,也可能没有帮助。R1.F1 "目标变量有三个值,Rattle不能用神经元做这个,你必须在R中自己写代码,我跳过这个数据集。"R1.F4""R1.F5""R1.F6 "在Rattle neuronka中对所有4个错误给出了差不多的结果,我认为用neuronka的适当方法也会得到差不多的结果,我没有进一步处理它们。我有类似的森林和阿达的数字。现在,如果我们回到我们的 "公羊"--如何从一个任意的预测器列表中抛弃噪音?我有一些经验性的算法,从170个预测器中选出27个预测器。我也曾用它来分析其他人的预测器组,也很成功。基于这一经验,我认为所有来自R的、在其算法中使用 "重要性 "变量的方法都不能清除预测器集的噪音。我向本支部的所有读者呼吁:如果原始数据以RData或不需要处理的Excel文件形式呈现,我愿意做相应的分析。除此以外。我附上了一些文章,据说这些文章解决了清除原始预测器集的噪音问题,而且质量要好得多。可惜我现在没有时间去尝试。也许有人会尝试并公布结果? 附加的文件: Principal_Components_Regression.zip 1345 kb Dr. Trader 2016.05.31 19:52 #62 SanSanych Fomenko: 附上一些文章,据说这些文章解决了清除原始预测器集的噪音问题,而且质量更高。可惜我现在没有时间去尝试。也许有人会试一试并公布结果?谢谢,翻阅了文件,但没有找到我需要的东西。我正试图训练我的外汇模型,在M15和H4之间。对我来说,仅仅获取最后一个柱状图的数据是不够的,我需要一次获取几十个柱状图的数据,然后一个接一个地放在一个长的数组中作为模型输入。例如(open_bar1, close_bar1, hh_bar1, open_bar2, close_bar2, hh_bar2, open_bar3, close_bar3, hh_bar3,...)。如果某些选择方法会告诉我删除第二根柱子的时间,这对我没有帮助,该方法应该告诉我删除所有关于时间的数据(索引3、6、9...)。我没有理解错吧,在你的文件ALL_cod.RData中,你也可以使用Rat_DF1进行训练(指定必要的目标),然后使用Rat_DF2和Rat_DF3进行检查?我附上了我的R语言代码,供感兴趣的人参考,它实现了误差控制的神经网络 训练。要选择另一个目标变量,你可以简单地将 "Short_Long.75 "替换为 "Short_Long.35"、"Flet_Long"、"Short_Flet"、"Flet_In "中的某一个。这比替换不同的数据集更方便。 附加的文件: ALL_cod_nnet.txt 15 kb Alexey Burnakov 2016.05.31 22:14 #63 Dr.Trader:我正试图训练我的外汇模型,在M15-H4范围内的某个地方。对我来说,仅仅获取最后一个条形图的数据是不够的,我需要一次获取几十个条形图的数据,并把它们一个接一个地放在一个长的数组中作为模型输入。例如(open_bar1, close_bar1, hh_bar1, open_bar2, close_bar2, hh_bar2, open_bar3, close_bar3, hh_bar3,...)。如果一些选择方法会告诉我,我需要删除第二个柱状体的时间,这对我没有帮助,该方法应该告诉我,例如我可以删除所有的时间数据(索引3、6、9...)。可能需要时间数据,因为不同时段的市场运作方式不同。看看我的外汇功能设置。> names(sampleA) [1] "lag_diff_2" "lag_diff_3" "lag_diff_4" "lag_diff_6" "lag_diff_8" "lag_diff_11" "lag_diff_16" [8] "lag_diff_23" "lag_diff_32" "lag_diff_45" "lag_diff_64" "lag_diff_91" "lag_diff_128" "lag_diff_181" [15] "lag_diff_256" "lag_diff_362" "lag_diff_512" "lag_diff_724" "lag_mean_diff_2" "lag_mean_diff_3" "lag_mean_diff_4" [22] "lag_mean_diff_6" "lag_mean_diff_8" "lag_mean_diff_11" "lag_mean_diff_16" "lag_mean_diff_23" "lag_mean_diff_32" "lag_mean_diff_45" [29] "lag_mean_diff_64" "lag_mean_diff_91" "lag_mean_diff_128" "lag_mean_diff_181" "lag_mean_diff_256" "lag_mean_diff_362" "lag_mean_diff_512"[36] "lag_mean_diff_724" "lag_max_diff_2" "lag_max_diff_3" "lag_max_diff_4" "lag_max_diff_6" "lag_max_diff_8" "lag_max_diff_11" [43] "lag_max_diff_16" "lag_max_diff_23" "lag_max_diff_32" "lag_max_diff_45" "lag_max_diff_64" "lag_max_diff_91" "lag_max_diff_128" [50] "lag_max_diff_181" "lag_max_diff_256" "lag_max_diff_362" "lag_max_diff_512" "lag_max_diff_724" "lag_min_diff_2" "lag_min_diff_3" [57] "lag_min_diff_4" "lag_min_diff_6" "lag_min_diff_8" "lag_min_diff_11" "lag_min_diff_16" "lag_min_diff_23" "lag_min_diff_32" [64] "lag_min_diff_45" "lag_min_diff_64" "lag_min_diff_91" "lag_min_diff_128" "lag_min_diff_181" "lag_min_diff_256" "lag_min_diff_362" [71] "lag_min_diff_512" "lag_min_diff_724" "lag_sd_2" "lag_sd_3" "lag_sd_4" "lag_sd_6" "lag_sd_8" [78] "lag_sd_11" "lag_sd_16" "lag_sd_23" "lag_sd_32" "lag_sd_45" "lag_sd_64" "lag_sd_91" [85] "lag_sd_128" "lag_sd_181" "lag_sd_256" "lag_sd_362" "lag_sd_512" "lag_sd_724" "lag_range_2" [92] "lag_range_3" "lag_range_4" "lag_range_6" "lag_range_8" "lag_range_11" "lag_range_16" "lag_range_23" [99] "lag_range_32" "lag_range_45" "lag_range_64" "lag_range_91" "lag_range_128" "lag_range_181" "lag_range_256" [106] "lag_range_362" "lag_range_512" "lag_range_724" "symbol" "month" "day" "week_day" [113] "hour" "minute" "future_lag_2" "future_lag_3" "future_lag_4" "future_lag_6" "future_lag_8" [120] "future_lag_11" "future_lag_16" "future_lag_23" "future_lag_32" "future_lag_45" "future_lag_64" "future_lag_91" [127] "future_lag_128" "future_lag_181" "future_lag_256" "future_lag_362" "future_lag_512" "future_lag_724"我从移动平均线 和高低点,以及窗口中的价格差这两个数据。还有时间,还有几天甚至几个月)。我的算法可以现实地在114个预测器中留下10个甚至5个。这很正常。在这样的数据中,PREDICTORS之间有很强的关联性,因此有很强的冗余性。 Machine learning in trading: Alexey Burnakov 2016.05.31 22:27 #64 我将向你简要介绍一下我选择信息特征的方法。代码见附件。问题有两个方面--如何选择子集以及如何衡量所选预测因子与输出变量的相关性。第一个问题。我 通过使用模拟退火法对预测器组合进行随机列举来解决这个问题。在结果上与遗传学和非确定性梯度下降相似。好的一面是,它从局部最小值中进行选择,并根据自然界中的原则进行工作。可以与非光滑的误差面一起工作,但这里的一切是有条件的。 对于许多问题,该方法的支持者认为它比遗传学更好,例如。它是通过R中的一个包实现的,作为一个标准的几乎。诀窍在于它是针对连续数据的,而我有预测器的索引,所以我做了一个长度为预测器总数的连续向量,当任何标量突破给定的阈值时,预测器的索引变成了1。第二个问题 甚至更加微妙。健身功能。如何衡量预测器(和一组预测器)对输出的影响。这种依存关系可以是非线性的。标准回归在一些非线性问题上可以得到很大的滞后。我不是在谈论黑箱训练和使用内置的重要性估计器。我说的是一种单独的方法。你必须明白,依赖性可能非常复杂,并涉及相互作用、冗余、非线性等问题。所有这些东西都可以适用于分类数据以及数字数据。我选择了分类数据,因为有很好的信息论工具来处理它。简单地说:有一个输入和一个输出。如果输出状态至少有一点取决于输入(概率上),那么它们就有依赖性。有一种东西叫做相互信息。它是这样衡量的。现在再深入了解一下。VI衡量的是有限大小的样本上的观察分布的东西。这当然是一个点估计。所以我们需要在独立的输入-输出对的情况下估计信息的统计边界。这是由一个使用数值方法的自写函数完成的。甚至更深。如果我们有两个或更多的预测因子--该如何处理它们?首先,它们本身可能是相关的,它们的关系越大,其集合中的冗余度就越大。这种冗余度是通过所谓的多信息来衡量的。但多信息也是对一个样本的点估计。对它来说,分布的四分位数也是通过另一个自写的函数进行数值计算的。第二,预测者类别的级别 数量可能非常大(例如,2 ^ 15),以至于对这些级别的依赖性无话可说。每个级别的观察值非常少。最后,当所有这些都完成并放在一起时,我们可以测量任何一种对任意数量的预测器和输出的依赖性,对任意的样本量进行预定的统计意义。底层函数本身取自信息论软件包。这一切都在所附文件中。当然,没有100克就不容易理解。还有用于创建交易规则及其验证的完整代码。所有这些都是为了给你提供信息,加深你的知识。基本上,结果和往常一样。 [1] "1.69%"> final_vector <- c((sao$par >= threshold), T)> names(sampleA)[final_vector] [1] "lag_diff_23" "lag_diff_45" "lag_mean_diff_2" "lag_mean_diff_8" "lag_max_diff_11" "lag_max_diff_181" "lag_min_diff_3" "lag_min_diff_724" [9] "lag_sd_724" "lag_range_32" "symbol" "future_lag_181" 经过一天半的工作和对数以万计的预测器组合的列举,该函数输出了一个健身函数值--这是对预测器集合中的冗余进行惩罚的有意义的互信息。还有预测者本身。我再说一遍,所有这些都是分类的,允许构建人类可读的规则。允许对发现的模式进行解释。例如,上面我有1.7%的完全决定论(这对外汇来说还不错)和很多输入,这些输入在0.1的置信度水平上一起显著地决定了输出(二进制)状态(我把实验这样做)。也就是说,显然外汇数据中的信息是存在的。这个问题已被实验证明。之后,我们可以在验证的基础上评估盈利能力,并对交易系统进行编码。ǞǞǞ 附加的文件: feature_selector_modeller.zip 4 kb Machine learning in trading: СанСаныч Фоменко 2016.06.01 07:35 #65 Dr.Trader:我是否正确理解,在你的文件ALL_cod.RData中,你也可以使用Rat_DF1进行训练(通过指定所需的目标),然后使用Rat_DF2和Rat_DF3进行检查?我附上了我的R语言代码,供感兴趣的人参考,它实现了误差控制的神经网络训练。要选择另一个目标变量,你可以简单地将文件中的 "Short_Long.75 "替换为 "Short_Long.35"、"Flet_Long"、"Short_Flet"、"Flet_In "中的某些内容。这比替换不同的数据集更方便。是的,正是为了方便拨动。还有一个细微差别。所有目标变量都来自两个ZZ:ZZ(35)和ZZ(25)。这里有一个非常令人不快的细微差别,与你的产生了共鸣。目标变量是一个0和1的序列,对应于ZZ臂。但我们总是预测ZZ手臂的个别元素,而不是手臂本身。因此,说我们在预测趋势是不正确的。说我们在预测一个趋势的要素 是正确的。而如果你把所有预测的趋势元素加起来,这个趋势很可能不会成功。 Dr. Trader 2016.06.01 18:26 #66 谢谢你的feature_selector_modeller.zip,我会研究的。桑桑尼茨-弗门科。我向支部的所有读者致意:我准备做相应的分析,如果最初的数据将以RData或Excel文件的形式呈现,这不需要处理。我附上了文件,它是一组来自外汇的数据。在RData内部有两个数据集,用于训练和验证。从物理上看,这两个数据集的数据运行在彼此的后面,它们被分成两个文件只是为了测试模型的方便。这个数据集上的模型是可以训练的,我手动筛选出了预测器并训练了神经元,最后验证数据集上的最小误差是46%,这其实是不赚钱的。如果误差降到40%以下,你可以认为是真正的利润。请尝试从这个文件中筛选出预测因素。桑桑尼茨-弗门科。目标变量是一个0和1的序列,对应于杠杆ZZ。但我们总是预测ZZ手臂的个别元素,而不是手臂本身。因此,说我们在预测趋势是不正确的。说我们在预测一个趋势的要素 是正确的。而如果你把所有预测的趋势元素加起来,你可能甚至不会得到一个趋势。我已经尝试了不同的目标变量。一方面,你可以提前一个交易日预测价格,然后目标变量将是1或0,取决于下一个交易日的价格是上升还是下降。我在小的时间框架上从来没有得到任何结果,收盘价在它们上面似乎是一个相当随机的数字。但在H1及以上级别,已经有了一些积极的结果。另一个变体是 "之 "字形或其他趋势指标。我用它得到了一些积极的结果,但条件是要把结果通过过滤器。例如,取最后一个条形图的结果的平均值,或只使用高于某个阈值的结果。在我看来,不值得应用所有这些,它更多的是猜测,而不是精确的计算。问题是,该模型被要求只给出未来10-20个柱状的买入信号,而它有时会在其中给出卖出信号。在这种情况下,交易被逆转,佣金和点差被支付,如此反复,每个趋势都有几次。因此,我们应该获得高精度或平滑的结果,以避免仅在一个柱子上出现这种逆转。也就是说,正如你所说,只有趋势的一个元素被预测,趋势本身不能由这种元素组成。 附加的文件: set56.RData.zip 525 kb Alexey Burnakov 2016.06.01 18:37 #67 Dr.Trader:我已经尝试了不同的目标变量。一方面,你可以提前一个交易日预测价格,然后目标变量将是1或0,这取决于下一个交易日的价格是上升还是下降。我在小的时间框架上从来没有得到任何结果,收盘价在它们上面似乎是一个相当随机的数字。但在H1及以上级别,已经有了一些积极的结果。我的结果始终是相反的。我可以轻松地预测提前几分钟(最多一个小时)的价格走势,准确率为55%(Ask to Ask)。23分钟的最佳结果。这是一个关于验证样本的二元分类。 而随着预测范围的增加,准确率慢慢下降到提前12小时的51%。而这种依赖性在整个历史上都存在。但准确度必须更高,才能达到正数(克服Ask - Bid距离)。我们以后会讨论这个问题。 СанСаныч Фоменко 2016.06.01 19:44 #68 Dr.Trader:谢谢你提供的feature_selector_modeller.zip,我会研究的。我已经附上了文件,是一个外汇数据集。在RData内部有两个数据集,用于训练和验证。从物理上看,这两个数据集的数据是相通的,它们被分成两个文件只是为了测试模型的方便。这个数据集上的模型是可以训练的,我手动筛选出了预测器并训练了神经元,最后验证数据集上的最小误差是46%,这其实是不赚钱的。如果误差降到40%以下,你可以认为是真正的利润。请尝试从这个文件中筛选出预测因素。 我没有发现任何一个预测因素--所有的都是噪音。你的预测因素对你的目标变量没有预测能力。一些提示54,55,56。你也许能从他们那里得到一些东西......否则,在我看来,所有的东西都可以被扔掉了。 Dr. Trader 2016.06.01 19:57 #69 我明白了,谢谢你,我将寻找其他的投入。 Alexey Burnakov 2016.06.01 20:13 #70 Dr.Trader: 我明白了,谢谢,我会去找其他的原始数据。等一下。我也会运行你的数据进行依赖。在我开始之前有一个问题。你的数据是否包括一排所有的柱子,或者在制作样品之前有细化的柱子? 1234567891011121314...3399 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
谢谢你,我试过了。我可以看出,你在选择预测器方面做了很多工作,因为神经元很容易对它们进行训练,并将结果也存储在测试数据集上。
下面的结果是指关于R1.F3的培训。
1)Rattle有一个有趣的结果。采用标准配置的HH显示出30%/29%/33%的训练/验证/测试误差。R2.F3的误差为35%。但这一切真的只是一个幸运的案例,在其他配置中,它很容易训练不足或训练过度,在这里它只是运气好。
2)然后我采取了一个简单粗暴的无监督学习方法,200个隐藏的神经元,网络被训练到停止改进。错误训练/验证/测试/R2.F3 - 2%/30%/27%/45%。很明显,网络被重新训练。
3)监督下的学习。这与树木不同,但你应该始终对一个神经元这样做,不要过度训练它。它的本质是偶尔暂停训练,检查训练/验证/测试结果。我不知道结果整理的黄金法则,但很正常的做法是在训练数据集上进行训练,然后在验证和测试数据集中寻找错误,当验证/测试中的错误不再下降时停止训练。这为防止过度训练提供了某种保障。在这整个过程中,R2.F3被认为是不可用的,测试只在训练结束后进行。在这种情况下,训练/验证/测试/R2.F3的误差为27%/30%/31%/37%。这里又有过度训练的情况,但不多。你可以在列车误差明显小于验证/测试误差后提前停止学习过程,但这是猜测......可能有帮助,也可能没有帮助。
R1.F1 "目标变量有三个值,Rattle不能用神经元做这个,你必须在R中自己写代码,我跳过这个数据集。
"R1.F4""R1.F5""R1.F6 "在Rattle neuronka中对所有4个错误给出了差不多的结果,我认为用neuronka的适当方法也会得到差不多的结果,我没有进一步处理它们。
我有类似的森林和阿达的数字。
现在,如果我们回到我们的 "公羊"--如何从一个任意的预测器列表中抛弃噪音?我有一些经验性的算法,从170个预测器中选出27个预测器。我也曾用它来分析其他人的预测器组,也很成功。基于这一经验,我认为所有来自R的、在其算法中使用 "重要性 "变量的方法都不能清除预测器集的噪音。
我向本支部的所有读者呼吁:如果原始数据以RData或不需要处理的Excel文件形式呈现,我愿意做相应的分析。
除此以外。
我附上了一些文章,据说这些文章解决了清除原始预测器集的噪音问题,而且质量要好得多。可惜我现在没有时间去尝试。也许有人会尝试并公布结果?
附上一些文章,据说这些文章解决了清除原始预测器集的噪音问题,而且质量更高。可惜我现在没有时间去尝试。也许有人会试一试并公布结果?
我没有理解错吧,在你的文件ALL_cod.RData中,你也可以使用Rat_DF1进行训练(指定必要的目标),然后使用Rat_DF2和Rat_DF3进行检查?我附上了我的R语言代码,供感兴趣的人参考,它实现了误差控制的神经网络 训练。要选择另一个目标变量,你可以简单地将 "Short_Long.75 "替换为 "Short_Long.35"、"Flet_Long"、"Short_Flet"、"Flet_In "中的某一个。这比替换不同的数据集更方便。
可能需要时间数据,因为不同时段的市场运作方式不同。
看看我的外汇功能设置。
> names(sampleA)
[1] "lag_diff_2" "lag_diff_3" "lag_diff_4" "lag_diff_6" "lag_diff_8" "lag_diff_11" "lag_diff_16"
[8] "lag_diff_23" "lag_diff_32" "lag_diff_45" "lag_diff_64" "lag_diff_91" "lag_diff_128" "lag_diff_181"
[15] "lag_diff_256" "lag_diff_362" "lag_diff_512" "lag_diff_724" "lag_mean_diff_2" "lag_mean_diff_3" "lag_mean_diff_4"
[22] "lag_mean_diff_6" "lag_mean_diff_8" "lag_mean_diff_11" "lag_mean_diff_16" "lag_mean_diff_23" "lag_mean_diff_32" "lag_mean_diff_45"
[29] "lag_mean_diff_64" "lag_mean_diff_91" "lag_mean_diff_128" "lag_mean_diff_181" "lag_mean_diff_256" "lag_mean_diff_362" "lag_mean_diff_512"
[36] "lag_mean_diff_724" "lag_max_diff_2" "lag_max_diff_3" "lag_max_diff_4" "lag_max_diff_6" "lag_max_diff_8" "lag_max_diff_11"
[43] "lag_max_diff_16" "lag_max_diff_23" "lag_max_diff_32" "lag_max_diff_45" "lag_max_diff_64" "lag_max_diff_91" "lag_max_diff_128"
[50] "lag_max_diff_181" "lag_max_diff_256" "lag_max_diff_362" "lag_max_diff_512" "lag_max_diff_724" "lag_min_diff_2" "lag_min_diff_3"
[57] "lag_min_diff_4" "lag_min_diff_6" "lag_min_diff_8" "lag_min_diff_11" "lag_min_diff_16" "lag_min_diff_23" "lag_min_diff_32"
[64] "lag_min_diff_45" "lag_min_diff_64" "lag_min_diff_91" "lag_min_diff_128" "lag_min_diff_181" "lag_min_diff_256" "lag_min_diff_362"
[71] "lag_min_diff_512" "lag_min_diff_724" "lag_sd_2" "lag_sd_3" "lag_sd_4" "lag_sd_6" "lag_sd_8"
[78] "lag_sd_11" "lag_sd_16" "lag_sd_23" "lag_sd_32" "lag_sd_45" "lag_sd_64" "lag_sd_91"
[85] "lag_sd_128" "lag_sd_181" "lag_sd_256" "lag_sd_362" "lag_sd_512" "lag_sd_724" "lag_range_2"
[92] "lag_range_3" "lag_range_4" "lag_range_6" "lag_range_8" "lag_range_11" "lag_range_16" "lag_range_23"
[99] "lag_range_32" "lag_range_45" "lag_range_64" "lag_range_91" "lag_range_128" "lag_range_181" "lag_range_256"
[106] "lag_range_362" "lag_range_512" "lag_range_724" "symbol" "month" "day" "week_day"
[113] "hour" "minute" "future_lag_2" "future_lag_3" "future_lag_4" "future_lag_6" "future_lag_8"
[120] "future_lag_11" "future_lag_16" "future_lag_23" "future_lag_32" "future_lag_45" "future_lag_64" "future_lag_91"
[127] "future_lag_128" "future_lag_181" "future_lag_256" "future_lag_362" "future_lag_512" "future_lag_724"
我从移动平均线 和高低点,以及窗口中的价格差这两个数据。还有时间,还有几天甚至几个月)。
我的算法可以现实地在114个预测器中留下10个甚至5个。这很正常。在这样的数据中,PREDICTORS之间有很强的关联性,因此有很强的冗余性。
我将向你简要介绍一下我选择信息特征的方法。代码见附件。
问题有两个方面--如何选择子集以及如何衡量所选预测因子与输出变量的相关性。
第一个问题。我 通过使用模拟退火法对预测器组合进行随机列举来解决这个问题。在结果上与遗传学和非确定性梯度下降相似。好的一面是,它从局部最小值中进行选择,并根据自然界中的原则进行工作。可以与非光滑的误差面一起工作,但这里的一切是有条件的。
对于许多问题,该方法的支持者认为它比遗传学更好,例如。它是通过R中的一个包实现的,作为一个标准的几乎。诀窍在于它是针对连续数据的,而我有预测器的索引,所以我做了一个长度为预测器总数的连续向量,当任何标量突破给定的阈值时,预测器的索引变成了1。
第二个问题 甚至更加微妙。健身功能。
如何衡量预测器(和一组预测器)对输出的影响。这种依存关系可以是非线性的。标准回归在一些非线性问题上可以得到很大的滞后。我不是在谈论黑箱训练和使用内置的重要性估计器。我说的是一种单独的方法。
你必须明白,依赖性可能非常复杂,并涉及相互作用、冗余、非线性等问题。所有这些东西都可以适用于分类数据以及数字数据。
我选择了分类数据,因为有很好的信息论工具来处理它。简单地说:有一个输入和一个输出。如果输出状态至少有一点取决于输入(概率上),那么它们就有依赖性。有一种东西叫做相互信息。它是这样衡量的。
现在再深入了解一下。VI衡量的是有限大小的样本上的观察分布的东西。这当然是一个点估计。
所以我们需要在独立的输入-输出对的情况下估计信息的统计边界。这是由一个使用数值方法的自写函数完成的。
甚至更深。如果我们有两个或更多的预测因子--该如何处理它们?
首先,它们本身可能是相关的,它们的关系越大,其集合中的冗余度就越大。这种冗余度是通过所谓的多信息来衡量的。但多信息也是对一个样本的点估计。对它来说,分布的四分位数也是通过另一个自写的函数进行数值计算的。
第二,预测者类别的级别 数量可能非常大(例如,2 ^ 15),以至于对这些级别的依赖性无话可说。每个级别的观察值非常少。
最后,当所有这些都完成并放在一起时,我们可以测量任何一种对任意数量的预测器和输出的依赖性,对任意的样本量进行预定的统计意义。底层函数本身取自信息论软件包。
这一切都在所附文件中。当然,没有100克就不容易理解。还有用于创建交易规则及其验证的完整代码。所有这些都是为了给你提供信息,加深你的知识。
基本上,结果和往常一样。
[1] "1.69%"
> final_vector <- c((sao$par >= threshold), T)
> names(sampleA)[final_vector]
[1] "lag_diff_23" "lag_diff_45" "lag_mean_diff_2" "lag_mean_diff_8" "lag_max_diff_11" "lag_max_diff_181" "lag_min_diff_3" "lag_min_diff_724"
[9] "lag_sd_724" "lag_range_32" "symbol" "future_lag_181"
经过一天半的工作和对数以万计的预测器组合的列举,该函数输出了一个健身函数值--这是对预测器集合中的冗余进行惩罚的有意义的互信息。还有预测者本身。
我再说一遍,所有这些都是分类的,允许构建人类可读的规则。允许对发现的模式进行解释。
例如,上面我有1.7%的完全决定论(这对外汇来说还不错)和很多输入,这些输入在0.1的置信度水平上一起显著地决定了输出(二进制)状态(我把实验这样做)。也就是说,显然外汇数据中的信息是存在的。这个问题已被实验证明。
之后,我们可以在验证的基础上评估盈利能力,并对交易系统进行编码。
ǞǞǞ
我是否正确理解,在你的文件ALL_cod.RData中,你也可以使用Rat_DF1进行训练(通过指定所需的目标),然后使用Rat_DF2和Rat_DF3进行检查?我附上了我的R语言代码,供感兴趣的人参考,它实现了误差控制的神经网络训练。要选择另一个目标变量,你可以简单地将文件中的 "Short_Long.75 "替换为 "Short_Long.35"、"Flet_Long"、"Short_Flet"、"Flet_In "中的某些内容。这比替换不同的数据集更方便。
是的,正是为了方便拨动。
还有一个细微差别。
所有目标变量都来自两个ZZ:ZZ(35)和ZZ(25)。这里有一个非常令人不快的细微差别,与你的产生了共鸣。
目标变量是一个0和1的序列,对应于ZZ臂。但我们总是预测ZZ手臂的个别元素,而不是手臂本身。因此,说我们在预测趋势是不正确的。说我们在预测一个趋势的要素 是正确的。而如果你把所有预测的趋势元素加起来,这个趋势很可能不会成功。
谢谢你的feature_selector_modeller.zip,我会研究的。
我向支部的所有读者致意:我准备做相应的分析,如果最初的数据将以RData或Excel文件的形式呈现,这不需要处理。
我附上了文件,它是一组来自外汇的数据。在RData内部有两个数据集,用于训练和验证。从物理上看,这两个数据集的数据运行在彼此的后面,它们被分成两个文件只是为了测试模型的方便。这个数据集上的模型是可以训练的,我手动筛选出了预测器并训练了神经元,最后验证数据集上的最小误差是46%,这其实是不赚钱的。如果误差降到40%以下,你可以认为是真正的利润。请尝试从这个文件中筛选出预测因素。
目标变量是一个0和1的序列,对应于杠杆ZZ。但我们总是预测ZZ手臂的个别元素,而不是手臂本身。因此,说我们在预测趋势是不正确的。说我们在预测一个趋势的要素 是正确的。而如果你把所有预测的趋势元素加起来,你可能甚至不会得到一个趋势。
我已经尝试了不同的目标变量。一方面,你可以提前一个交易日预测价格,然后目标变量将是1或0,取决于下一个交易日的价格是上升还是下降。我在小的时间框架上从来没有得到任何结果,收盘价在它们上面似乎是一个相当随机的数字。但在H1及以上级别,已经有了一些积极的结果。
另一个变体是 "之 "字形或其他趋势指标。我用它得到了一些积极的结果,但条件是要把结果通过过滤器。例如,取最后一个条形图的结果的平均值,或只使用高于某个阈值的结果。在我看来,不值得应用所有这些,它更多的是猜测,而不是精确的计算。问题是,该模型被要求只给出未来10-20个柱状的买入信号,而它有时会在其中给出卖出信号。在这种情况下,交易被逆转,佣金和点差被支付,如此反复,每个趋势都有几次。因此,我们应该获得高精度或平滑的结果,以避免仅在一个柱子上出现这种逆转。也就是说,正如你所说,只有趋势的一个元素被预测,趋势本身不能由这种元素组成。
我已经尝试了不同的目标变量。一方面,你可以提前一个交易日预测价格,然后目标变量将是1或0,这取决于下一个交易日的价格是上升还是下降。我在小的时间框架上从来没有得到任何结果,收盘价在它们上面似乎是一个相当随机的数字。但在H1及以上级别,已经有了一些积极的结果。
我的结果始终是相反的。我可以轻松地预测提前几分钟(最多一个小时)的价格走势,准确率为55%(Ask to Ask)。23分钟的最佳结果。这是一个关于验证样本的二元分类。
而随着预测范围的增加,准确率慢慢下降到提前12小时的51%。而这种依赖性在整个历史上都存在。但准确度必须更高,才能达到正数(克服Ask - Bid距离)。
我们以后会讨论这个问题。
谢谢你提供的feature_selector_modeller.zip,我会研究的。
我已经附上了文件,是一个外汇数据集。在RData内部有两个数据集,用于训练和验证。从物理上看,这两个数据集的数据是相通的,它们被分成两个文件只是为了测试模型的方便。这个数据集上的模型是可以训练的,我手动筛选出了预测器并训练了神经元,最后验证数据集上的最小误差是46%,这其实是不赚钱的。如果误差降到40%以下,你可以认为是真正的利润。请尝试从这个文件中筛选出预测因素。
我明白了,谢谢,我会去找其他的原始数据。
等一下。我也会运行你的数据进行依赖。
在我开始之前有一个问题。你的数据是否包括一排所有的柱子,或者在制作样品之前有细化的柱子?