文章 "MQL5 酷宝书 — 服务"

 

新文章 MQL5 酷宝书 — 服务已发布:

本文讲述了服务的多功能性 — 不需要绑定图的 MQL5 程序。 我还会重点介绍服务与其它 MQL5 程序的区别,并强调开发人员使用服务的细微差别。 作为示例,为读者提供了各种任务,涵盖了可以作为服务实现的各种功能。

我们想象一下,我们面临着以下任务。 终端应提供当前交易品种的图表,即持仓品种的图表。

打开图表的规则非常简单。 如果某个品种尚有持仓,则打开该品种的图表。 如果没有持仓,则无需图表。 即使某个品种有多笔持仓,也只会打开一个图表。

另外,我们还要添加一些颜色。 如果持仓处于盈利状态,则图表的背景色将为浅蓝色;如果处于亏损,则为浅粉色。 零利润则为薰衣草色。



作者:Denis Kirichenko

 
需要从 EA 资源创建服务的能力。
 
Anatoli Kazharski #:
需要从 EA 资源创建服务的能力。

+1

 

感谢您的文章 - 非常有趣!

有这样一个问题,如何才能及时获得在任何符号上开仓/改仓/下单的 信息?

需要创建一个当前和虚拟头寸的数据库 - 当许多智能交易系统在一个符号上运行时,这对于净额结算是必要的。

还是在每个 EA 中嵌入代码更好?

 
Aleksey Vyazmikin 开仓/改仓 信息?

当许多智能交易系统在一个符号上运行时,需要创建一个当前和虚拟仓位数据库,以便进行净额结算。

还是在每个 EA 中嵌入代码更好?

阿列克谢,这行不通。毕竟,该服务就像一个脚本,唯一不同的是,它是与终端启动同时启动的....。

启动终端,服务跳出,工作,并进入底层....。

当然,您也可以无限循环运行它,但效果如何,您应该自己决定....。

 
Alexey Viktorov #:

阿列克谢,这行不通。毕竟,该服务就像一个脚本,唯一不同的是,它是与终端启动同时启动的....

启动终端,服务跳出,运行并进入底层....

当然,您也可以无限循环运行它,但效果如何,您应该自己决定....。

一方面,缺少了 OnTrade(),另一方面,如果服务只是简单地汇总订单,并将允许的操作写入数据库,可能会奏效。但同样,同步问题也很重要。对于那些不需要延迟并在开仓时工作的策略来说,这样做似乎很现实。是否可以通过服务进行交易?我没有看到任何限制。那么就可以从专家那里接收订单,将其汇总并以指定频率进行独立交易。

 
Aleksey Vyazmikin 开仓/改仓 信息?

当许多智能交易系统在一个符号上运行时,需要创建一个当前和虚拟仓位数据库,以便进行净额结算。

还是在每个 EA 中嵌入代码更好?

阿列克谢,感谢您的意见!

问得好。我们需要权衡利弊。一方面,正如我的同事阿列克谢-维克托罗夫(Alexey Viktorov)所指出的那样,执行此类任务的服务应在无限循环中启动。但另一方面,该服务在后台工作,并从数据库本身进行写入/读取。如果要为每个机器人添加使用数据库的功能,就必须明白可能会出现同步冲突。类似互斥器的东西可能会在这方面有所帮助。

当服务无法.... 时,EA 可以即时处理交易事件。

 
Aleksey Vyazmikin 开仓/改仓 信息?

当许多智能交易系统在一个符号上运行时,需要创建一个当前和虚拟仓位数据库,以便进行净额结算。

还是在每个 EA 中嵌入代码更好?

每个机器人都会自行考虑虚拟仓位。原则上,它甚至不知道真实仓位。对 MM 而言,唯一的问题是手数定义,但我通过参数设置了固定手数。除固定手数外,唯一的选择是为每个机器人分配一定比例的存款。

 
KMK 服务缺少事件处理功能 - OnTimer、OnTrade、OnTradeTransaction。OnDeinit 对于关闭终端时的定期停止也很有用。
 
Denis Kirichenko #:

阿列克谢,谢谢你的意见!

这是个好问题。我们需要权衡利弊。一方面,正如我的同事阿列克谢-维克托罗夫(Alexey Viktorov)所指出的那样,这样的任务服务应该在无限循环中启动。但另一方面,该服务在后台工作,并从数据库本身进行写入/读取。如果要为每个机器人添加使用数据库的功能,就必须明白可能会出现同步冲突。在这方面,类似互斥器的东西可能会有所帮助。

当服务无法.... 时,EA 可以即时处理交易事件。

难道 SQLite 不知道如何使用事务队列吗?我没有处理过这个问题,但你写过一篇文章,所以我才问你:)

您可以写入数据库的每个部分(单独的表),甚至每个顾问都可以创建自己的数据库,服务会检查数据库的可用性并将其连接起来工作。

当然,延迟是个问题,但另一方面,它可以通过节省的差价得到补偿。

 
JRandomTrader #:

在我的案例中,每个机器人都会自行考虑其虚拟位置。原则上,它甚至不知道实际位置。对于 MM 来说,唯一的问题是手数定义,但我通过参数设置了固定手数。除了固定手数之外,唯一的选择是为每个机器人分配一定比例的存款。

我希望可以通用,这样就可以创建具有不同逻辑的智能交易系统篮子。如果 "智能交易系统 "是在自己的汁液中沸腾的,那么是的--这就容易多了--我自己就是这样做的,不过是试验性的--没有将数据保存到文件/数据库中。