错误、漏洞、问题 - 页 2570

 
Nikolai Semko:

字符串是空的,就像它不存在一样,也就是说,甚至没有分配内存。

这一点在其他类型中也能观察到。如果你声明了一个变量,这意味着内存已经被分配。
但事实上,字符串不是一个原始类型,而是一个引用类型。

怎么可能不是呢?字符串对象的内存是在堆中分配的,文本开始的内存地址是0x00。
 
Igor Makanu:

不知道如何检查PrintFormat

注意事项

PrintFormat()在优化模式下的 策略测试器中 不被执行

有什么想法吗?

StringFormat 和产生的字符串到一个文件中如何?(对于每一次通过在共享文件夹中创建自己的文件--这样测试者就不会覆盖它们)。

 
Vladimir Simakov:
怎么可能不是呢?字符串对象的内存是在堆中分配的,而文本开始的内存地址是0x00

内存只为名称和引用分配,但不为对象本身分配,因为它还不存在。原始类型则不然,在变量被创建的那一刻,内存就被分配到那里了,即使没有初始化。
我不想为这些术语而烦恼。反正大家都能理解对方。
这一切都很明显。

 
Vladimir Karputov:

StringFormat 和产生的字符串到一个文件中如何?(在共享文件夹中为每一次通过创建不同的文件--这样测试人员就不会覆盖它们)。

好的选择,将测试

ZS:再次重写了代码,以便在优化器中更快地工作(结果是5小时,现在是1.5小时!!)。

现在我在帮助中看到了printf(),并决定检查我所有的打印,在我需要替换....,我替换了它,优化变成了22h .... 我找到了我搞砸的地方,但当然我马上想到这都是printf()的问题!!

)))


我试图在优化器中检查printf()。

int xx=10;
void OnTick()
{  printf("1/x = %f",1/(xx--));
....

到目前为止,我马上就得到了我所期望的。

2019.09.20 11:29:16.611 Core 1 genetic pass (0, 607) tested with error "critical runtime error 503 in OnTick function (zero divide, module experts\) " at 0:00:00.048


我在想,如果它说"PrintFormat()没有被执行。",那么它应该得到这个。

 
我曾有过这样的经历:代码优化 使执行速度提高了450倍:)。
 
Igor Makanu:

好的选择,将测试

SZY:再次重写了代码,以便在优化器中更快地工作(结果是5小时,现在是1.5小时!!)。

现在我在帮助中碰到了printf(),并决定检查我所有的打印,在需要替换的地方....,我替换了它,优化变得22小时....,我找到了我搞砸的地方,当然,马上想到了所有的原因在printf()!!!

)))


我试图在优化器中检查printf()。

到目前为止,我马上就得到了我所期望的。

2019.09.20 11:29:16.611 Core 1 genetic pass (0, 607) tested with error "critical runtime error 503 in OnTick function (zero divide, module experts\) " at 0:00:00.048


我在想,如果它说"PrintFormat()没有被执行。",那么它应该得到它。

啊哈,在单一测试和优化中得到不同的变量xx的值。

只有printf函数调用 没有被执行。

 
Slava:

啊哈,在单一测试和优化中得到不同的变量xx的值。

只有对printf函数 的调用没有被执行。

是的,很明显,用户也可以这样做

但如何检查printf()?

HH:虽然,如果开发商说没有印刷,那么我们就不必检查。

 
Igor Makanu:


但你如何检查printf()?

比较优化后的单次通过时间和单次通过的时间

 
Slava:

我将复制它。

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

虫子、虫子、问题

Alexey Kozitsyn, 2019.09.18 09:34

关于该平台的几个问题。

1.通过MOEX为VP增加一个允许的交易范围(如EURRUB_TOM)?现在不可能确定是否会放出限价,因为无法获得范围(最大和最小的可能价格)。请添加。

2.是否可以在终端和元编辑中加入每隔N分钟自动保存的状态?非常缺乏,因为突然断开连接,你又回到了程序开始时的状态,失去了所有的变化!这是不可能的。非常有压力!

关于第一点:要明白,如果你不知道局限性,就不可能正常交易!这一点是很重要的。为什么有些乐器可以得到这些限制,而其他乐器却不能?

 

帮助又错了,我读的是:https://www.mql5.com/ru/docs/math/mathmax

Функция возвращает максимальное из двух числовых значений.

double  MathMax(
   double  value1,     // первое число
   double  value2      // второе число
   );

我看到没有任何选项,函数类型fmax() double ,寻找我可能丢失分数值的地方,在寻找任何东西和所有东西之后,我运行测试。

void OnStart()
{
   long slvl = SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL);
   int sl = 300;
   Print(typename(fmax(slvl,sl)));
}

2019.09.20 18:06:34.194 tst (EURUSD,H1) long

ZS:我马上回答,我把帮助读到最后,看到这句话:"返回值类型与高级类型相对应"。...我认为,这并不严重,在99%的情况下,在帮助中寻找函数的描述就足够了,而不是在行间寻找隐藏的意义--它写的是结果类型fmin() --> double --所以没有变体,如果