文章 "轻松快捷开发 MetaTrader 程序的函数库(第 二十七部分):操控交易请求 - 下挂单"

 

新文章 轻松快捷开发 MetaTrader 程序的函数库(第 二十七部分):操控交易请求 - 下挂单已发布:

在本文中,我们将继续开发交易请求,实现下挂单,并剔除检测到的交易类操作缺陷。

上一篇文章中,我们起手实现延后交易请求,并创建了第一个开仓延后请求,应对交易类向服务器发送请求后收到错误。 在本文中,我们将继续开发延后请求,并针对设置挂单时发生错误的情况实现创建延后请求。

在测试交易类时,我检测到一些缺陷。 特别是,在类构造函数中初始化品种的交易对象时,会为其硬性设置默认值。 并非所有这些数值在品种规格中都加以支持。 这就会导致尝试下挂单时,服务器端出错 — 服务器激活“不支持的订单到期类型“错误。 该错误在任何地方都无法得到纠正,最终导致无法下挂单。 当发送包含默认值的交易请求时,一些不支持的数据也被发送到交易请求。 为了解决这个问题,我必须直接在交易请求中指定与相应品种规格对应的正确数据。

这需要了解品种规格,并直接在程序代码中手动输入准确数值,取代由函数库本身对参数值进行自动校正。 为简化起见,我们将对交易类的处理逻辑略微进行一些修改。 在 EA 的 OnInit() 处理程序中自动选择正确的参数值来初始化所有品种的交易对象。 默认情况下,将数值 -1 传递给交易类的交易方法填充订单,且到期类型表明其时间采用预设的正确默认值。 如果从程序里传递了另一个参数值,则会用它来替代默认值。 如果该值被证实无效,则当交易类进行错误处理时会加以纠正。

作者:Artyom Trishkin