错误、漏洞、问题 - 页 2708

 

我建议在市场上的产品自动验证中增加具体内容。除了验证器报告的一般错误外,强烈要求提供正在进行的测试的背景和日志。特别是,我已经有几年没能更新一个指标了,因为出现了 "测试人员花费时间太长 "的错误。第一个版本是在 "人工 "审核下上传的,没有投诉。自动放弃者发出这一错误的标准完全不清楚。

这里有一个具体的问题:在什么样的硬件上,产品应该在多少时间内提供多少刻度,这样才不会出现 "测试者需要太长的时间"?

该指标旨在通过MapReduce算法处理ticks,使用的是整数计算,所以没有什么可压缩的,除非你把算法本身扔掉。使用了剖析器,添加了一个rotlining来重新计算具有给定周期的新ticks阵列。无济于事。

在我的电脑上,这一年在几分钟内就能测试出来。自流井中究竟发生了什么,为什么它的速度会变慢,目前还不可能知道。

缺乏适当的产品支持对用户和MQ都是一个问题--它影响了实施。

 

它应该是这样的吗?

class cA
  {
public:
   int               Add(int i1,int i2)
     {
      return i1+i2;
     };
                     cA()
     {
      Print("+++");
     };
                    ~cA()
     {
      Print("---");
     };
  };

void OnStart()
  {
   cA a=cA();
  }

日志。

2020.04.17 18:39:32.996 test3 (EURUSD,M1)       +++
2020.04.17 18:39:32.996 test3 (EURUSD,M1)       +++
2020.04.17 18:39:32.996 test3 (EURUSD,M1)       ---
2020.04.17 18:39:32.996 test3 (EURUSD,M1)       ---

双重构造函数和析构函数的调用,就像两个对象被创建和删除一样。使用新建和删除时,一切都很正常。

建2380。

 
Aliaksandr Hryshyn:

就像两个对象被创建和删除一样。

事情就是这样的。

 
fxsaber:

它是。

而我的对象是第二个被创建的。

class cA
  {
public:
   int               my_i;
   int               Add(int i1,int i2)
     {
      return i1+i2;
     };
                     cA()
     {
      static int i=0;
      my_i=i;
      i++;
      Print("+++");
     };
                    ~cA()
     {
      Print("---");
     };
  };

void OnStart()
  {
   cA a=cA();
   Print(a.my_i);
  }
2020.04.17 18:47:34.771 test3 (EURUSD,M1)       +++
2020.04.17 18:47:34.771 test3 (EURUSD,M1)       +++
2020.04.17 18:47:34.771 test3 (EURUSD,M1)       ---
2020.04.17 18:47:34.771 test3 (EURUSD,M1)       1
2020.04.17 18:47:34.771 test3 (EURUSD,M1)       ---
 
Aliaksandr Hryshyn:

而我的对象是第二个被创建的。

第一个对象。

cA a=cA();


第二个对象。

cA a=cA();
 

那么就应该是这样的。

cA a;
Print(a.my_i);
 
Stanislav Korotky:

在我的电脑上,一年的时间在几分钟内就能测试出来。自流井中究竟发生了什么,为什么它的速度会变慢,目前还不可能知道。

在短短几分钟内,一年的时间是很多的。几乎没有人愿意等待(如果是EA)。
它在视觉上的画法是否正常?通过观察测试者有可能了解任何事情吗?

为市场添加一个插件--加快计算速度 而损害准确性(如果可能的话),或者完全画 "类似的东西"。产品的具体内容很明确,无论谁需要,都能切换到正确的参数。

 
Andrey Khatimlianskii:

在几分钟内一年的时间是很多的。几乎没有人愿意等待(如果是EA)。
而且从视觉上看,它的绘画效果还可以吗?是否有可能通过观察测试者来了解一些情况?

为市场添加一个存根--以牺牲准确性为代价加快计算速度(如果可能的话),或者完全画出'类似的东西'。产品的具体内容很明确,无论谁需要,都能切换到正确的参数。

在我看来,在potic模式下,在几分钟内完成一年的工作就可以了。过去冠军赛有15-20分钟的限制(记不清楚了)。已经增加了一个摊位(延时小跑)。你可以跳过虱子,但这样产品的意义就消失了。具体性是一个相对的概念:我知道许多人在滴答模式下工作(而且他们都有一个附加的价格和/或数量检查)。而且更重要的是,要有更精确的标准,加上来自自动机的反馈(如果我们在论坛上说 "你的终端不工作",我们MQ要问什么?- 给出日志和复制的条件;在这里,我们得到的信息是我们的产品不能使用,但没有具体内容)。而且,考虑到产品的具体情况是比较正确的。毕竟,产品的总运行时间不仅是MQL-代码的时间,还有终端本身。还有一些更昂贵的调用,如CopyTicksRange。这些开销现在被认为是MQL-产品的缺陷。

PS。在指标的情况下,似乎更关键的不是按刻度的操作,而是缓冲区的数量(由于任务的特殊性,有很多缓冲区)。我将尽量为测试者限制它们的数量(它使产品更加复杂,充满错误,以及由外部条件施加的其他标志,如小跑)。这再一次证明了自流井需要在几个参数上改变性能得分。

PPS。我在申请最后一天的蜱虫,而测试人员正在加载2年的蜱虫 - 这也需要时间。

 
Stanislav Korotky:

PPS。我在申请最后一天的蜱虫,而测试人员正在加载2年的蜱虫

出于某种原因,这种行为是官方的。

我想,对于不使用指标或地址栏的专家顾问,他们根本就不应该生成栏。

例如,如果只有SymbolInfoTick--不生成条形图,不为复制条形图存储历史。


对于像Tester这样严肃的算法交易工具来说,对这种嗜好一点也不清楚。但是,由于即使是MO美学家也继续啃食这种仙人掌,可能没有人理解。

 

为什么在MQL中,我不能从我的工厂方法中调用受保护的构造函数?

class A1
{
  protected:
    A1(const bool x = false){}
  public:  
    static A1 *creator()
    {
      return new A1(true);
    }
};

void OnStart()
{
  A1 *a = A1::creator();
}

代码给出了一个编译错误"'A1::A1'-不能访问受保护的成员函数",并且指定了类描述开始的那一行,而不是构造函数被调用的地方(也就是说,我必须手动搜索问题所在)。

但问题是,根本不应该有任何错误。C++的编译没有任何问题。