voidOnStart()
{
// Print("используется памяти до закачки истории: "+string(MQLInfoInteger(MQL_MEMORY_USED))+" Mb");Print("используется памяти до закачки истории: "+string(TerminalInfoInteger(TERMINAL_MEMORY_USED))+" Mb");
MqlTick items[];
ulong t0=GetMicrosecondCount();
uint count=CopyTicks(Symbol(),items,COPY_TICKS_INFO,0,1 e7);
t0=GetMicrosecondCount()-t0;
Print ("Загружено за "+string(t0/1000)+" миллисекунд "+ (string)count+ " тиков");
// Print("используется памяти после закачки истории: "+string(MQLInfoInteger(MQL_MEMORY_USED))+" Mb");Print("используется памяти после закачки истории: "+string(TerminalInfoInteger(TERMINAL_MEMORY_USED))+" Mb");
ArrayFree(items);
// Print("используется памяти после ArrayFree: "+string(MQLInfoInteger(MQL_MEMORY_USED))+" Mb");Print("используется памяти после ArrayFree: "+string(TerminalInfoInteger(TERMINAL_MEMORY_USED))+" Mb");
}
其结果是在一个已经运行了很长时间的终端上。没有EA/指示器运行。两张图表,M1栏只显示当年的情况。
используется памяти до закачки истории: 1043 Mb
Загружено за 11223 миллисекунд 10000000 тиков
используется памяти после закачки истории: 1675 Mb
используется памяти после ArrayFree: 1102 Mb
2020.03.1910:39:45.784 Test (EURUSD,H1) AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
2020.03.1910:39:46.765 Test (EURUSD,H1) Test Class ArrayResize all : loops=1000 ms=9842020.03.1910:39:48.233 Test (EURUSD,H1) Test Class ArrayResize one by one with reserved memory : loops=1000 ms=14692020.03.1910:39:49.944 Test (EURUSD,H1) Test Class ArrayResize one by one with newoperator : loops=1000 ms=17032020.03.1910:39:50.923 Test (EURUSD,H1) Test Class ArrayResize all : loops=1000 ms=9692020.03.1910:39:52.392 Test (EURUSD,H1) Test Class ArrayResize one by one with reserved memory : loops=1000 ms=14842020.03.1910:39:54.100 Test (EURUSD,H1) Test Class ArrayResize one by one with newoperator : loops=1000 ms=17032020.03.1910:39:55.079 Test (EURUSD,H1) Test Class ArrayResize all : loops=1000 ms=9852020.03.1910:39:56.548 Test (EURUSD,H1) Test Class ArrayResize one by one with reserved memory : loops=1000 ms=14692020.03.1910:39:58.258 Test (EURUSD,H1) Test Class ArrayResize one by one with newoperator : loops=1000 ms=17032020.03.1910:39:59.237 Test (EURUSD,H1) Test Class ArrayResize all : loops=1000 ms=9842020.03.1910:40:00.705 Test (EURUSD,H1) Test Class ArrayResize one by one with reserved memory : loops=1000 ms=14692020.03.1910:40:02.416 Test (EURUSD,H1) Test Class ArrayResize one by one with newoperator : loops=1000 ms=1703
当然,是释放。终端本身在其缓存中存储了刻度,在操作过程中我不需要这些刻度。
对我来说,最好是在以后的寒冷中再养这些虱子。需要一个机制来 "冷却 "终端。
没有注意到这一点。
SZY 可悲的是,在内存中,ticks是以每个tick 60字节的大小无包装存储的。可以很容易地打包5次(每个tick~12字节)。
最好是像CopyRates那样进行自动下载。
在这种情况下,时间框架是未知的。下载是由一个周期符号请求发起的。
考虑可以做什么
没有注意到。
你必须看一下终端的消费情况。
其结果是在一个已经运行了很长时间的终端上。没有EA/指示器运行。两张图表,M1栏只显示当年的情况。
60Mb还没有发布。空终端机的消耗量超过了一千兆字节。减少消耗的唯一方法是重新加载终端。
下午好,非常感谢你。
我以前没有用过new操作符,因为从逻辑上讲,它一定比保留内存的ArrayResize要慢。
但我对获得的结果印象深刻,事实证明,反之亦然,通过new运算符的本地数组更快。
MT5(build 2363)。
在测试版2364中发布(不幸的是,它在模板内的new T()有一个编译器错误)。
这里是你的脚本的日志。
你可以看到对象的ArrayResize已经开始快速工作了。再一次,ArrayResize函数的一个部分的复杂性从对数降低到了零
我们可以看到,现在对象的ArrayResize更快。
我们再一次成功地将ArrayResize函数的一个部分的复杂性从对数降低到零。
我设法比较了ArrayResizeReserve和ArrayOnNew在一个真实项目中的速度,数据类型 是有一个int字段的类,记录数是20M。
在MT5(build 2363)中,除了一个ArrayOnNew之外,所有的参数都比ArrayResizeReserve差。
帮助(编辑)中的这些链接导致了一个找不到的页面
当第一个 "测试 "函数包含一个 完全专业化的 模板基类作为参数时,问题 就出现了。
而第二个 "测试 "函数重载了第一个,是一个模板函数,并包含一个非专门 的模板基类作为参数。
大家好!!!。我的问题是:我在我的copyutera上使用两个平台MT4和MT5。 我从MT4连接到信号,没有任何问题。但我不能从MT5连接到另一个信号。我有一个账户,资金的流动被显示出来,但是账户中没有账号,我在终端的仪表板上没有信号按钮。我租了一个服务器,vps,我写了我需要迁移,但迁移按钮不起作用。请告诉我为什么。
MetaTrader 5(用于终端的内置虚拟主机租赁)需要一个64位的操作系统。
在Win 10上,有人连接本地代理吗?
试着连接2台电脑,远程代理不断地准备-连接-准备-连接......。没有工作。
我看了一下防火墙,我认为Metatrader代理有一个复选标记,通过文件导出-导入代理,也可以看到端口和PC的名称。
我怀疑我需要在其他地方转发端口?