错误、漏洞、问题 - 页 2767

 
Artyom Trishkin:

从你所描述的行为来看,这是一个不同的EA,有着完全不同的算法。

我们都想明白了,也许这是一个终端错误,也许是开发人员设计的,但事情是,当你对任何一组历史运行测试时,在测试结束时,我们会得到一个图表,但这个时期的所有历史都是由真实的历史自动叠加上去的。

我比较了一下结果,然后我去看了一下日志,比较了一下来自测试器和真实交易的开仓 价格,它们几乎都是重合的,有一点差异。

但事实是,真正的交易是在测试完成后叠加在这个图表上的。

为了避免它们的叠加,我做了以下工作

刚刚在日志中点击右键,禁用了自动刷新功能,现在所有的测试都只显示该图表中测试过的交易,真正的交易没有被应用到其中。

我让群里的人运行他们的交易机器人一段时间,当他们在这个符号上有东西交易时,使用机器人,不管是什么,他们都证实了这个事实,除了测试器中的交易,图表中还叠加了过去交易的真实交易。


如果你在任何工具上有交易,在这段时间内运行任何机器人,你会看到这些交易将被应用到图表上,如果自动交易被禁用,真实的交易将不会被应用。

我认为这值得告诉开发人员,我喜欢这个错误,现在我可以测试机器人一周,并比较图表上的交易差异,理想情况下,应该有几个点的差异。

 
Konstantin Seredkin:

除了测试者的交易外,过去的真实交易也叠加在图表上。

这种行为对于那些使用自定义符号 的人来说是看不见的。但对于真正的符号来说,它看起来相当不方便。

 

在调试器中,GetLastError();的值不能被检索到?

只通过一个变量或预定义的_LastError ?

附加的文件:
 
awsomdino:

在调试器中,GetLastError();的值不能被检索到?

只能通过一个变量或预定义的_LastError ?

是的,这就是_Value的用武之地。

 
fxsaber:

是的,这就是_Value的好处。

也许开发者会增加从GetLastError() 函数中查看调试器的功能。

否则,这些方便而简单的两行字是没有用的。

   if(GetLastError()>0)
      DebugBreak();
 
awsomdino:

也许开发者会增加从GetLastError() 函数中查看调试器的可能性。

否则,这些方便而简单的2条线是没有用的。

不要只使用这个功能。

 

为了尽量减少以前 "审查 "修复 的条目数量,以前修复的缺陷没有被转移:

模板功能/类操作中的缺陷:
MT5(build 2474)没有修复)*** 编译错误,试图访问模板函数参数的内部类时出现错误。
(MT5(build 2474)没有修复)** 编译错误,当一个模板函数的返回值是一个模板类里面的内部类,其参数类型由模板函数的参数类型指定时,模板函数的返回值上有错误。
(MT5(build 2474)没有修复)** 编译错误,当继承类和内部类中使用相同的类名时,调用基类的模板构造器中存在命名空间和范围错误。
(MT5(build 2474)没有修复)* 编译错误,当从重载的非模板函数中调用具有明确参数类型的模板函数时出现错误。
( 被MT5(build 2474)修复
) 编译错误,内部类定义的错误--在指定基类时没有引用全局命名空间。
(MT5(build 2474)没有修复)* 编译错误,当通过明确的基类指示调用赋值语句时。这个问题发生在以模板参数为基类的模板类中。
(由MT5(build 2474)修复
) 编译错误,当在模板参数为基类的模板类中使用默认访问修改器进行继承时。
(由MT5(build 2474)修复)*(新)编译错误,从命名空间继承模板类时出现编译错误。
( 由MT5(build 2474)修复)** (new) Compile Error, default operator= is not accessed from pointer object.
(MT5(build 2474)没有修复
)*** (new)Compile Error, 模板类方法的正向声明的编译错误
(MT5(build 2474)
没有修复)** (new) 当类包含一个指向使用该类作为字段的包装类的指针时,编译 错误。


与MQL与C++中的重载函数调用的优先级不匹配有关的缺陷:
在MT5(build 2474)中没有修复)。** 当重载模板函数的第一个使用完全专业化的模板基类,第二个使用非专业化的模板基类时,会出现编译错误。
( MT5(build 2474)没有修复)** 编译错误,尽管有一个重载的模板函数,对所传递的参数有合适的签名,但在生成模板函数的代码时还是发生了编译错误。
( MT5(build 2474)没有修复)* 编译错误,当调用具有不同数量模板参数的重载模板函数时,"对重载函数的模糊调用"。

(MT5(build 2474)没有修复)*** 编译错误,调用重载模板函数时出错。
(MT5(build 2474)没有修复)** 编译错误,尽管有一个匹配的具有数据类型color的签名重载模板函数,但 为一个具有数据类型color的参数调用函数时 使用了隐式类型对话。
(MT5(build 2474)没有修复)* 编译错误,尽管在调用重载的模板函数时有明确的特殊化,但模板函数还是被默认调用,这导致了堆栈溢出。
(MT5(build 2474)没有修复)* 编译错误,当使用一个函数指针数组时,通过其指针调用一个函数时,出现编译错误
( 由MT5(build 2474)修复)*(新)编译错误,命名空间中重载的函数的调用优先级有问题。

MetaEditor相关的错误:
ME5(build 2474)没有修复)。*** 调试器,静态 结构方法 中的断点导致MT终端挂起。
( 在ME5(build 2474)中没有修复)** 编译,编译错误描述不适合256个字符的限制而被切断,从而使人们无法了解错误是为哪种数据类型产生的,因为所需的部分被切断了。
( 在ME5(build 2474)中修复)** 调试器、StepInto(F11)和设置断点都不起作用。
( 在ME5(build 2474)中修复)* 调试器,在一个断点被触发后,不是按(F5)继续执行代码,而是在不执行任何代码的情况下,实际上再次触发了同一个断点。
( 在ME5(build 2474)中没有修复)* 编译,错误描述和参数信息中的函数模板参数签名不正确。
( 在ME5(build 2474)中没有修复)* MetaEditor,当选择了应用程序的必要部分,而不是整个代码时,替换(Strl + H)功能对启用的 "在选择中 "和 "向后方向 "不起作用。
( ME5(build 2474)没有修复)*(新)MetaEditor,触发断点会误导用户认为输入条件已经得到满足,而实际上可能根本不是这样。


与缓慢的函数执行有关的缺陷,代码优化器:
由MT5(build 2474)修复)。**(up) 运行时,当使用ArrayResize一次向数组中添加一个元素时,尽管已经提前为它们预留了内存,但仍有很大的开销,例如,结构的速度最多可以慢7倍。


建议:
- 添加到ME搜索/替换为当前项目,而在重构过程中,通过每个文件和搜索出现的情况不是很好。
link- 在ME的编译过程中,在File, Line, Column的空栏中填入有关源文件的适当信息,从该文件中产生include。
link - 关于在类中静态方法的intellisense工作的基础上引入命名空间功能的intellisense支持。

链接 - 关于提供 字词和临时变量作为函数的常量参数传递的可能性。 链接 - 关于在MQL中引入类型定义声明功能的必要性。

链接- 关于提供强制生成默认复制构造函数和赋值运算符的可能性。

 
Sergey Dzyublik :

为了最大限度地减少上一次 "审查 "更正条目数量,以前更正的缺陷没有被转发:
..
.

这在你的名单上吗?如果没有,能否请你添加这个。

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

错误的MQL语法?

Dan Marinescu, 2020.05.27 22:47

我定义了一个通用接口,我想在另一个类中使用它。我搞不清楚这段代码有什么问题。

 #property  strict

template < typename T> interface IGenericHandler {
     bool Handle(T &item);
};

#define  DOES_NOT_WORK

class GenericHandler {
     public :
#ifdef  DOES_NOT_WORK   
         template < typename T> bool Handle(T &val, IGenericHandler<T> *handler);
#else   
         template < typename T> bool Handle(T &val, IGenericHandler<T> *handler) { return false ; }
#endif        
 };

#ifdef  DOES_NOT_WORK
template < typename T> bool GenericHandler::Handle(T &val, IGenericHandler<T> *handler) { return false ; }
#endif 

如果没有定义DOES_NOT_WORK,一切都能正常工作。但当DOES_NOT_WORK被定义时,编译器说。

'Handle' - member function already defined with different parameters

为什么?


 
Alain Verleyen:

这在你的名单上吗?如果没有,能否请你添加这个。

谢谢你的补充,是的,在列表中对这个问题有一个描述:
MT5(build 2474)没有修复)。*** (new)编译错误类的模板方法的正向声明编译错误

 
Sergey Dzyublik :

谢谢你的补充,是的,在列表中对这个问题有一个描述:
(MT5(build 2474 没有修复)。*** (new) Compile Error , about compilation error for forward declaration of template class method .

很好,谢谢。