文章 "MQL5 酷客宝典: 读取持有锁仓仓位的属性"

 

新文章 MQL5 酷客宝典: 读取持有锁仓仓位的属性已发布:

MetaTrader 5 是一个多资产平台,此外,它还支持不同的仓位管理系统。这种功能为实现和创建交易思路提供了更加广泛的选择,在本文中,我们将讨论在锁仓模式下处理和计算仓位属性的方法。这篇文章包含了一个派生类,以及展示如何取得和处理锁仓仓位属性的实例 。

MetaTrader 5 终端中最近加入的功能可以双向开启订单,这种订单账户系统被称为锁仓。对这种订单系统的支持可以简单地把来自 MetaTrader 4 的交易算法迁移到版本5的平台上,并且享受到 MetaTrader 5 功能上的优势。取得 MetaTrader 5 中锁仓选项的更多信息, 请阅读文章 "MetaTrader 5 已具备锁仓账户系统"

在本文中,我们将讨论合计仓位的属性,而这样的仓位正是锁仓系统的目标。

锁仓仓位属性面板

图4 锁仓仓位属性面板

作者:Denis Kirichenko

 

由于某种原因,开盘价 由 Digits 正常化。

佣金的计算存在误差,而且计算速度很慢:在循环的每一步中,佣金都被正常化并加倍。

 
fxsaber:

由于某些原因,开盘价 被 Digits 正常化了。

佣金的计算存在误差,而且计算速度很慢:在循环的每一步中,佣金都被正常化并加倍。

谢谢您的意见。

我检查了有关正常化的代码。在 CHedgePositionInfo 类中只有两种情况:佣金和保证金。价格仍未正常化。据我所知,开盘价在 Test_hedge_properties.mq5 测试脚本的打印中已隐式归一化。

那么关于佣金。您是否与 "历史 "选项卡上的记录进行过比较?在那里,每笔交易的佣金值都以 2 的精度进行了归一化处理,并且加倍考虑到了退出时刻(DEAL_ENTRY_OUT)。也就是说,面板反映的是开仓和平仓整个周期的佣金。文章中提到了这一点。

 
Denis Kirichenko:

谢谢您的意见。

我检查了有关正常化的代码。在 CHedgePositionInfo 类中只有两种情况:佣金和保证金。价格仍未正常化。据我所知,在 Test_hedge_properties.mq5 测试脚本中,开盘价已为打印隐式归一化。

是的,是印刷品的问题。

然后是佣金。您是否比较过 "历史 "选项卡上的记录?在那里,每笔交易的佣金值都被归一化到最接近的 2,而加倍是考虑到退出的时刻(DEAL_ENTRY_OUT)。也就是说,面板反映的是开仓和平仓整个周期的佣金。文章中提到了这一点。

不,我是根据代码来判断的。开仓,然后平仓一部分。根据您的代码,当前仓位的佣金不会改变。

此外,加倍下注是一个好的意图,但却造成了一个问题。问题在于,在关闭所有仓位后,您需要余额等于净值 + 仓位佣金。但这样就不应该加倍,因为 MT5 在开仓时 已将开仓佣金反映在余额中。


而且在计算佣金时,在周期的每一步都执行归一化是非常昂贵的。这在优化时非常重要。

 
fxsaber:

......不,根据代码判断。打开一个仓位,然后关闭部分仓位。根据您的代码,当前位置的佣金不会改变。

此外,加倍是一个好的意图,但却产生了问题。问题在于,在关闭所有仓位后,您需要 余额等于净值 + 仓位佣金。但这样就不会出现加倍,因为 MT5 在开仓时 已将开仓佣金反映在余额中。

是的,不会改变。我们的目的是显示当前套期保值总共要支付的最高佣金。此外,我们已经支付了部分佣金,稍后还将支付第二部分。但也有细微差别。

例如,有一种交易叫做DEAL_ENTRY_OUT_BY至少在我的经纪人那里是没有佣金的。如果账户货币与基准货币不一致,佣金也会发生变化(进入和退出的成本不同)。因此,我的例子远非理想....。

你为什么认为我需要它?我只是展示了计算佣金等间接费用的方法之一。


在计算佣金时,在循环的每一步都进行归一化处理是非常昂贵的。这在优化中很重要。

优化除外。没有人阻止你在代码中做出自己的改动并将其考虑在内。

 
Denis Kirichenko:

是的,不会改变。我们的目标是显示我们为当前套期保值支付的佣金总额上限。此外,我们已经支付了部分佣金,稍后还将支付第二部分。但也有细微差别。

例如,有一种交易叫做DEAL_ENTRY_OUT_BY至少在我的经纪人那里是没有佣金的。

根据定义,CloseBy 无需支付佣金。

如果账户货币与基准货币不同,佣金也会发生变化(进入和退出的成本不同)。因此,我的例子远非完美....

你为什么认为我需要它?我只是展示了计算佣金等间接费用的方法之一。

因为在 MT4 的语言中,净值 = 余额 + 利润 + 掉期 + 佣金。这是最常见的逻辑。当然,您也可以有自己的逻辑。

优化除外。没有人阻止您做出自己的更改并将其纳入代码。

开发人员正在努力使优化程序更快。但慢速代码在文章中是允许的。这看起来很奇怪。

 
fxsaber:

因为在同一种 MT4 语言中,净值 = 余额 + 利润 + 掉期 + 佣金。这是最常见的逻辑。当然,您也可以有自己的逻辑。

你不会相信我,我对净值也是这么想的 :-))))

我会选择佣金的计算方法。修改代码

...开发人员说要让优化程序更快。但在文章中,他们允许缓慢的代码。这看起来很奇怪。

外交辞令你还在沸腾吗?- 我已经在云中测试一切很久了,我并不担心某处存在不必要的规范化和多行宏...

 
Denis Kirichenko:

我已经在云中测试一切很久了,我并不担心某处有不必要的规范化,也不担心没有多行宏......

用硬件的力量取代最简单的算法优化似乎是一种长期形成的趋势。我做不到这一点。

 
fxsaber:

即使是最简单的算法优化,也会被强大的硬件所取代,这显然是一个由来已久的趋势。我做不到

千兆赫和千兆字节时代。

 

你好、

我下载了 zip 文件并解压缩,然后在编辑器中打开了它们,当我编译它们时,却出现了大量错误。


有什么我可以用的吗?


谢谢

 

如果你遵循我的方法,就不会出错。方法很简单。打开 MetaEditor,然后

1) 在 "共享项目"文件夹下创建 "绿篱 "子文件夹;

2) 将源文件放入子文件夹。


ME 导航仪

然后编译HedgePropertiesEA.mq5(专家顾问)和Test_hedge_properties.mq5(脚本)。编译成功后,您将在终端导航器中找到可执行文件。


MT5 导航仪