文章 "蒙特卡罗方法在强化学习中的应用"

 

新文章 蒙特卡罗方法在强化学习中的应用已发布:

在本文中,我们将应用强化学习来开发可以自主学习的EA交易。在前一篇文章中,我们考虑了随机决策森林算法,并编写了一个简单的基于强化学习的自学习EA,概述了这种方法的主要优点(交易算法的开发简单和“培训”速度快)。强化学习(RL)可以很容易地融入到任何交易EA中,并加速其优化。

停止优化后,只需启用单一测试模式(因为最佳模型已写入文件,并且只上载该模型):


让我们滚动两个月前的历史记录,看看该模型在整个四个月内是如何工作的:


我们可以看到结果模型持续了另一个月(几乎整个9月),而在8月崩溃。

作者:Maxim Dmitrievsky

 

我愿意为观察结果做出贡献:

本版本的优点:

*************************************

1.与之前的版本不同,此版本不会一直进行交易。当信号良好时,它会有选择性地进行交易。这是满足您需求的一大优势。否则,这是件好事。))..

2.可以快速、轻松地进行优化。

3.训练器模型体积小,因此我们可以训练大数据。

该版本的缺点:

*******************************************

1.很多时候我们需要花费大量时间来进行下一次优化,因此不得不手动停止优化过程。

2.由于某些原因,运行测试不是那么容易。我必须重启 MT5 终端,但有时仍然无法运行。


我的改进建议

*************************************

1.尝试使用至少 4 到 5 个输入函数进行训练,例如开仓、平仓、高位、低位。

2.在优化获取交易信号时,尝试正确使用 "MathMoments ()"函数

https:// www.mql5.com/en/docs/standardlibrary/mathematics/stat/mathsubfunctions/statmathmoments

3.尝试每天或每周执行迭代训练课程。

这是一种随机结果。

4.尝试多个时间段。

我需要这样做。我们怎样才能做得更好 :))))

Documentation on MQL5: Standard Library / Mathematics / Statistics / Subfunctions / MathMoments
Documentation on MQL5: Standard Library / Mathematics / Statistics / Subfunctions / MathMoments
  • www.mql5.com
Standard Library / Mathematics / Statistics / Subfunctions / MathMoments - Reference on algorithmic/automated trading language for MetaTrader 5
 

蒙特卡罗 方法无疑是研究随机过程的有效方法。但是,应用这种方法(以及任何其他方法)时 考虑到过程的性质(对我们来说就是金融市场)。

现代分析法的问题在于,迄今为止,无论是传统的技术分析还是其他方法,都无法揭示市场价格变动的基本结构(就像物理学中的原子),而现有 结构(技术分析模式、艾略特波浪 和其他)并不基本,因为它们不连续,无法进行分析(它们出现得模棱两可或很少出现)。因此,使用现代方法几乎就是盲目地通过蛮力法(在这里是蒙特卡罗法)寻找所谓的 "最佳模型"。

但这是整个分析行业面临的问题。而作者在该方法的框架内,展示了 独创的 解决方案--感谢您的工作!

 

敬佩作者又写了一篇有趣的文章,以开放和建设性的态度对待 MO,尽管该主题的其他参与者和管理部门的 Zugunder 在暗中用鼠标做手脚:)

具体到这个问题--我不太理解蒙特卡洛 射击寻找目标的意义,因为目标几乎是明确确定的,而且可以根据之字形的顶点或相同返回值以更快的速度找到。

在我看来,将这种方法应用于不确定性更大的多维问题,如预测因子的选择和排序,会更加合理。理想情况下,在解决这个问题时,预测因子应该在一个复合体中进行评估,而文章中描述的对每个预测因子分别进行搜索和交替训练,看起来就像是一个带有一个未知数的方程组。

 
Ivan Negreshniy:

敬佩作者又写了一篇有趣的文章,以开放和建设性的态度对待 MO,尽管该主题的其他参与者和管理部门的 Zugunder 在暗中用鼠标做手脚:)

具体到这个问题--我不太理解蒙特卡洛射击寻找目标的意义,因为它们几乎是明确无误的确定性目标,而且可以根据之字形的顶点或相同返回值以更快的速度找到。

在我看来,将这种方法应用于不确定性更大的多维问题,如预测因子的选择和排序,会更加合理。理想情况下,在解决这个问题时,预测因子应该在一个综合体中进行评估,而文章中描述的对每个预测因子单独进行搜索和交替训练,看起来就像是用一个未知数组成方程组。

您好,根据 RL 的所有原则,通过蒙特卡罗 可以对目标进行随机蛮力搜索。也就是说,有许多策略(步骤),代理通过最小误差搜索最优策略。新特征的构建也是通过 MSUA 在其中一个库中实现的(参见代码库)。本文只实现了对现有图谱的暴力搜索,而没有构建新图谱。参见递归消除法。也就是说,文件和目标都是递归消除的。以后我还可以提出其他变体,实际上有很多变体。但比较测试需要大量时间。
 
Ivan Negreshniy:

敬佩作者又写了一篇有趣的文章,以开放和建设性的态度对待 MO,尽管该主题的其他参与者和管理部门的 Zugunder 在暗中用鼠标做手脚:)

具体到这个问题--我不太理解蒙特卡洛射击寻找目标的意义,因为目标几乎是明确确定的,而且可以根据之字形的顶点或相同返回值更快地找到一个数量级。

在我看来,将这种方法应用于不确定性更大的多维问题,如预测因子的选择和排序,会更加合理。理想情况下,在解决这个问题时,预测因子应该在一个复合体中进行评估,而文章中描述的对每个预测因子单独进行搜索和交替训练,看起来就像是在用一个未知数组成方程组。

至于 "明确的确定性"--这是不正确的,因为 TA 数据和 "回报 "在分析时非常模糊和不可靠。

因此,作者没有使用它们,而是用蒙特卡罗方法进行实验。

 

你好,马克西姆。

有一个问题。

"shift_probab "和 "regularisation "所使用的值仅供优化之用,而不是在 实际交易过程 中使用。我说的对吗?

或者说,在每次优化完成后,是否有必要在图表上设置优化后的 shift_probab 和 regularisation 值?

谢谢。

 
Maxim Dmitrievsky:
您好,根据 RL 的所有原则,通过蒙特卡洛随机枚举目标。也就是说,有许多策略(步骤),代理通过 oos 上的最小误差寻找最优策略。新特征的构建也是通过 MSUA 在其中一个库中实现的(参见代码库)。本文只实现了对现有图谱的暴力搜索,而没有构建新图谱。参见递归消除法。也就是说,文件和目标都是递归消除的。以后我还可以提出其他变体,实际上有很多变体。但比较试验需要很多时间。

嗨,当然,随机选择行动是 RL 的基本原则,而且,它可能是必要的,因为代理的不同行动可能会改变环境,从而产生趋于无穷的变体,当然,蒙特卡罗很可能被用来优化这些行动的顺序。

但在我们的案例中,环境--市场报价并不取决于代理的行动,尤其是在所考虑的实施方案中,使用的是事先已知的历史数据,因此代理行动(交易)顺序的选择可以不使用随机方法。

附注:例如,可以通过报价https://www.mql5.com/zh/code/9234 找到具有最大可能利润的目标交易序列。

ReverseSystem
ReverseSystem
  • www.mql5.com
Простая и короткая система, работающая неплохо в тестере на любых парах и таймфрэймах. Можно видеть закономерность: чем меньше таймфрэйм - тем выше прибыль. ReverseSystem можно запускать, как по ценам открытия, так и по всем тикам. ReverseSystemBEST (работает только на модели: Все тики) показывает максимальную прибыль, которую можно было...
 
FxTrader562 :

你好,马克西姆。

有一个问题。

"shift_probab "和 "regularisation "所使用的值仅供优化之用,而不是在 实际交易过程 中使用。我说的对吗?

或者说,在每次优化完成后,是否有必要在图表上设置优化后的 shift_probab 和 regularisation 值?

谢谢。

嗨,是的,只用于优化,然后您有一个单独的模型,该模型在测试或实时交易测试中从文件加载。
 
Ivan Negreshniy:

当然,随机选择行动是 RL 的基本原则,而且可能是必要的,因为代理的不同行动可能会改变环 境,从而产生趋于无穷大的选项数量,当然蒙特卡罗也可以应用于优化这些行动的顺序。

但在我们的案例中,环境--市场报价并不依赖于代理的行动,尤其是在所考虑的实施方案中,使用的是事先已知的历史数据,因此代理行动(交易)顺序的选择无需使用随机方法。

附注:例如,可以通过报价https://www.mql5.com/zh/code/9234,找到利润最大的目标交易序列。

是的,市场不会因为代理的行为而改变,但 OOB 的误差非常均匀,您可以看到优化图上的散点。我们正在寻找一个根据外部标准(即测试 sabset)最优的模型。误差跃迁达到 0.3 或更高,不同模型之间的差异非常大。 有可能大大加快每个单程的速度,这已经实现了,但我们需要完成它。 然后,数百个单程将耗时数分钟。至少,我还没有想到其他方法来优化代理。关于 fxsaber 的示例,我在电话里听不太懂。我的理解是,它会根据历史记录进行调整,而这个例子基本上做的是同样的事情 - 开立随机交易,然后通过 TD 修正所有亏损交易 - 时间差。换句话说,您可以在托盘上的每一栏获得几乎完美的交易。只需将 1 < shift_prob >=0.5 即可。对于 ticks,我还不会冒险搭建脚手架,因为模型会非常重。
 
Aleksandr Masterskikh:

关于 "明确的确定性 "是错误的,因为 TA 的数字和 "回报 "是非常模糊和不可靠的分析。

因此,作者没有使用它们,而是用蒙特卡罗方法进行实验。

一般来说,在这个版本中,"回报 "就是这样输入的:)但这只是作为一个基本例子,您可以根据自己的喜好进行更改。