交易中的机器学习:理论、模型、实践和算法交易 - 页 10

 

谢谢,看了看这些栏目,原则上我也做过--三角洲、最小、最大、时间等。

如何为我创建一个外汇交易模型的方式只会越来越复杂,简单的方式并不能带来稳定的结果。我现在看到的情况是这样的。

1) 从MT5卸下数据:OHLC、时间、指标。在这一阶段,我不会添加三角洲。

2)将数据加载到R中,通过对初始数据的添加、减去、最小、最大等,向其添加大量的新列。在R中做到这一点比在mt5中更容易。

3)以某种方式选择输入数据的子集(按列)。我可以按照Alexey的例子,使用GenSA或者直接使用GA包进行遗传优化。由于我只需要每个输入的二进制结果(开/关),在我看来GA有一个优势,它有一个二进制的操作模式。但我需要尝试比较这两套方案。

4)对输入的子集进行分析。这在阿列克谢的例子中也是如此。但我要冒着风险马上在输入的子集上训练模型,并因此使用验证数据错误。只要该模型的学习时间不超过几秒钟。

5)回到第2步,增加新的计数输入,执行其他步骤,经历这样的循环,直到结果停止改进。

我还对关于主要成分的方法的文章进行了一些实验。文章中的例子有一个细微的差别,即结果可以从输入数据中准确计算出来。在我的案例中,当输入数据明显不足时,这个方法开始使用噪声进行学习。事实证明,如果这种方法只用几个成分就能达到0.95的结果(r-squared)--那么模型中使用的预测因子很可能是正确的。如果即使使用所有成分,r-squared仍低于0.95,该模型在计算中包括了噪音。然而,值得注意的是,随着额外噪声预测器的加入--r-squared一点一点地减少。我认为通过这种方式,你可以将预测器的子集相互比较--如果r-squared更大,那么子集就更好。

 
Dr.Trader:


我还用主成分法的文章做了一些实验。在文章的例子中,有一个细微的差别,即结果可以从输入数据中准确计算出来。在我的案例中,当输入数据明显不足时,这种方法开始使用噪声进行学习。事实证明,如果这种方法只用几个成分就能达到0.95的结果(r-squared)--那么模型中使用的预测因子很可能是正确的。如果即使使用所有成分,r-squared仍低于0.95,该模型在计算中包括了噪音。然而,值得注意的是,随着额外噪声预测器的加入--r-squared一点一点地减少。我认为这是一种将预测器的子集相互比较的方法--如果r-squared更大,那么子集就更好。

到目前为止,在预选 与目标变量 "相关 "的预测因子 方面,我们似乎有:Alexey有一些技术,我也有。再来一次也不失为一个好主意。PCA非常有吸引力,因为它广为人知,大量的文献....。然而,请注意,有大量的算法可以计算预测器的 "重要性",但我还没有设法使用它们。但与我的算法相结合,这些标准算法中几乎任何一种都能得到好的结果--误差减少了5-7%。

而初始预测器的数量,我认为应该是几十个,有几千个观测值。在统计学中,如果有些东西不够,那么就没有统计。

 
Dr.Trader:

谢谢,看了一下列,原则上我也已经做过了--三角洲、最小、最大、时间等等。



不客气。你也可以在我的装备上练习。有一个高质量的实验设计。数据是好的。而在验证上获得一个积极的结果一点也不容易。

1) 从MT5卸下数据:OHLC,时间,指标。在这一阶段,我不会添加三角洲。

2)将数据加载到R中,通过添加、减去、最小、最大等原始列,为它们添加大量的新列。在R中做到这一点比在mt5中更容易。

3)以某种方式选择输入数据的子集(按列)。我可以按照Alexey的例子,使用GenSA或者直接使用GA包进行遗传优化。由于我只需要每个输入的二进制结果(开/关),在我看来GA有一个优势,它有一个二进制的操作模式。但你需要尝试比较这两种套餐。

在此,我建议保持两点:首先--输入应该是相对于其平均值而言的所有vdostary。第二,关于列枚举的机制;是的,GA有二进制模式。GenSA没有,但我模拟了二元选择。

4)对输入的子集进行分析。这在阿列克谢的例子中也是如此。但我要冒着风险马上在输入的子样本上训练模型,并使用验证数据错误作为结果。只要模型的学习时间不超过几秒钟就可以了。

好主意!但请记住,整个过程仍然可能需要很长的时间,因为你通常需要成千上万次的迭代。这个健身函数是最复杂的,因为它计算整个模型。另一方面,我应用了一个所谓的过滤健身函数,这里没有学习本身,但有一个启发式的方法,决定输入对输出有多大的影响,在更广泛的意义上。计算速度可以超过两秒。但不是一个数量级的。

对我来说,创建外汇交易模式的方式只会越来越复杂,简单的方式并不能产生一致的结果。目前我是这样看的。

到目前为止,我已经放弃了增加新的预测因素和对实验设计的各种小改进。

我有一个想法,但我还没有实施。问题是,我们、你和其他人通常会预测交易结束的某个条件,例如提前3小时或当价格达到拿下或停止的水平。

而你得到了糟糕的结果。当我在MT4 中输入几个并发的条件来关闭一个交易,这些条件是通过OR操作符来实现的,我设法得到一个积极的OM,甚至在样本之外。

所以我在想,我怎么能在R中模拟预测一次交易的结果,同时基于几个条件。例如,如果价格在3小时内达到TP,那么就关闭它。但3小时的参数不应该被硬性设定,因为它应该被优化选择。如果我们还添加一个条件,即如果价格在3小时内为正值,但没有达到TP,我们应该把STOP画到Breakeven。

在这种情况下,进入一个位置也是由机器预测的。

这就是心中的任务。

 
阿列克谢-伯纳科夫

所以我在想,我怎么能在R中模拟预测一次交易的结果,同时基于几个条件。例如,如果价格在3小时内达到TP,那么就关闭它。但3小时的参数不应该被硬性设定,因为它应该被优化选择。如果我们还添加一个条件,如果价格在3小时内获胜,但没有达到TP,我们需要将STOP画到Breakeven。

从交易EA的经验来看,我不喜欢TP和SL。如果交易系统构建正确,其自身的交易退出将比基于TP和SL的退出更有效。

SL和TP的最佳值随时间变化,不存在稳定的恒定值。我们可以找到一些数值,在某一时期可以提高交易系统的效率,但在这种情况下,策略效率会在这一时期之后下降。最好不要移动SL,而是将其保持在 "出错 "的距离,如果价格达到SL,则完全停止交易,以便进行错误分析和交易策略优化。

但也有一些聪明的自我优化的EA,使用TP。我理解,我们应该在训练集中已经引入了一个常数TP。例如,在我的案例中,TP训练的结果是0/1--价格在下一栏中增加/减少了。但是,如果价格已经上升并达到了TP水平,那么在条形图结束时,它已经跌破了初始水平--在训练设置中,结果是 "1",而不是 "0"(因为交易将以TP的利润关闭,并且不会有更多的交易到条形图结束)。TP通常很小,小于50点(4位数 的5点)。SL要大几十倍,以防 "一切出错"。fronttest或trade的TP不能被优化,只有在创建训练样本时使用。我见过这样成功的策略,我认为这个方向值得挖掘。

 
Dr.Trader:

根据专家的交易经验,我不喜欢TPs和SLs。如果交易系统构建正确,其自身的交易退出将比基于TP和SL的退出更有效。


那么它自己的出口是如何制定的呢?仅仅通过时间?

如果你说要在一小时内平仓,但如果在一小时内突破了TP,那么这将是结果1,那么复杂的平仓条件已经被使用。

关于5点的TP和几十倍的SL - 作为一种选择,但这样的TP会吃掉利润。

 

我这周和上周和你在一起,被时区 隔开,所以我没有得到现场拨号。我在加州工作,所以...

无论如何,我想我(也许你也是)已经可以很好地计划实验,训练和验证结果。你也可以多余地招募预测者。

我认为,囿于固定的目标,比如在一小时内收盘,预测交易并不是最优的,结果也很弱。

在MT测试器中,我根据平衡和恢复系数进行优化。在R中,我优化了猜测方向或预测价格差异的准确性。无论你怎么看,这些都是不同的事情。

也许可以尝试在R中为学习方法写出自己的损失函数,比如说,利润最大化。这个功能可以在一些学习方法中被替代。

 
阿列克谢-伯纳科夫

我这周和上周和你在一起,被时区隔开,所以我没有得到现场拨号。我在加州工作,所以...

无论如何,我想我(也许你也是)已经可以很好地计划实验,训练和验证结果。你也可以多余地招募预测者。

我认为,囿于固定的目标,比如在一小时内收盘,预测交易并不是最优的,结果也很弱。

在MT测试器中,我根据平衡和恢复系数进行优化。在R中,我优化了猜测方向或预测价格差异的准确性。无论你怎么看,这些都是不同的事情。

也许可以尝试在R中为学习方法写出自己的损失函数,比如说,利润最大化。这个功能可以被替换成一些学习方法。

最近,我一直在实施以下计划。

我实施了我以前的基于趋势指标的EA。它是一个坚实的专家顾问,在真实账户上进行交易。

下一步。

我寻找它的缺点,并试图用R来改善它们。

比如说。

我从高杆上把握大方向。然而,如果我仔细看一下时间,特别是在低杠方面有一个巨大的滞后。因此,如果是D1,而我在M5上交易,那么我几乎以前天的数据为方向。即使以30%的误差预测D1的发展一步,也从根本上提高了EA的盈利能力,更重要的是增加了它不会卖掉的信心。

这样吧--在R中预测一个现成的,甚至是糟糕的EA的一些元素,以便升级它?

你如何找到这样的想法?

 

最近为smart-lab写了一篇文章。一个薄弱的社区,但得到了一些有用的东西。

http://smart-lab.ru/search/topics/?q=%D0%B4%D0%BB%D1%8F+%D0%BB%D1%8E%D0%B1%D0%B8%D1%82%D0%B5%D0%BB%D0%B5%D0%B9+fx

 
SanSanych Fomenko:

我最近一直在实施以下计划。

我把我的老趋势顾问放在指标上。它是一个成熟的专家顾问,在真实账户上交易。

现在我正在寻找它的缺点,并试图用R来减少这些缺点。

我寻找它的缺点,并试图用R来改善它们。

比如说。

我从高杆上把握大方向。然而,如果我仔细看一下时间,特别是在低杠方面有一个巨大的滞后。因此,如果是D1,而我在M5上交易,那么我几乎以前天的数据为方向。即使以30%的误差预测D1的发展一步,也从根本上提高了EA的盈利能力,更重要的是增加了它不会卖掉的信心。

这样吧--在R中预测一个现成的,甚至是糟糕的EA的一些元素,以便升级它?

你如何找到这样的想法?

这个想法很有趣,我也有一些正在运行的EA。也许我会考虑如何升级它们。但我不明白到底有什么需要改进的?机器需要学习什么?

专家顾问有一套严格的开仓和平仓 逻辑。在机器学习中,决定是以一种稍微不同的方式作出的。

所以,并不完全清楚你到底要做什么。

 
Alexey Burnakov:

这是个有趣的想法。 我也有EA工作。也许我会考虑如何升级它们。但我不清楚到底需要改进什么?你需要什么来教导机器?

专家顾问有一套严格的开仓和平仓 逻辑。在机器学习中,决定是以一种稍微不同的方式作出的。

所以,你到底要做什么,还不是很清楚。

你要做的事情很清楚。不清楚的是我们为什么需要它。首先,如果有一个系统可以分析另一个系统的正确性和/或控制参数,那么受控系统就变得没有必要了,因为如果你同时使用它们,两者的总效率会同时下降,并低于你单独使用它们。例如,如果有一个系统能给出70%的正确决策,而有一个系统能以99%的精度控制一个或多个参数,那么最终的效率将是相等的。

0,7*0,99=0,693

这比单独的系统要低。

阿门。最 好是在没有 "控制器 "的情况下尝试改进原始系统。

原因: