交易中的机器学习:理论、模型、实践和算法交易 - 页 120 1...113114115116117118119120121122123124125126127...3399 新评论 Dr. Trader 2016.08.24 15:03 #1191 阿列克谢-伯纳科夫。我将尝试在最大FV的基础上选择模型(现在我正在按MO选择模型)。也就是说,我将改变模型质量评价功能。HZ....评估模型质量的正确功能是非常重要的,因为你正在寻找并试图最大化的东西就是你最终的结果。如果你使用模型的准确性,就很容易陷入一个局部最大值,即模型总是返回例子数量最多的类别。对于有不平衡类的训练数据,最好使用F-score或Cohen's Kappa。但即使是他们,我也遇到了问题,因为每个柱子的价格涨幅可能是不同的,即使有一个积极的估计,你也可能处于消极状态--胜利的交易数量将多于失败的交易,但少数失败的交易可能有大的、不可挽回的损失。交易模拟,根据交易结果评估模型是正确的,我同意你的观点,我最近也开始这样做。需要在小幅缩水的情况下获得盈利 - 所以模型评估应该使用这些概念。我认为MO不是一个好的选择,因为它没有考虑到缩减,这一点很重要。在MT5中估计EA的所有功能中,我最喜欢恢复因子和夏普比率。 恢复系数是总利润除以整个时期的最大缩减量。相当简单,但很有效。 夏普比率 - 互联网上有很多描述,但我没有找到很多公式。有一个用于MT4的代码,我想我们应该把它转到R上试试。double GetSharpeRatioFromHistory(double riskFreeYearlyIncome = 0.01){ double profitsArray[]; int profitsArraySize = 0; double profitsAvg = 0.0; int profitsAvgCount = 0; int ordersHistoryTotal = OrdersHistoryTotal(); if(ordersHistoryTotal == 0){ return 0.0; } for(int i=0; i<ordersHistoryTotal; i++){ if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){ if((OrderSymbol() == _Symbol) && (OrderMagicNumber() == magic)){ double profitForTrade = (OrderProfit() + OrderCommission() + OrderSwap()); double seconds = double(OrderCloseTime() - OrderOpenTime()); double riskFreeRate = riskFreeYearlyIncome / double(365*24*60*60) * seconds; double tradeResult = profitForTrade - riskFreeRate; profitsArraySize = ArrayResize(profitsArray, profitsArraySize+1); if(profitsArraySize>0){ profitsArray[profitsArraySize-1] = tradeResult; } profitsAvg += tradeResult; profitsAvgCount++; } } } if(profitsArraySize == 0){ return 0.0; } profitsAvg /= double(profitsAvgCount); double stdDev = 0.0; for(int i=0; i<profitsArraySize; i++){ stdDev += ((profitsArray[i]-profitsAvg)*(profitsArray[i]-profitsAvg)/double(profitsArraySize)); } if(stdDev == 0.0){ return 0.0; } return profitsAvg/stdDev; }参数riskFreeYearlyIncome - 无风险投资(银行存款)的年回报率,在例子中是1%。夏普比率考虑的是战略比这种投资好多少。 double seconds = double(OrderCloseTime() - OrderOpenTime() )- 一笔交易的开仓时间(秒)。对于条形交易来说,这分别是一个条形中的多少秒。 Alexey Burnakov 2016.08.24 15:13 #1192 Dr.Trader: 1)评估模型质量的正确功能是非常重要的,因为我们正在寻找并试图最大化的东西,这就是我们最终得到的东西。 2)但即使是他们,我也有问题,因为每条的价格上涨可能是不同的,即使有一个积极的评估,你也可能处于消极状态--胜利的交易数量将多于失败,但几个失败的交易可能有一个大的、不可挽回的损失。 3)模拟交易,并根据交易结果评估模型是正确的,我同意你的观点,我最近也开始这么做。你需要的是小幅下跌的盈利能力--所以模型评估应该使用这些概念。4)我认为MO不是一个好的选择,因为它没有考虑到重要的缩减问题。我在MT5中最喜欢的功能是恢复因子和夏普比率。 恢复系数是总利润除以整个时期的最大缩减量。相当简单,但很有效。 夏普比率 - 互联网上有很多描述,但我没有找到很多公式。MT4有这样的代码,我想我们应该把它转到R上试试。1) 绝对的2)正是如此。3)是的,这有助于摆脱估值中的起点偏差。4)FS是恢复系数。总的来说,我对它非常尊重。我把它放在估计功能中,这很容易。夏普。这很容易!我解释说。a) 你得到一个以点为单位的交易结果向量,对吗?b) 你需要用REINVESTMENT模拟交易,并将点的向量转换为存款的百分比增量的向量。例如,我们从100,000美元开始。我们交易0.1手得到0.001(十个点)。这是每批10美元。所以这个值变成了10/100 000。以此类推,考虑到地段的增加或减少。c) 使用所得到的百分比增量向量,计算:平均数、标准偏差。d) 输入每年一定的无风险收益(3%)--这个数字是有条件的,是一个小数字。e) 将你的交易转化为平均年收入,或者将每年的无风险收益分解为每笔交易的平均收益。完成了。f) (你每笔交易(每期)的平均收益-无风险收益)/标准差我还没有R的代码。但写这样一个函数应该不难。 Alexey Burnakov 2016.08.24 15:15 #1193 在金融市场上,一切都在重新培训!甚至他们说的没有被重新培训的东西也被重新培训。强化线性回归的再训练较少,但给出的学习质量很差,在对新数据的推断上也很糟糕。 СанСаныч Фоменко 2016.08.24 15:31 #1194 阿列克谢-伯纳科夫。你对价格收益进行分类的想法,从一开始对我来说就是一种纯粹的情感。如果我们预测趋势,我们看一下ZZ,很清楚:这里是一个阶层,这里是另一个阶层。如果我们看一下价格上涨的图表,它是在零附近混乱地抽动。这里明显可见的阶级在哪里?这纯粹是一种情绪,我非常重视统计学--没有数学,一切都应该是清晰明了的。此外,对于金融市场的价格上涨,ARIMA-ARCH已经发展了很多年,而且效果相当好。这部歌剧甚至有考虑赫斯特的模型。有什么比分类更好?分类是模式--"头和肩",我们对其进行了自动化的搜索,并预测了一个清晰可见的类别。通过分类,我们找到一个模式(例如以树的形式),然后说:"在这个模式之后,会有增长。如果我们正确制定了目标变量,它就会。这里ZZ不是正确的目标变量。这里的想法是预测未来100点的增长。这样的目标变量在我看来要正确得多。结论。我们应该从目标变量开始,目标永远是我们的全部,错误的目标导致沼泽。 Alexey Burnakov 2016.08.24 15:45 #1195 桑桑尼茨-弗门科。你对价格收益进行 分类的想法,从一开始对我来说就是一种纯粹的情感。如果我们预测趋势,我们看一下ZZ,很清楚:这里是一个阶层,这里是另一个阶层。如果我们看一下价格上涨的图表,它是在零附近混乱地抽动。这里明显可见的阶级在哪里?这纯粹是一种情绪,我非常重视统计学--没有数学,一切都应该是清晰明了的。此外,对于金融市场的价格上涨,ARIMA-ARCH已经发展了很多年,而且效果相当好。这部歌剧甚至有考虑赫斯特的模型。有什么比分类更好?分类是模式--"头和肩",我们对其进行了自动化的搜索,并预测了一个清晰可见的类别。通过分类,我们找到一个模式(例如以树的形式),然后说:"在这个模式之后,会有增长。如果我们正确制定了目标变量,它就会。这里ZZ不是正确的目标变量。 这里的想法是预测未来100点的增长。这 样的目标变量在我看来要正确得多。结论。你必须从目标变量开始,像往常一样,目标是我们的一切,错误的目标导致沼泽。我不知道这在感情上有什么问题。这是看问题的一种方式。蜡烛的颜色也叫这个名字。让我提醒你,回归和分类任务是建立一个有利可图的系统阶段之前的固定项目。进一步说,我已经走到了这样的地步:我预测的不仅仅是增长的迹象,而且是具有更大模数的增长。也就是说,只在系统预测强劲增长的地方进入买入,而不仅仅是增长。也与卖。从技术上讲,机器学习的是回归。然后我把它的输出解释为强势上涨,强势下跌,在一个通道中悬空。现在这已经非常接近于预测未来100点的上涨。只是我自己不清楚你是如何看待这种目标定位的正式化的。如果在增长之前有一个90点的下降,如果这个增长在一周内才达到,这意味着什么?在我9点钟的地平线上,强劲的上涨大约是20个点。9小时后,该交易被关闭。而事实上,我现在根本就没有预测到这个班级(上升/下降/喋喋不休/强势上升)。事实上,我正在建立一个系统,它在学习阶段的成绩是由交易的成熟度预期来衡量的。也就是说,分类准确率可能很低(对我来说是53%),但在正确的方向上打出的收益比不打出的略高。你感觉到问题陈述的不同了吗?分类精度与贸易盈利能力相关,但并不完全吻合。 Alexey Burnakov 2016.08.24 17:39 #1196 顺便说一下,作为模型质量评估的函数,恢复系数也是一边倒的。我可以有10笔交易和1笔亏损的交易,或500笔交易和10笔亏损的交易。在第二种情况下,FS可能更低,而利润则是50倍。或者,你可以从总利润中减去最大缩水。在这里,至少利润会达到最大化。或传统的盈利因素:总利润/总损失。 Dr. Trader 2016.08.24 18:29 #1197 阿列克谢-伯纳科夫。在第二种情况下,FS可以更低,而利润可以高出50倍。这一切都取决于你想承担的风险。例如,有两个信号:第一个信号每年带来100%的利润,最大跌幅为10%。第二个信号是300%的利润,缩水40%。所以第二个信号是以利润为主导。 但如果你计算PV,领先者将是第一个信号,这是正确的,因为你可以简单地将第一个信号的交易规模(以手为单位)增加四倍,这将带来与第二个信号相同的缩减,但利润更大。或者,如果你不想冒很大比例的账户余额的风险,你可以将第二个信号的手数减少4倍,这将得到所需的10%的余额的风险,但利润也将少于第一个信号也就是说,该策略的交易计划可能是这样的:通过滚动前进策略确定可能的最大跌幅;计算这个跌幅比你账户余额的允许值大/小多少倍;计算手数,使这些数字趋于一致。 使用FS意味着在你开始交易之前,你将计算所有的风险并确定一个合适的手数。该策略在交易时的缩水越低,你可以使用的交易规模就越大。 Yury Reshetov 2016.08.24 20:32 #1198 阿列克谢-伯纳科夫。或传统的盈利能力因素:总利润/总损失。IMHO,更可接受的是。 Criterion_evaluation_TC = 总盈利交易量/(总盈利交易量+总亏损交易量)。 只要交易是以固定手数进行的。在这种情况下,如果该标准高于0.5,那么TS就显示了总的利润,否则就是损失。这个标准的优点是,它是严格配比的,其数值不能超过0到1.0(含)的范围。缩水,甚至是尽管交易系统的最终利润,对这一标准的影响是负面的,也就是说,它们被认为是一个负面因素。 fxsaber 2016.08.24 20:41 #1199 尤里-雷舍托夫。IMHO,更可接受的是。 Criterion_evaluation_TC = 总盈利交易量/(总盈利交易量+总亏损交易量)。 以固定手数的交易为条件。在这种情况下,如果标准高于0.5,那么TS就显示了最终的利润,否则就是亏损。这个标准的优点是,它是严格配比的,其数值不能超过0到1.0(含)的范围。缩减,甚至尽管交易的最终利润,对这一标准的影响是负面的,也就是说,它们被认为是一个负面因素。 "The_amount_of_losing_deals"--让我说清楚,如果我是指绝对值。谢谢你,我以前没有见过这样一个规范化的标准。 Andrey Dik 2016.08.24 21:03 #1200 尤里-雷舍托夫。IMHO,更可接受的是。 Criterion_evaluation_TC = 总盈利交易量/(总盈利交易量+总亏损交易量)。 以固定手数的交易为条件。在这种情况下,如果标准高于0.5,那么TS就显示了最终的利润,否则就是亏损。这个标准的优点是,它是严格配比的,其数值不能超过0到1.0(含)的范围。缩减,甚至尽管交易的最终利润,对这一标准的影响是负面的,也就是说,它们被认为是一个负面因素。 如果我们在几笔交易中获得了主要的利润,而其他几千笔交易出现了小的损失怎么办?- 我不认为这是个好主意。 1...113114115116117118119120121122123124125126127...3399 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
评估模型质量的正确功能是非常重要的,因为你正在寻找并试图最大化的东西就是你最终的结果。如果你使用模型的准确性,就很容易陷入一个局部最大值,即模型总是返回例子数量最多的类别。对于有不平衡类的训练数据,最好使用F-score或Cohen's Kappa。但即使是他们,我也遇到了问题,因为每个柱子的价格涨幅可能是不同的,即使有一个积极的估计,你也可能处于消极状态--胜利的交易数量将多于失败的交易,但少数失败的交易可能有大的、不可挽回的损失。交易模拟,根据交易结果评估模型是正确的,我同意你的观点,我最近也开始这样做。需要在小幅缩水的情况下获得盈利 - 所以模型评估应该使用这些概念。
我认为MO不是一个好的选择,因为它没有考虑到缩减,这一点很重要。在MT5中估计EA的所有功能中,我最喜欢恢复因子和夏普比率。
恢复系数是总利润除以整个时期的最大缩减量。相当简单,但很有效。
夏普比率 - 互联网上有很多描述,但我没有找到很多公式。有一个用于MT4的代码,我想我们应该把它转到R上试试。
参数riskFreeYearlyIncome - 无风险投资(银行存款)的年回报率,在例子中是1%。夏普比率考虑的是战略比这种投资好多少。
double seconds = double(OrderCloseTime() - OrderOpenTime() )- 一笔交易的开仓时间(秒)。对于条形交易来说,这分别是一个条形中的多少秒。
1)评估模型质量的正确功能是非常重要的,因为我们正在寻找并试图最大化的东西,这就是我们最终得到的东西。
2)但即使是他们,我也有问题,因为每条的价格上涨可能是不同的,即使有一个积极的评估,你也可能处于消极状态--胜利的交易数量将多于失败,但几个失败的交易可能有一个大的、不可挽回的损失。
3)模拟交易,并根据交易结果评估模型是正确的,我同意你的观点,我最近也开始这么做。你需要的是小幅下跌的盈利能力--所以模型评估应该使用这些概念。
4)
我认为MO不是一个好的选择,因为它没有考虑到重要的缩减问题。我在MT5中最喜欢的功能是恢复因子和夏普比率。
恢复系数是总利润除以整个时期的最大缩减量。相当简单,但很有效。
夏普比率 - 互联网上有很多描述,但我没有找到很多公式。MT4有这样的代码,我想我们应该把它转到R上试试。
1) 绝对的
2)正是如此。
3)是的,这有助于摆脱估值中的起点偏差。
4)FS是恢复系数。总的来说,我对它非常尊重。我把它放在估计功能中,这很容易。
夏普。这很容易!我解释说。
a) 你得到一个以点为单位的交易结果向量,对吗?
b) 你需要用REINVESTMENT模拟交易,并将点的向量转换为存款的百分比增量的向量。例如,我们从100,000美元开始。我们交易0.1手得到0.001(十个点)。这是每批10美元。所以这个值变成了10/100 000。以此类推,考虑到地段的增加或减少。
c) 使用所得到的百分比增量向量,计算:平均数、标准偏差。
d) 输入每年一定的无风险收益(3%)--这个数字是有条件的,是一个小数字。
e) 将你的交易转化为平均年收入,或者将每年的无风险收益分解为每笔交易的平均收益。完成了。
f) (你每笔交易(每期)的平均收益-无风险收益)/标准差
我还没有R的代码。但写这样一个函数应该不难。
在金融市场上,一切都在重新培训!甚至他们说的没有被重新培训的东西也被重新培训。
强化线性回归的再训练较少,但给出的学习质量很差,在对新数据的推断上也很糟糕。
你对价格收益进行分类的想法,从一开始对我来说就是一种纯粹的情感。如果我们预测趋势,我们看一下ZZ,很清楚:这里是一个阶层,这里是另一个阶层。如果我们看一下价格上涨的图表,它是在零附近混乱地抽动。这里明显可见的阶级在哪里?
这纯粹是一种情绪,我非常重视统计学--没有数学,一切都应该是清晰明了的。
此外,对于金融市场的价格上涨,ARIMA-ARCH已经发展了很多年,而且效果相当好。这部歌剧甚至有考虑赫斯特的模型。有什么比分类更好?
分类是模式--"头和肩",我们对其进行了自动化的搜索,并预测了一个清晰可见的类别。通过分类,我们找到一个模式(例如以树的形式),然后说:"在这个模式之后,会有增长。如果我们正确制定了目标变量,它就会。这里ZZ不是正确的目标变量。这里的想法是预测未来100点的增长。这样的目标变量在我看来要正确得多。
结论。我们应该从目标变量开始,目标永远是我们的全部,错误的目标导致沼泽。
你对价格收益进行 分类的想法,从一开始对我来说就是一种纯粹的情感。如果我们预测趋势,我们看一下ZZ,很清楚:这里是一个阶层,这里是另一个阶层。如果我们看一下价格上涨的图表,它是在零附近混乱地抽动。这里明显可见的阶级在哪里?
这纯粹是一种情绪,我非常重视统计学--没有数学,一切都应该是清晰明了的。
此外,对于金融市场的价格上涨,ARIMA-ARCH已经发展了很多年,而且效果相当好。这部歌剧甚至有考虑赫斯特的模型。有什么比分类更好?
分类是模式--"头和肩",我们对其进行了自动化的搜索,并预测了一个清晰可见的类别。通过分类,我们找到一个模式(例如以树的形式),然后说:"在这个模式之后,会有增长。如果我们正确制定了目标变量,它就会。这里ZZ不是正确的目标变量。 这里的想法是预测未来100点的增长。这 样的目标变量在我看来要正确得多。
结论。你必须从目标变量开始,像往常一样,目标是我们的一切,错误的目标导致沼泽。
我不知道这在感情上有什么问题。这是看问题的一种方式。蜡烛的颜色也叫这个名字。
让我提醒你,回归和分类任务是建立一个有利可图的系统阶段之前的固定项目。
进一步说,我已经走到了这样的地步:我预测的不仅仅是增长的迹象,而且是具有更大模数的增长。也就是说,只在系统预测强劲增长的地方进入买入,而不仅仅是增长。也与卖。从技术上讲,机器学习的是回归。然后我把它的输出解释为强势上涨,强势下跌,在一个通道中悬空。
现在这已经非常接近于预测未来100点的上涨。只是我自己不清楚你是如何看待这种目标定位的正式化的。如果在增长之前有一个90点的下降,如果这个增长在一周内才达到,这意味着什么?
在我9点钟的地平线上,强劲的上涨大约是20个点。9小时后,该交易被关闭。
而事实上,我现在根本就没有预测到这个班级(上升/下降/喋喋不休/强势上升)。事实上,我正在建立一个系统,它在学习阶段的成绩是由交易的成熟度预期来衡量的。也就是说,分类准确率可能很低(对我来说是53%),但在正确的方向上打出的收益比不打出的略高。你感觉到问题陈述的不同了吗?分类精度与贸易盈利能力相关,但并不完全吻合。
顺便说一下,作为模型质量评估的函数,恢复系数也是一边倒的。我可以有10笔交易和1笔亏损的交易,或500笔交易和10笔亏损的交易。在第二种情况下,FS可能更低,而利润则是50倍。
或者,你可以从总利润中减去最大缩水。在这里,至少利润会达到最大化。
或传统的盈利因素:总利润/总损失。
在第二种情况下,FS可以更低,而利润可以高出50倍。
这一切都取决于你想承担的风险。例如,有两个信号:第一个信号每年带来100%的利润,最大跌幅为10%。第二个信号是300%的利润,缩水40%。所以第二个信号是以利润为主导。
但如果你计算PV,领先者将是第一个信号,这是正确的,因为你可以简单地将第一个信号的交易规模(以手为单位)增加四倍,这将带来与第二个信号相同的缩减,但利润更大。或者,如果你不想冒很大比例的账户余额的风险,你可以将第二个信号的手数减少4倍,这将得到所需的10%的余额的风险,但利润也将少于第一个信号
也就是说,该策略的交易计划可能是这样的:通过滚动前进策略确定可能的最大跌幅;计算这个跌幅比你账户余额的允许值大/小多少倍;计算手数,使这些数字趋于一致。
使用FS意味着在你开始交易之前,你将计算所有的风险并确定一个合适的手数。该策略在交易时的缩水越低,你可以使用的交易规模就越大。
或传统的盈利能力因素:总利润/总损失。
IMHO,更可接受的是。
Criterion_evaluation_TC = 总盈利交易量/(总盈利交易量+总亏损交易量)。
只要交易是以固定手数进行的。
在这种情况下,如果该标准高于0.5,那么TS就显示了总的利润,否则就是损失。
这个标准的优点是,它是严格配比的,其数值不能超过0到1.0(含)的范围。
缩水,甚至是尽管交易系统的最终利润,对这一标准的影响是负面的,也就是说,它们被认为是一个负面因素。
IMHO,更可接受的是。
Criterion_evaluation_TC = 总盈利交易量/(总盈利交易量+总亏损交易量)。
以固定手数的交易为条件。
在这种情况下,如果标准高于0.5,那么TS就显示了最终的利润,否则就是亏损。
这个标准的优点是,它是严格配比的,其数值不能超过0到1.0(含)的范围。
缩减,甚至尽管交易的最终利润,对这一标准的影响是负面的,也就是说,它们被认为是一个负面因素。
IMHO,更可接受的是。
Criterion_evaluation_TC = 总盈利交易量/(总盈利交易量+总亏损交易量)。
以固定手数的交易为条件。
在这种情况下,如果标准高于0.5,那么TS就显示了最终的利润,否则就是亏损。
这个标准的优点是,它是严格配比的,其数值不能超过0到1.0(含)的范围。
缩减,甚至尽管交易的最终利润,对这一标准的影响是负面的,也就是说,它们被认为是一个负面因素。