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

 
顺便说一下,关于静止迹象的另一个观察结果。

XGBoost 模型在测试中,无论我运行多少次,在不同的日期,都会显示一个又一个有利可图的前进,在不同的日期,数十次显示当前的迹象。虽然我是初学者,但不是白痴,我切断了 2007-2016 年的训练,然后进行纯前瞻性测试。风险回报交易标签的准确率平均为 1:8 - 66%,有时 XGB 能达到 72-74%。所有其他模型、神经网络、所有其他脉冲、随机森林--都很糟糕。

如果一个使用了 10 多年的前锋模型,我甚至不会发表具有当前特征的周期的第一篇文章。

XGB 模型在许多预测和数据科学竞赛中获胜是有原因的。显然,它知道如何处理原始数据。交叉验证是内置的。我的一个熟人科学家,科学博士告诉我的,他用它来预测,嗯,也用来交易,他扔给我一份交易报告,利润因子为55,但他从互联网上消失了,他有很多发展,不清楚他发生了什么事。事实上,正是他和 Maxim Dmitrievsky 的超级文章让我在几年前接触到了 MO。

但学习 XGB 需要很长时间。上一个模型训练了两天,我已经等得不耐烦了,而一个普通的布尔模型通常在服务器上几分钟就能学会。但对我来说,这在一定程度上说明了算法的复杂性和效率。我会去租一台更强大的服务器来做研究。

我希望 ONNX 版本不会太重和太多行。在 MQL5 中,ONNX 模型数据的行数是有限制的。我曾经训练过一个有一亿行的模型,我对此很不高兴,因为 mcl 不允许我使用它)我认为它的重量会很大,因此我直接通过 Python 制作了一个用于在线交易 的模型,它将出现在本周期的下一篇文章中,周一我将对它进行测试。系列文章的草稿已经完成。一开始我想把所有东西都放在一张纸上发表,但管理部门不允许,也许这是对的,读这样的乱七八糟的东西会很无聊)。

在 Finam MT 5 中为 Sber 安装剥头皮器的想法已经出现,关键是 Python 库 mkle 中有一个函数可以获取历史价格堆栈,如果我们在此基础上训练一个模型,让它剥头皮,Propakh 的人就可以在堆栈上进行交易,而且相当成功。从道具交易者的经验来看,我并不是第一个有这样想法的人,MO 上早就有很多这样的剥头皮算法。剥头皮很有吸引力,因为可以日复一日地盈利。我作为外国投资者在俄罗斯有一个 Finam 账户,尽管规模很小)因此,也许本系列的最后一篇文章将专门介绍通过 Finam 或 AMP Futures Europe 在莫斯科交易所或 CME 上的这种剥头皮算法。

我还有一个关于 Python 计算机视觉的草稿,在本周期结束后,我会写一篇关于它的文章。

我有很多想法,真的很多,每天都有新的想法出现,然后我就坐下来写代码。虽然我妻子说,我们已经赚到钱了,就拿美国提案美国来说吧,用你所拥有的东西赚钱。已经有几十个训练有素的模型了。但我对研究更感兴趣。我想这是真的,我应该开个账户,冷静一下。我在二月份注册了一个账户,但很遗憾,道具的元配额出现了问题,据我所知,道具不想购买许可证和药剂。幸运的是,我的交易平台取消了 MT 5,我用我的手通过另一个终端进行交易,而不是 MT 5,结果我输了。我将在另一个使用 MT 5 的交易平台上开设一个新账户,并将交易情况写成新闻。

关于最佳预测器的选择应仅限于 FORWARD 日期这一事实,这是一个非常好的想法,但我不知为何忽略了这一点)。
 

前向样本来自 2010 年,训练在 2010 年之前进行。

例如,我还执行了 EXAMWARD 样本,对模型进行单独测试,结果如下。所有其他模型和神经网络从第一天起就在这些特征上下功夫。

 

这就是简单前向的不同之处:

而带有交叉验证、模型袋化(是的,我想这都是 XGB 的默认设置,但我还是决定实现它)、网格超参数枚举等功能的正演则不同:


 
Yevgeniy Koshtenko #:
如果类标签不重置,那么预测标签的最佳特征就是标签本身,不是吗?

您不是重置标签(意思是重置--清除--作为同义词),而是排除包含标签的列,将标签本身作为目标单独输入模型,也就是说,关于标签的信息不会重置,也不会不可逆转地消失,而是在训练模型时使用。

 
Yevgeniy Koshtenko #:
XGBoost 模型在测试中,无论我运行多少次,在不同的日期,都会显示一个又一个盈利的向前,在不同的日期显示几十次当前的迹象。虽然我是初学者,但不是白痴,我切断了 2007-2016 年的训练,然后进行纯远期测试。风险回报交易标签的准确率为 1:8 - 66%,远期平均准确率为 66%,有时 XGB 的准确率为 72-74%。所有其他模型、神经网络、所有其他脉冲、随机森林--都很糟糕。

文章中有很多新手错误--我之前写过,如果你使用相同的代码--可能会有奇迹。

试着在演示版上用你的解决方案交易一个月,然后通过添加样本来测试模型,比较入市点。

读到 XGB 的奇迹当然很有趣,尤其是你是如何找到超参数的--我读到它对超参数非常敏感。

 
Rashid Umarov #:

我不是故意这样假设的,以免冒犯您:)

从今以后,在斥责他人之前,请核对您的信息来源

我安装了便携模式的终端,是否需要以某种方式写入 "便携 "键?

如果终端正在运行--代码就不起作用,如果你关掉它,它就会尝试在没有按键的情况下启动,但也不起作用。

 
Aleksey Vyazmikin #:

我安装了便携模式的终端,是否必须以某种方式写入 "便携 "键?

如果终端正在运行,代码就不起作用;如果我关闭终端,它就会尝试在没有按键的情况下启动,但也不起作用。

试试直接从终端运行。只需将脚本扔到图表上,它就会在 "专家 "选项卡中打印结果。

也许你需要在元编辑器中指定 python 文件夹的路径。

我就是这么做的。但在跳了很多舞之后))))

 
Aleksandr Slavskii #:

尝试直接从终端运行。只需将脚本扔到图表上,它就会在 "专家 "选项卡中打印出结果

也许你需要在元编辑器中指定 python 文件夹的路径。

我就是这么做的。但在跳了很多舞之后))))

你是在便携模式下使用终端吗?

在 ME 中,路径是规定的(自动出现)。

 
Aleksey Vyazmikin #:

您是在便携模式下使用终端吗?

在 ME 中,路径是规定的(自动出现)。

我在便携版中进行了检查,一切正常。

如果有两个终端在运行,而脚本中没有指定终端的路径,那么其中一个终端在尝试编译时就会出错。

 
Aleksandr Slavskii #:

检查了便携版,一切正常。

如果运行两个终端,且脚本中未指明终端路径,则其中一个终端在尝试编译时会出错。

我从终端运行了它

2024.04.01 17:22:57.397 synergy_ml_bot (EURUSD,Monthly) Number of instruments in the terminal: 140
2024.04.01 17:22:57.397 synergy_ml_bot (EURUSD,Monthly) Data for EURUSD not available (attempt 1)
2024.04.01 17:22:58.416 synergy_ml_bot (EURUSD,Monthly) Number of instruments in the terminal: 140
2024.04.01 17:22:58.416 synergy_ml_bot (EURUSD,Monthly) Data for EURUSD not available (attempt 2)
2024.04.01 17:22:59.416 synergy_ml_bot (EURUSD,Monthly) Number of instruments in the terminal: 140
2024.04.01 17:22:59.416 synergy_ml_bot (EURUSD,Monthly) Data for EURUSD not available (attempt 3)
2024.04.01 17:23:00.418 synergy_ml_bot (EURUSD,Monthly) Number of instruments in the terminal: 140
2024.04.01 17:23:00.418 synergy_ml_bot (EURUSD,Monthly) Data for EURUSD not available (attempt 4)
2024.04.01 17:23:01.421 synergy_ml_bot (EURUSD,Monthly) Number of instruments in the terminal: 140
2024.04.01 17:23:01.421 synergy_ml_bot (EURUSD,Monthly) Data for EURUSD not available (attempt 5)

两个终端都指定了路径。

terminal_path = "C:/FX/MT5_02/terminal64.exe"
#terminal_path = "C:\\FX\\MT5_02\\terminal64.exe"

它找错了地方--终端中有历史记录。