文章 "DoEasy 函数库中的价格(第六十三部分):市场深度及其抽象请求类"

 

新文章 DoEasy 函数库中的价格(第六十三部分):市场深度及其抽象请求类已发布:

在本文中,我将着手开发操控市场深度的功能。 我还将创建市场深度抽象订单对象,及其衍生类。

在本文中,我将着手实现操控市场深度的功能。 从概念上讲,操控 DOM 的类与以前实现的所有函数库类都没啥区别。 与此同时,我们将拥有一个 DOM 特征数据的模型,其中包含 DOM 中存储的有关订单数据信息。激活 OnBookEvent() 处理程序时,可由 MarketBookGet() 函数获取数据。 在 DOM 发生任何变化的情况下,处理程序中会为订阅 DOM 事件的每个品种激活一个事件。

故此,DOM 类结构如下:

  1. DOM 订单对象类 — 当某个品种触发了 OnBookEvent() 处理程序,可从 DOM 获得多个订单,该对象描述的是其中一个订单的数据;
  2. DOM 模型对象类 — 在单次 OnBookEvent() 处理程序激活时,从 DOM 并发获得所有订单数据,该对象描述的是针对其中一个品种的所有订单数据 — 构成当前 DOM 模型的对象集合 p1;
  3. 时间序列类由单一品种的 p2 对象序列组成,它是在每次 OnBookEvent() 激活时输入到时间序列列表之中的;
  4. DOM 事件里可订阅的所有用到品种的 DOM 数据的时间序列集合类。

今天,我将实现订单对象类(1),并测试当前品种激活 OnBookEvent() 时获取 DOM 数据。

作者:Artyom Trishkin

 

不要苛责。寓言。


我们都写过一些

关于一些事和一些物

他是唯一上路的人、

眨着狡猾的眼睛


这条路上有很多代码

行数多得数不清

如果不是大自然母亲

我永远无法克服它们


我的笔自找的

♪ To say something more ♪

但他独自上路

我们都无法回头

2021年2月

 
???
 

你好,阿尔乔姆、

首先祝贺您的文章,简直太棒了!!有一个问题,据我所知,您并没有涉及特定订单(限价订单)在特定价位的位置......例如,如果我的订单在该价位排在队列的前面(第一位)、半路上或者真的排在所有订单的后面....。我正在尝试对一种流动性很强、交易成本很低的工具自动执行一种策略,我可以在同一价位进场,也可能在同一价位出场,为此我需要访问特定价位队列中的仓位或我的订单......似乎没有任何地方讨论过这个问题。

如果交易所支持该信息,您知道我该如何检索该信息吗?

敬上

安德烈-奥利维拉

 
André Dias de Oliveira:

你好,阿尔乔姆、

首先祝贺您的文章,简直太棒了!!有一个问题,据我所知,您并没有涉及特定订单(限价订单)在特定价位的位置......例如,如果我的订单在该价位排在队列的前面(第一位)、半路上或者真的排在所有订单的后面....。我正在尝试对一种流动性很强、交易成本很低的工具自动执行一种策略,我可以在同一价位进入仓位,也可能在同一价位退出,为此,我需要访问特定价位队列中的仓位或我的订单......似乎没有任何地方讨论过这个问题。

如果交易所支持该信息,您知道我该如何检索该信息吗?

敬上

安德烈-奥利维拉

谢谢。

我有点不明白这个问题--可能是语言障碍吧......

在这里,库使用 MQL 提供的功能从市场深度读取所有可用数据。

请试着举例说明您的问题。

 
Artyom Trishkin:

谢谢。

我有点不明白这个问题--可能是语言障碍吧......

在这里,库使用 MQL 提供的功能从市场深度读取所有可用数据。

请试着举例说明您的问题。

感谢 Artyom 的回复,当然,让我尝试更好地解释....。为了简化和更容易理解,让我们假设一个非常简单的 "订单簿",只有一个深度的价格水平,即买入方的限价订单和卖出方的限价订单......在这个例子中,让我们假设两边都有大量订单(比如买入价 1,34 和卖出价 1,35)。在这个例子中,我们假设 "订单簿 "中只有这两个价格的订单......没有其他。

然后,我在两边(买入价和卖出价)都下一个订单,我的订单将分别排在两边队列的最后(最后一个买入订单在 1,34 边,最后一个卖出订单 在 1,35 边)。

随着排在我前面的订单被执行或取消,我的订单将在队列中取得进展,在我的订单后面可能会出现相同价位的额外限价订单....,我想了解是否有办法在任何给定时间检索我的订单在队列中的位置。请看我附上的图片。

非常感谢您关注并努力理解我的问题,请告诉我这是否清楚,如果这不是一个好例子,我可以试着想出其他例子。

祝您一切顺利,再次感谢您的宝贵意见。


安德烈-奥利维拉


安德烈-奥利维拉

附加的文件:
 
André Dias de Oliveira :

感谢 Artyom 的回复,当然,让我来更好地解释一下....。为了简化和更容易理解,让我们假设一个非常简单的 "订单簿",它只有一个深度的价格水平,即买入方的限价订单和卖出方的限价订单......在这个例子中,让我们假设两边都有大量订单(比如买入价 1,34 和卖出价 1,35)。在此示例中,我们假设 "订单簿 "中只有这两个价格的订单......没有其他。

然后,我在两边(买入价和卖出价)都下一个订单,我的订单将分别排在队列的最后(最后一个买入订单在 1,34 边,最后一个卖出订单 在 1,35 边)。

随着排在我前面的订单被执行或取消,我的订单将在队列中取得进展,在我的订单后面可能会出现相同价位的额外限价订单....,我想了解是否有办法在任何给定时间检索我的订单在队列中的位置。请看我附上的图片。

非常感谢您关注并努力理解我的问题,请告诉我这是否清楚,如果这不是一个好例子,我可以试着想出其他例子。

祝您一切顺利,再次感谢您的宝贵意见。


安德烈-奥利维拉


安德烈-奥利维拉

恐怕我们无法在市场深度中看到订单队列。如果我说错了,请纠正我。

 
Artyom Trishkin:

恐怕我们无法在市场深度中看到订单队列。如果我说错了,请纠正我。

再次感谢您关注这个问题 Artyom....我对 mql5 编程很陌生,但至少在我们的巴西交易所,这显然是可能的,因为在一个名为 Profit 的交易平台 和另一个名为 Tryd 的交易平台 的 "订单簿 "和 "订单列表 "中已经实现了这一点。这两个交易平台都是面向手动交易者的,并不强调自动交易。

请看附带的截图,它们用黄色显示 "我的订单",并显示所有其他订单的前后......事实上,它们显示所有经纪人和订单大小......这是一个非常透明的过程。

这在其他交易所可能并不常见(我只是猜测,因为我在其他交易所没有太多经验),因此 mql5 语言可能没有探讨这个问题......我会试着找出如何将其导出到这些交易平台(肯定有某种 API),我只是想也许 mql5 也已经在探索这个问题了。

Artyom,非常感谢你的评论,非常感谢。祝贺您的文章,内容和信息质量都非常高。

致以最崇高的敬意

安德烈-奥利维拉

附加的文件:
 
André Dias de Oliveira :

再次感谢您关注我们的问题 Artyom....我对 mql5 编程非常陌生,但至少在我们的巴西交易所,这显然是可能的,因为在一个名为 Profit 的交易平台 和另一个名为 Tryd 的交易平台 的 "订单簿 "和 "订单列表 "中已经实现了这一点。这两个交易平台都是面向手动交易者的,并不强调自动交易。

请看附带的截图,它们用黄色显示 "我的订单",并显示所有其他订单的前后......事实上,它们显示所有经纪人和订单大小......这是一个非常透明的过程。

这在其他交易所可能并不常见(我只是猜测,因为我在其他交易所没有太多经验),因此 mql5 语言可能没有探讨这个问题......我会试着找出如何将其导出到这些交易平台(肯定有某种 API),我只是想也许 mql5 也已经探索过了。

Artyom,非常感谢你的评论,非常感谢。祝贺您的文章,内容和信息质量都非常高。

致以最崇高的敬意

安德烈-奥利维拉

我会试着更详细地考虑这个问题。但要在有时间的情况下。遗憾的是,我的时间不多。