程序库: MT4Orders - 页 35

 
Vladislav Andruschenko:

在 mt4 中完美运行的功能在 mt5 中并不完美。

遗憾的是,如果没有代码,这种说法不会引起任何有建设性的讨论。

 
fxsaber:

遗憾的是,如果没有守则,这样的发言是没有建设性的。


我同意。

我运行了你的报告--没问题。

我正在寻找自己的错误。

谢谢。


P/S/

我正在尝试理解您的代码,但怎么也想不明白。


但我找到了这个:

      if (Sort ? OrderSelect((int)Tickets[i][TICKET_INDEX], SELECT_BY_TICKET) : (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && Filter.Is())) // int - (Sort == true) 仅适用于 MQL4。

那么,这里还有关于排序的内容吗?


#ifdef __MQL5__
      static const bool Sort = false;
    #else // __MQL5__
      #ifdef __VIRTUAL__
        static const bool IsTester = ::MQLInfoInteger(MQL_TESTER);

        const bool Sort = !IsTester && !VIRTUAL::GetHandle();
      #else // __VIRTUAL__
        static const bool Sort = !::MQLInfoInteger(MQL_TESTER);
      #endif // __VIRTUAL__
 
Vladislav Andruschenko:

我试图理解你的代码,但怎么也想不明白。

但我找到了这个:

所以这里有关于排序的内容?

代码是跨平台的。那里的排序代码只针对 MT4 执行。

那里的代码很糟糕,因为它是对 2006 年的同名脚本进行的本地重写。
 
fxsaber:

代码是跨平台的。排序代码只针对 MT4 执行。

这里的代码非常糟糕,因为它是对 2006 年的同名脚本进行的本地重写。


大致情况如下:

2012 年,我制作了一个用于收集统计数据的指标,并在 HTML 中为 MT4 收集了所有内容。

我挣扎了很久,然后放弃了它(就像其他数百个项目一样)。

2016 年,我发现了这个项目,并决定完成它。但我在排序顺序(在历史记录中)上费了很大劲,为了使结果与 mt4 的报告一致,我按照收盘时间进行了排序、

但也有一些细微差别,即

如果收盘时间相同,有时经纪商不是按顺序收盘(如果触发了总止损),而是分散收盘(有时会发生)。

我已经解决了这个问题。

MT4 和来自 mt4 的报告以及来自我的指标的报告都是一样的。与您的报告一样


大多数用户要求在 MT5 上做同样的事情。

当然,我懒得建立自己的库,所以我使用了您的库 - 它非常有趣,解决了很多问题(HEDGE?)


我没有修改代码中的任何内容 - 我连接了您的 MT4Orders 库 - 但我发现我的代码在其中不起作用(我还不知道原因,也许是我的懒惰和歪曲)。


在 mt4 中:如果收盘时间相同,有时经纪商不是按顺序收盘(如果触发了总止损),而是分散收盘(有时会发生)。

在 mt5 中:我没有进行这种排序,而是像 BAC 一样,从收盘时间开始排序。


现在是结果:





正如您所看到的,您的报告和我的报告结果完全相同。应该是这样的。


但是,MT5 报告的排序方式不同。



如你所见,mt5 终端的报告有不同的排序。

它不是以排序(从列表末尾或从列表开始)来表示,而是以打开时间来表示。

在大型报告中,统计数据会有所不同(例如,连续获胜)。


这就是我想说的...

这就是为什么我想把一切都弄明白。

如果我让您感到困惑,我深表歉意。

继续努力,你做了很多好事。

 
Vladislav Andruschenko:

正如你所看到的,你的报告和我的报告结果完全一致。本来就应该这样。


但 mt5 报告的排序方式不同。



如您所见,mt5 终端的报告排序不同。

它不是按排序(从列表末尾或从列表开始),而是按打开时间。

在大型报告中,统计数据会有所不同(例如,连续获胜)。

事实上,当前的 MT5 仓位报告是按开仓时间 排序的。仓位报告是由开发人员最近制作的,没有任何繁琐。这就是它如此粗糙的原因。我几乎可以肯定,这就是排序不合逻辑的原因。如果您指出来,我想他们会改正的。

至于连胜,与他们的位置报告无关。他们的位置报告是后期添加的,不会影响统计结果。

 
fxsaber:

事实上,当前的 MT5 仓位报告是按开仓时间 排序的。仓位报告是开发人员最近才制作的,没有经过任何斟酌。这就是它如此粗糙的原因。我几乎可以肯定,这就是排序不合逻辑的原因。如果您指出来,我想他们会改正的。

至于连胜,与他们的位置报告无关。他们的位置报告是后期添加的,不会影响统计结果。

谢谢你的见解。

先这样吧,我稍后再试着找出其中的细微差别。

谢谢你的图书馆。

 
Vladislav Andruschenko:

我的代码中没有任何改动 - 我连接了您的 MT4Orders 库 - 但我发现我的代码在其中不起作用(我还不知道原因,也许是我的懒惰和歪曲)。

正如你所看到的,你的报告和我的报告结果是一样的。应该是 这样的。

这两句话相互矛盾。

 
fxsaber:

这两句话相互矛盾。

我的意思是,在我的 mt4 代码中,我按平仓 时间排序,但如果平仓时间相同,我则按票据编号排序(我有时会遇到平仓顺序不对的账户,因此整体统计数据受到影响)。- 我根据 mt4 的报告调整了统计数据。请勿注意。我脑子里有自己的蟑螂。

由于某种原因,这段代码在 mt5 中不起作用,我只是做了一份没有排序的报告。

这就是为什么我们在 mt5 中得到了相同的结果。有必要这么麻烦吗?现在即使不排序,我也看不到任何错误。也许 3 (7) 年来发生了什么变化。

Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
// 更改列表:
// 13.03.2019
// Add: 已添加 OrderTicketID() - MT5 交易或 MT5 仓位的 PositionID,MT4 挂单的票据。
// 补充:SELECT_BY_TICKET 对所有 MT5 票(和 MT5-PositionID)有效。
 
超强!据我所知,这是否解决了在历史记录中选择 SELECT_BY_TICKET 的问题(在保证不部分执行的情况下)?