文章 "用于在以仓位为中心的 MetaTrader 5 环境中跟踪订单的虚拟订单管理程序" - 页 5

 
Alain Verleyen:
由于 MT5 提供套期保值账户,因此该库已基本过时。您仍然可以在净额结算账户中使用它,但它真的值得吗?

我的电子交易系统是在一个符号上运行的扩展网格类型,因此我需要单独跟踪每笔交易或网格级别,以便知道在哪里开启下一级。 在 MT4 上,我一直通过查看未结交易列表来实现这一点,并使用它们来计算我需要在网格中开启下一笔交易的位置。 在 MT5 上,我发现它将所有交易转入一个大位置,这完全破坏了这种方法。例如,我不能在 MT5 中打开两个买入交易,因为它会将它们合并为一个仓位。 如果我不知道第一至第五级的位置,我如何计算买入网格第六级的位置? 我希望您能明白我的意思。 这个库是我发现的解决这个问题的唯一方法。 在 MT4 上,我还在每笔交易上使用唯一的神奇数字来识别每个网格级别。在 MT5 上,我发现也无法设置唯一的神奇数字,因此我打算将它们存储在磁盘上。 如果有更好的方法在 MT5 上管理网格级别,我非常想学习。

我花了两个星期的时间让它在 MT5 上正常编译,我相信一旦我将神奇数字存储在磁盘上而不是经纪商服务器上,它就能正常运行。

积极的一面是,我找到了修复 VOM 库错误的方法,希望能对大家有所帮助。 使用第 2 版库时,需要将 virtualordermanager.mqh 文件的第 855 行从 :

MtRequest.type_filling=ORDER_FILLING_FOK;

改为

MtRequest.type_filling=SYMBOL_FILLING_FOK;

这样就可以正常打开交易,不会出错。

 
kenshin71:

我的 ea 是在一个符号上运行的扩展网格类型,因此我需要单独跟踪每笔交易或网格级别,以便知道在哪里开启下一级。 在 MT4 上,我一直通过查看未结交易列表来实现这一点,并使用它们来计算我需要在网格中开启下一笔交易的位置。 在 MT5 上,我发现它将所有交易转为一个大位置,这完全破坏了这种方法。例如,我不能在 MT5 中打开两个买入交易,因为它会将它们合并为一个仓位。 如果我不知道第一至第五级的位置,我如何计算买入网格第六级的位置? 我希望您能明白我的意思。 这个库是我发现的解决这个问题的唯一方法。 在 MT4 上,我还在每笔交易上使用唯一的神奇数字来识别每个网格级别。在 MT5 上,我发现我也无法设置唯一的神奇数字,因此我打算将它们存储在磁盘上。 如果有更好的方法在 MT5 上管理网格级别,我很想学习。

我花了两个星期的时间让它在 MT5 上正常编译,我相信一旦我将神奇数字存储在磁盘上而不是经纪商服务器上,它就能正常运行。

积极的一面是,我找到了修复 VOM 库错误的方法,希望能对大家有所帮助。 使用第 2 版库时,需要将 virtualordermanager.mqh 文件的第 855 行从 :

改为

这样就能正常打开交易,不会出错。

这就是为什么我说你现在有对冲账户,你应该使用它,因为你显然是在进行外汇交易。你所说的账户是净额结算账户。
 
谢谢 Alain,我现在明白你的意思了。 我很抱歉没有先仔细研究你说的对冲问题。 为了让我的 Ea 在 MT5 下运行,我需要对 VOM 和所有其他更改进行修改,这让我快发疯了。 我想我要休息一下,等睡一觉再回来。不过,我认为我需要从头开始编写一个 MT5 专用的电子交易程序版本。 到目前为止,我一直在尝试使用条件编译来制作一个可在 MT4 和 MT5 下运行的版本,但这个想法并不像我希望的那样干净利落。 再次感谢您为我指明了正确的方向。
 
Alain Verleyen:
由于 MT5 提供套期保值账户,因此该库已基本过时。您仍然可以在净额结算账户中使用它,但它真的值得吗?

是的)这在 SW 开发中很常见。

 
kenshin71:
谢谢 Alain,我现在明白你的意思了。 我很抱歉没有先仔细研究你说的对冲问题。 为了让我的 Ea 在 MT5 下运行,我需要对 VOM 和所有其他改动进行修改,这让我快发疯了。 我想我要休息一下,等睡一觉再回来。不过,我认为我需要从头开始编写一个 MT5 专用的电子交易程序版本。 到目前为止,我一直在尝试使用条件编译法制作一个可在 MT4 和 MT5 下运行的版本,但这一想法并不像我希望的那样干净利落。 再次感谢您为我指明了正确的方向。
你成功了吗?如果可以的话,我想从你离开的地方继续前进,分享你不得不做的修正。不幸的是,我需要使用 MT5 账户进行净额结算,并且需要使用 VOM 进行虚拟对冲。