新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1311

 
MakarFX:

问题1:我不明白这个问题(

获取所选时期的开始或时期本身的方案

 
Andrey Sokolov:

以获得所选时期的起始点或该时期本身

不,"OrdersHistoryTotal 返回客户终端中加载的当前账户历史中的关闭和删除的订单数量"。
 
Andrey Sokolov:

以获得所选时期的开始时间或时期本身。

曾几何时,不仅时期取决于 "历史 "选项卡中的设置,而且还取决于排序顺序。排序似乎已经变得不可改变,但时期似乎仍然取决于。即,如果我们显示从01.12.2020 - 04.12.2020的历史,那么OrdersHistoryTotal()将只返回这个时期的订单量。如果我的大脑还没有完全干涸,到了关门时间也算。它不考虑开放时间。假设,例如,一个订单在2020年12月2日打开,在2020年12月5日关闭(还不是很好的日期,但仍然),它不会进入2020年12月1日至2020年12月4日的时期。
 
Alexey Viktorov:
如果我的大脑还没有完全干透,到了关门时间也算数。

是的,只有关闭 或删除

 
Alexey Viktorov. MakarFX 感谢你澄清了什么日期被计算在内。但问题并不完全是关于这个。假设选择了 "上个月 "的时期,我们如何获得这个(选择的)时期的开始日期,即使那一天没有交易?
 
Andrey Sokolov:
Alexey Viktorov. MakarFX 感谢你澄清了什么日期被计算在内。但问题并不完全是关于这个。假设我选择了 "上个月 "这个时间段,我怎样才能得到这个(选择的)时间段的开始日期,即使我在那一天没有进行交易?
没有办法。
 
Andrey Sokolov:
Alexey Viktorov.MakarFX,谢谢你澄清了什么日期被考虑在内。但我的问题不完全是关于这个。假设我们选择了 "上个月",我们如何以编程方式获得这个(所选)时期的开始日期,即使我们在那一天没有进行交易?

没有时期的开始日期,有一个最早的日期的权证。说实话,这很可悲,因为如果历史上没有命令,就没有时期日期。事实上,就是这样。

 
Valeriy Yastremskiy:

没有时期的开始日期,有一个最早的日期的权证。说实话,这很可悲,因为如果历史上没有命令,就没有时期日期。事实上,就是这样。

此设置不用于 "日常调整"--配置一次终端就不要再碰它。

在99.9%的交易系统中,3个月的历史周期将完美地工作,可能除了TS,其中每月有数万个订单 - 1个月的周期应该在这里设置。

SZZ:在很长一段时间的历史 中,我没有注意到任何性能损失(很明显,一切都可以被打破)))- 但在1个月的情况下,可能会有一些意外。


因此,如果MetaTrader的开发人员允许我们 "旋转 "订单历史--那就糟糕了!因为他们不知道该怎么做。

)))

 
Igor Makanu:

这个设置不是为了 "日常调整"--配置一次终端就不要再碰它。

在99.9%的交易系统中,3个月的历史周期将完美地工作,好吧,可能是TS的例外,其中每月有几万个订单 - 在这里,最有可能的是1个月的周期应该被设置为

SZZ:在很长一段时间的历史 中,我没有注意到任何性能损失(很明显,一切都可以被打破)))- 但在1个月的情况下,可能会有一些意外。


因此,如果MetaTrader的开发人员允许我们 "旋转 "订单历史--那就糟糕了!因为他们不知道该怎么做。

)))

我的方法是比较悲观的。我们不能对历史这样的默认数据进行分析,因为它必须存在,我们必须找到它,而有效的分析需要自己的数据收集))))。历史仅用于业务管理。

 

你可以尝试使用WinAPI从表单中提取日期。也订购了一个新的时期。

对于四人,我不知道五人的情况如何。


我发现了这个,我几年前做过,像这样。

#import "user32.dll"
   int GetForegroundWindow();
   int PostMessageA(int hWnd, int msg, int wParam, int lParam);
#import

//загружает всю историю закрытых ордеров
bool DownloadOrderHistory()
   {
   int eHandle=GetForegroundWindow();
   if(eHandle<=0) return(false);
   return(PostMessageA(eHandle,0x0111,0x8122,0)==1);
   }
GetForegroundWindow better replace....
原因: