程序库: MT4Orders - 页 93

 
fxsaber #:
作者对其他语言的版本无能为力。
该问题已报告给 MQ。
 


 #include <MT4Orders.mqh>
 input datetime StartDate = D'2025.12.15 00:42:37' ;
 input datetime EndDate = D'2025.12.15 23:59:52' ;

 void OnStart() {
   int total = OrdersHistoryTotal();
   Print("OrdersHistoryTotal = " , total);
   for ( int i = 0 ; i < total; i++) {
     if (! OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) continue ;
     datetime openTime = OrderOpenTime();
     datetime closeTime = OrderCloseTime();
     if (openTime >= StartDate && closeTime <= EndDate) {
       ENUM_ORDER_TYPE orderType = ( ENUM_ORDER_TYPE )OrderType();
       if (orderType == OP_BUY || orderType == OP_SELL) {
        OrderPrint();
      }
    }
  }
}

我不知道为什么获得的手数是 0.00 而不是 0.01?

如果您需要账户,我可以通过私人信息提供。

OrderLots() 也返回 0。

 
hini #:

我不知道为什么收到的手数是 0.00 而不是 0.01?

这是正确的行为。您通过 CloseBy 关闭了仓位计数器。

运行 CustomReport - 会有更多信息可供了解。

 
fxsaber #:

这是正确的行为。您已通过 CloseBy 关闭了仓位计数器。

运行 CustomReport - 您将了解更多信息。

我使用 MT5 手动关闭了所有仓位,返回的手数为 0,这导致该订单的计算结果出乎意料。为什么返回的是 0.00 而不是官方数字?例如,关于订单数量,我不确定是否要排除该订单。从逻辑上讲,它不应该被排除,但返回 0 手表示订单无效。

在哪里可以修改这种行为?


 
如果买入 0.01,卖出 0.03,会返回 0.02 吗?我还没有测试过。有时间我会测试的。
 
hini #:

我使用 MT5 手动关闭了所有仓位,返回的手数为 0,导致该订单的计算结果出乎意料。为什么返回的是 0.00 而不是正式编号?例如,关于订单数量,我不确定是否应将此订单排除在外。从逻辑上讲,它不应该被排除,但返回的 0 手数表明订单无效。

在哪里可以改变这种行为?

这是正确的行为,与 MT4 在这些情况下的行为相同。如果通过 CloseBy 关闭两个多方向 1 手头寸,则关闭头寸的总交易量应为 1,而不是 2。

手数的总和就是交易量,除其他外,佣金就是据此计算的。


https://www.mql5.com/ru/blogs/post/751985

https://www.mql5.com/ru/blogs/post/754817

 
hini #:
如果买入 0.01,卖出 0.03,0.02 会回来吗?我还没有测试过。有时间我会测试一下。
会有一个 0.01 手的敞口头寸和两个平仓头寸:0.01 手和 0.00(信息)手。
 
fxsaber # :
会有一个 0.01 手的敞口头寸和两个平仓头寸:0.01 手和 0.00(信息)手。
如果要计算交易次数,应该是 0.04,但现在是 0.03?
 
hini #:
如果我想计算交易次数,应该是 0.04,但现在是 0.03?
我提供了所有链接和详细信息。一切运行正常。
 
fxsaber #:
提供了所有链接的详细信息。一切运行正常。
我明白问题的意思,但我想澄清一下:是否可以只获得类似于 MT5 仓位历史记录的列表,而不详细说明?