文章 "使用Python和MQL5开发机器人(第一部分):数据预处理"

 

新文章 使用Python和MQL5开发机器人(第一部分):数据预处理已发布:

基于机器学习的交易机器人开发:详细指南本系列文章的第一篇将重点讨论数据的收集与准备以及特征的选择。该项目采用Python编程语言及其相关库,并结合MetaTrader 5平台来实现。

市场正变得越来越复杂。如今,它正演变成一场算法之战。超过95%的交易额是由交易机器人产生的。 

下面一步是机器学习。这些虽然不是高级人工智能,但也并非简单的线性算法。机器学习模型能够在困难的背景下实现盈利。将机器学习应用于创建交易系统是一件有趣的事情。得益于神经网络,交易机器人将分析大数据,发现规律并预测价格走势。

我们将探讨交易机器人的开发周期:包括数据采集、处理、样本扩展、特征工程、模型选择和训练,通过Python创建交易系统以及监控交易。

使用Python工作有其自身的优势:在机器学习领域速度快,以及能够选择和生成特征。将模型导出到ONNX需要完全相同的特征生成逻辑,就像在Python中一样,这并不容易。这就是我选择通过Python进行在线交易的原因。

作者:Yevgeniy Koshtenko

 
合理的方法 👍 有趣的特征选择方法。
 
非常感谢你这篇有趣的文章。我以前没用过 python,但你让我对学习这个强大的工具产生了兴趣。我期待着新的出版物,并紧跟潮流!
 

В задаче прогнозирования EURUSD мы добавили бинарный столбец "labels", указывающий, превысило ли следующее изменение цены спред и комиссию.

顺便提一下,在 700,000 多条数据中,只有 70,000 个案例的价格变化超过了点差。

欧元兑美元 90% 的时间点差为 0。您使用的是 H1 数据。您是如何得出这一结果的?

 
Кстати, искушенный в машинном обучении читатель уже давно понял, что мы в итоге разработаем модель классификации, а не регрессии. Мне больше нравятся регрессионные модели, я в них вижу немного больше логики для прогнозирования, нежели в моделях классификации. 
第二句话似乎与第一句话相矛盾。
 

Фича инжиниринг — преобразование исходных данных в набор признаков для обучения моделей машинного обучения. Цель — найти наиболее информативные признаки. Есть ручной подход (человек выбирает признаки) и автоматический (с помощью алгоритмов).

我们将采用自动方法。我们将采用新的特征创建方法,自动从数据中提取最佳特征。然后,我们将从得到的特征集中选择信息量最大的特征。

结果证明,价格预测的最佳特征是开盘价本身。基于移动平均线、价格增量、标准偏差、每日和每月价格变化的标志也在前列。自动生成的标志信息量不大。

特征生成算法的质量存在问题,或者说完全没有问题。


一个人从 OHLCT 数据中生成了所有属性--总共五列。您正在将特征生成算法推向数量更多的初始特征。很难想象芯片生成算法无法再现最简单的 MA 芯片。

 
我喜欢文章的语言、风格和信息表述方式。感谢作者!
 

特征聚类将相似的特征组合成组,以减少特征的数量。这有助于剔除冗余数据、减少相关性并简化模型,同时又不会过度拟合。 结果证明,预测价格的最佳特征是开盘价本身。

聚类是否因为 HLC 价格与 O 价格属于同一聚类而将其丢弃?

如果价格被证明是预测价格的最佳标志(而其他标志是其衍生物),这是否意味着我们应该忘记其他标志,而通过移动到较低的时间框架并将其他符号的价格作为标志来增加更多输入数据是合理的?

 

当然,价格应从训练样本中删除,因为 MO 在新数据上的表现将不尽如人意,尤其是当价格超出训练范围时。

价格的高信息量来自于其值的唯一性,也就是说,算法更容易记住或匹配价格与标签。

在 MO 实践中,不仅要删除信息量小的特征,还要删除信息量大的可疑特征,即原始价格。

在理想情况下,应该有几个信息量相等的属性。也就是说,没有明显的领导者或局外人。这就意味着,没有任何一个属性会在训练中乱扔垃圾,也不会把毯子盖在自己身上。
 
Maxim Dmitrievsky #:

当然,价格应从训练样本中删除,因为 MO 在新数据上的表现将不尽如人意,尤其是当价格超出训练范围时。

如果我们去掉返回值,特征生成算法就必须生成一个累计和,而这个累计和就是相同的价格。同时,我们也不知道这些就是价格。

 
fxsaber #:

如果我们要返回,特征生成算法就必须生成一个累计和,而这个累计和将是相同的价格。我们不会知道这些就是价格。

我不明白

所有的符号都应该是伪静态的,就像增量一样。原始价格应从训练中删除。