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

 

你好,丹尼斯、

首先我要感谢你提供了这个神奇的程序库,它让像我这样的新手用户的生活变得非常轻松。我不是专业程序员,但也能理解、调整和调试一些代码。

我在一个正在测试的 EA 中使用了 "Test_Hedge_Properties "中的示例代码作为函数,结果发现在关闭所有(2 个)仓位后,当我调用函数

"Update_Hedge_Info" 时,在第一张单子关闭后,计算仓位数量 的变量 "hdg_number_of_pos_total "会从 (2) 更新为 (1)。

但是,在第二张票据关闭后,变量仍然显示(1),没有更新为(0)。

我不确定我的编码是否正确,但如果您能提供宝贵意见和专业知识,我将不胜感激。

现附上 EA 和截图。

谢谢并致以问候。

附加的文件:
 

我在 EA 中使用hedge_info.Margin() 计算当前保证金。

我想知道CHedgePositionInfo::AveragePrice"switch(curr_quote_type) ... case QUOTE_TYPE_CROSS: "中的以下 (*) 行。

我使用的是 EURCHF,major_symbolUSDEUR。由于 99.9% 的外汇经纪商 都不支持 USDEUR,而最多只 支持用户定义的交叉盘,因此在进行回溯测试时,以下 SymbolSelect 命令会导致错误信息。可能是经纪商的问题,但在我的情况下,这会导致策略测试器 突然中止,因为现在的有效符号是美元兑欧元,而不是我最初启动策略测试器的货币对(欧元兑瑞士法郎)。

if(SymbolSelect(major_symbol,true))    // (*)

因此,对我有帮助的方法是在CHedgePositionInfo::AveragePrice 的 末尾将 USDEUR 从市场观察中移除

SymbolSelect(major_symbol,false);