//Script.mqhtypedefvoid (*fn)();
#import "Script1.ex5"void g();
#import "Script2.ex5"void h();
void h( fn );
#import
class A {
public:
void f1() { h( g ); } //Error: #1 - no one of the overloads can be applied to the function call//Error: #2 - cannot resolve function addressvoid f2() { g(); } //нормально (*)void f3() { Print( __FUNCTION__ ); }
};
//Script1.mq5#property library#include "Script.mqh"void g() export
{
A a;
a.f3();
}
错误#1。在这里,h调用的签名是毫不含糊的。
错误#2。在A::f1()中,在g的意义上调用h( g )--似乎是模棱两可的,但另一方面,在A::f2()中,编译器不会问关于g()的不必要的问题(而且正确地问了--至少在最初包括头文件与模块中的函数声明 及其实现和进一步在这个模块中使用的问题早就被解决了)。此外,否则很难重写,因为Script.mqh是一个普通的头文件。
是错误还是问题,但有些东西是无法理解的...在测试器和调试器中都在发生...欧元兑美元一切正常,但美元兑日元出现了问题...
代码的一部分
我对代码中的内容感兴趣,从截图中可以看出...它在代码中被标记。
有一个卖出订单,损失为7.39,但代码显示损失仅为0.93。
以下截图中的绿色箭头显示,调试在这一行停止了...
也就是说,sl变量已经被设置为PositionGetDouble(POSITION_PROFIT)。
问题:为什么会发生这种情况?这是一个错误还是一个模式,是mql5测试器/调试器的一个特殊功能?
变量sp是稍后引入的,最初检查的是变量sellProfit,当函数被输入时,它被设置为零。
不管是错误还是问题,但有一点不清楚...发生在测试器和调试器中...欧元兑美元一切正常,但美元兑日元出现了问题...
在十几年前的构建中,有一个问题,当时可视化器显示的是未来的一个刻度,而MQL是正常工作的--未来是看不到的。
尝试在下一个tick上比较PositionGetDouble(POSITION_PROFIT)。如果它与 "展示台 "之前显示的内容相吻合--问题就在那里。斯拉瓦给出了解释,并承诺予以纠正。
如果不是--在这种情况下,又是一个错误。
在比现在的版本早十几二十年的版本中,有一个问题,当可视化器在一个刻度上显示未来时,而MQL工作正常--看不到未来。
尝试在下一个tick上比较PositionGetDouble(POSITION_PROFIT)。如果它与 "展示台 "之前显示的内容相吻合--问题就在那里。斯拉瓦给出了解释,并承诺予以纠正。
如果不是--在这种情况下,又是一个错误。
也许是这样,但代码中没有提供下一个刻度的检查。只有在新酒吧开业的时候才有一次。又有什么能保证这些数值是来自下一个刻度?没有...我又试了一次;损失是2.55,但调试器仍然显示0.93。
但是,手指穿过...测试员5比测试员4好得多......。只有小故障和不充分的操作...你如何调试一个有这种故障的专家顾问?人们还怎么做优化?其实,优化就是自欺欺人,有了这样的忽悠,就是自欺欺人,达到了说谎的程度8。
我必须在一个演示中测试它...几个星期以来...
可视化器显示的是无稽之谈,并不意味着测试器本身是错误的。测试人员并不关心可视化问题,完全不关心。
使用TickValue来计算利润大小,并与POSITION_PROFIT 进行比较。你会看到,一切都一样。可视化似乎是一个错误。
可视化器显示的是无稽之谈,并不意味着测试器本身是错误的。测试人员并不关心可视化问题,完全不关心。
使用TickValue来计算利润大小,并与POSITION_PROFIT 进行比较。你会看到,一切都一样。可视化似乎是一个错误。
是的,我在发布问题前重新计算了一下。似乎是真的,你可以根据屏幕截图重新计算。我没有开始检查的原因。损失的计算是基于手数的大小,这将导致在关闭止盈时的预期利润。在欧元兑美元上一切计算都是正确的,但在美元兑日元上突然损失没有得到补偿...我开始检查配方...并达到这个错误。事实证明,"展示台 "与此毫无关系。
是的,在发布问题之前算过了。似乎是真的,你可以根据截图重新计算。我没有开始检查的原因。亏损的计算是基于预期利润将被平仓的手数大小。在欧元兑美元上一切计算都是正确的,但在美元兑日元上突然损失没有得到补偿...我开始检查配方...并达到这个错误。事实证明,"展示台 "与此毫无关系。
编译Script1.mq5时出错
错误#1。在这里,h调用的签名是毫不含糊的。
错误#2。在A::f1()中,在g的意义上调用h( g )--似乎是模棱两可的,但另一方面,在A::f2()中,编译器不会问关于g()的不必要的问题(而且正确地问了--至少在最初包括头文件与模块中的函数声明 及其实现和进一步在这个模块中使用的问题早就被解决了)。此外,否则很难重写,因为Script.mqh是一个普通的头文件。
对不起,但我不明白你的意思。你认为谁错了--测试者还是展示者?
如果它显示的值与事实相似,但使用错误的数据进行计算,那么问题就出在mql5中,而不是在测试器或可视化器中。
总而言之,感谢你的意见,从长远来看,我将会战胜这个问题。并将在今天检查另一块类似的货币。也许是那个地方的蜱虫问题,hz?
为什么警告是在一个公平的竞争环境中?