程序库: MT4Orders - 页 95

 
fxsaber #:

它完全符合时间轴。再次强调。MT5 会生成交易历史记录。它是平仓头寸的歪曲表示。

您不应以 MT5 显示的内容为指导,而应以常识为指导。

好吧,我明白了。您关注的是历史订单的平仓过程。

我想说的是,或者更准确地说,获取账户中在两个指定时间点之间存在的仓位(仓位订单)列表。

当然,由于使用了 CloseBy 操作,某些订单的价格和平仓时间可能不准确。但对于我(作为用户)来说,这并不重要,因为利润计算是正确的。如果您需要详细信息,可以随时查看 "订单和交易 "部分。
 
hini #:
账户在两个指定时间点之间的仓位(仓单)列表。
这显示的是无快照模式下的 MT4Orders。即一次显示。
 
#define  MT4ORDERS_BYPASS_MAXTIME 1000000

启用该宏后,由于某些原因,有时会在日志中打印出一行包含两张或三张票的内容:"18521123 22323214".

注释掉这个宏后,这种情况再也没有发生过。我试图在代码中找到Print,但没有找到。

 
hini Print,但没有找到。
Include\fxsaber\TradesID\ByPass.mqh

前段时间,MQ 将历史订单表的形成搞得一团糟,而且不想修复它。因此,该宏无法保证其功能,而在 MQ 执行不当之前,该宏是具有这种功能的。
 
fxsaber #:

前段时间,MQ 将历史订单表的形成搞得一团糟,而且不想修复它。因此,该宏无法保证其功能,而在 MQ 执行不当之前,该宏是具有这种功能的。
您在说什么?
 
fxsaber # :
因此,这个宏无法保证它在 MQ 实施不良之前的功能。
所以我们必须放弃这个宏吗?
 
Alain Verleyen #:
你在说什么?
这里 有非常详细的重现。简而言之--新删除的挂单可能无法进入交易历史的末尾,因为它会被强行按票据排序。
Зашивается в Ex5 или задается терминалом при загрузке платформы MetaTrader 5 build 2940
Зашивается в Ex5 или задается терминалом при загрузке платформы MetaTrader 5 build 2940
  • 2021.06.19
  • www.mql5.com
Это как с транзакциями в OnTradeTransaction - очередность прихода транзакций не гарантируется. Одни транзакции фактически приходят после других хотя в теории должно быть наоборот. Супер-оптимизированная разработчиками HistorySelect дозаписывает в конец все новые ордера
 
hini #:
所以我们必须放弃这个宏?

该宏使用了这一功能。

交易、自动交易系统和交易策略测试论坛

新版 MetaTrader 5 第 2940 版:MQL5 服务展示移至工作区并更新设计

fxsaber, 2021.06.11 09:47 PM

如果从零开始使用 HistorySelect,当 Expert Advisor 运行时,新订单 会正确进入表尾

  • 如果只使用 HistorySelect(0,INT_MAX),新订单(在 EA 运行期间进入历史记录)将被添加到末尾- 按ORDER_TIME_DONE_MSC 排序

这一点被破坏了。因此宏无法保证其功能。


ZY 在 Virtual 中,删除挂单时,挂单总是被写入历史订单表的末尾。MT5-tester 也是如此。问题只出现在终端中。

 
尊敬的fxsfber,在MT5 6116版本下,MT4Orders无法编译。问题出在通过链接传递参数 时,示例:
static bool IsMT4Deal( const ulong /*&*/ Ticket )
  {
    const ENUM_DEAL_TYPE DealType = (ENUM_DEAL_TYPE)::HistoryDealGetInteger(Ticket, DEAL_TYPE);
    const ENUM_DEAL_ENTRY DealEntry = (ENUM_DEAL_ENTRY)::HistoryDealGetInteger(Ticket, DEAL_ENTRY);

    return(((DealType != DEAL_TYPE_BUY) && (DealType != DEAL_TYPE_SELL)) ||      // 非交易协议
           ((DealEntry == DEAL_ENTRY_OUT) || (DealEntry == DEAL_ENTRY_OUT_BY))); // 交易
  }
将该链接注释掉后,一切都能编译通过。我不明白为什么需要这些链接。
 
Alexey Volchanskiy #:
MT4Orders 无法编译。
建议。