错误、漏洞、问题 - 页 2280

 
void f( int = 0, ) {}

编译时没有错误,这样做对吗?

 
Ilyas:

你遇到了Windows中的一个内存功能

在ArrayResize之后添加

这将启动物理内存的实际分配,所以这在测试期间不会发生。


以下是我的电脑上的结果

是的,它确实有效。
谢谢你。
非常有趣。但这并不清楚。
我应该知道,要在ArrayResize之后快速处理内存,你需要用ArrayInitialize或ArrayFill做一个完整的数组初始化(两种方式都可以)。 ArrayInitialize更简单。

我试图初始化每个4096个数组项目。但这并不影响ArrayFill的性能提升。

for (int i=0;i<size;i+=4096) arr[i]=0;
 
Nikolai Semko:

让我们知道,为了在ArrayResize之后快速处理内存,你应该用ArrayInitialize或ArrayFill(两种方式都适用)进行完整的数组初始化。 用ArrayInitialize更容易。

你一定是做了一个错误的结论。在任何情况下,一切工作都很迅速。只是在 "慢速 "变体中,你所测量的除了填充之外还有实际的内存分配,因为ArrayResize是分配内存的一个意图,而不是分配本身。

 
fxsaber:

你得出了错误的结论。一切都工作得很快,因为它是。只是在 "慢 "版本中,除了填充之外,你还在测量实际的内存分配,因为ArrayResize是分配内存的意图,而不是分配本身。

是的,你是对的。

谢谢你!
我也错了,当我说ArrayInitialize + ArrayCopy这个环节工作得更快时,因为我用之前用ArrayFill填充的值来填充数组。编译器只是很聪明,不会把同样的工作做两次。
如果我们用其他的值填充数组,结果就会不同。

2018.09.06 12:10:36.602 TestArrayFill (EURUSD,H1)       Время заполнения через ArrayFill первая попытка= 299
2018.09.06 12:10:36.602 TestArrayFill (EURUSD,H1)       Время заполнения через ArrayInitialize + ArrayCopy = 425
2018.09.06 12:10:36.602 TestArrayFill (EURUSD,H1)       Время заполнения через ArrayFill вторая попытка = 78

所以我搞砸了。对不起。
让我们继续使用ArrayFill的工作顺序。

附加的文件:
 

为什么我的个人资料中的居住国发生了变化?
在过去的三年里,是加拿大。我没有改变它。而现在我无法改变它。

也就是说,登记时的初始居住国是永远的。即使你不在俄罗斯居住,而成为其他国家的居民或公民?

 
让我知道,你是否会解决这个问题?

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

虫子、虫子、问题

fxsaber, 2018.09.06 09:31

为什么有时会出现这种情况?测试员不是在最后一个tick上平仓,而是在倒数第二个tick上平仓。这种情况在一些自定义符号上。

如果需要重播,随时可以提供。


为什么它很重要?在有交易所执行的自定义符号上,市场以最后价格执行。对于自定义符号,tick历史是买入/卖出,没有最后一个。因此,在这样的符号上,测试者在最后一个tick上将当前的头寸以0最后关闭。解决办法是在最后一个交易日强制执行last = (bid + ask) / 2。然而,在有些情况下,由于某种原因,测试者不是在最后一次,而是在接下来的最后一次勾选时关闭一切,其中最后一次是零。因此,我们有以下图表


你看一下优化结果,看到一些巨额的利润/损失。你不会意识到这是一个错误,直到你运行一个测试并查看交易历史的结束。

 
Nikolai Semko:

为什么我的个人资料中的居住国发生了变化?
在过去的三年里,是加拿大。我没有改变它。而现在我无法改变它。

也就是说,登记时的初始居住国是永远的。即使你不在俄罗斯居住,而成为其他国家的居民或公民?

您已注册为来自俄罗斯的卖家。如果您想对卖家的注册信息进行修改,欢迎

 

没有滚动条


 
fxsaber:
让我知道你是否要处理这个问题?
我们会调查的
 
Marsel:

您已注册为来自俄罗斯的卖家。如果您想对卖家的注册信息进行修改,欢迎

告诉我这些设置藏在哪里?我找不到他们。在SD中也没有这样的选项。