错误、漏洞、问题 - 页 2809

 
TheXpert:

换句话说:没有内部(默认)访问,但有外部访问。但为了使用它,你必须明确地指定它。这对我来说很有意义

 
编译错误。
template<typename T> class A {};
class B {
template<typename T> void f( A<T>& );
};
template<typename T>
void B::f( A<T>& ) {} //Error: 'f' - member function already defined with different parameters

但除此之外。

template<typename T> class A {};
class B {
template<typename T> void f( A<T>& ) {} //нормально
};

很好。这有什么区别呢?

template<typename T> class A {};
template<typename T>
class B {
                     void f( A<T>& );
};
template<typename T>
void B::f( A<T>& ) {} //нормально

这也是可以的。最主要的是,之前(在Build 2085中)所有的编译都是正常的--没有错误

 

下午好,亲爱的专家们!

请告诉我,在调试过程中,是否可以设置一个断点,在某一时间(在某一栏)触发?也就是说,我想让故事转到某个地方,在那个地方会触发一个断点,我就可以在我需要的条上通过调试器。

 

在测试器中开始了一个EA,净值化。我没怎么接触过限价,我的问题是关于买入限价,有仓位逆转。
他们真的会滑向更好的一面吗,还是取决于经纪人?还是测试器里的东西不对?

由于某些原因,卖出头寸线没有结束在被敲下的限制上,而是进一步超过了屏幕的边缘。


 
1.有一个命令 "DatabaseImport",在文档 ,对参数标志的解释中没有这些非常标志。尝试了 "0 "和DatabaseExport 的参数,编译成功,但执行时返回错误5131。文件中没有这样的错误。有没有人知道这个错误是怎么回事?这条线有什么问题。
DatabaseImport(db,"hist",FilenameHist,DATABASE_IMPORT_HEADER | DATABASE_IMPORT_CRLF | DATABASE_IMPORT_APPEND,";",0,"");
?
2.为什么线
         i=DatabaseExport(db,"select * from hist",FilenameHist,DATABASE_EXPORT_HEADER | DATABASE_EXPORT_CRLF | DATABASE_EXPORT_APPEND,";");
作品和
i=DatabaseExport(db,"hist",FilenameHist,DATABASE_EXPORT_HEADER | DATABASE_EXPORT_CRLF | DATABASE_EXPORT_APPEND,";");
不是吗?与文件中所说的
long  DatabaseExport( 
   int           database,           // хендл базы данных, полученный в DatabaseOpen 
   const string  table_or_sql,       // 




имя таблицы  или SQL-запрос 
   const string  filename,           // имя CSV-файла для экспорта данных 
   uint          flags,              // комбинация флагов 
   const string  separator           // разделитель данных в CSV-файле 
   );
 

也就是说,表名也应该被识别出来!有什么问题吗?


w.s.先生们,开发人员应该猜到,导入的表不应该存在? 还有,如果你可以保存mql5/files的文件夹在启动时被清除,为什么你需要导出导入?一个人如何能用永久的文件来工作?还是总是需要通过调试开始,在初始化之前有时间插入必要的文件?什么是....
 
AlexInRush:

下午好,亲爱的专家们!

请告诉我,在调试过程中,是否可以设置一个断点,在某一时间(在某一栏)触发?也就是说,我想让故事转到某个地方,在那个地方会触发一个断点,我就可以在我需要的条上通过调试器。

策略测试器中,在开始之后,你暂停,"滚动到 "字段在右边。右边最右边的字段是你输入你想运行的时间的地方。结果是,你在你需要的时候停下来,然后在代码中设置一个断点,并跟踪它。
 
Alexandr Koptelov:
1.有一个命令 "DatabaseImport",在文档 ,对参数标志的解释中没有这些非常标志。尝试了 "0 "和DatabaseExport的参数,编译成功,但执行时返回错误5131。文件中没有这样的错误。有没有人知道这个错误是怎么回事?这一行有什么问题; ?
2.为什么这条线能用而不能用?与文件中所说的

也就是说,表名也应该被识别出来!怎么了?


s.w.先生们,开发者们,你们的眼睛应该猜到执行导入的表不存在吗? 如果你可以保存mql5/files的文件夹在启动时被清除,为什么你还需要导出导入?一个人如何能用永久的文件来工作?还是总是需要通过调试开始,在初始化前有时间添加必要的文件?什么是....

在测试器或调试器中工作,基础放在一个共享文件夹中。

 
AlexInRush:

下午好,亲爱的专家们!

请告诉我,在调试过程中,是否可以设置一个断点,在某一时间(在某一栏)触发?也就是说,我想让故事一直活跃到某个地方,然后在那个地方触发一个断点,这样我就可以在我需要的那条上通过调试器了。

设定条件

if(TimeCurrent() == nnnTime)
  DebugBreak();
并开始调试。一旦时间达到指定值,调试就会停止,在所有操作结束后,按Shift+F11继续测试。
 

是否没有办法优化模式 下启用打印?启用了 "完整的优化日志 "选项,但只有来自OnInit的打印信息能进入日志,而我需要来自OnTester的信息,例如。

 
编译错误
#define  MACRO( X ) aaa##X = X
#define  bbb  5
void OnStart()
{
    int MACRO(         bbb );
    printf( "%d",   aaabbb ); //Error: 'aaabbb' - undeclared identifier
}

而在C++中,它是可以的。##有更高的优先权--bbb先被替换,然后bbb被5替换,最后不应该是这样。

    int aaa5 = 5; //неправильно (*)

应该是这样的。

    int aaabbb = 5; //правильно (**)

因为这个错误,一个常规操作不能被一个宏所取代。(*)必要时可以通过另一种记录形式获得,但(**)不能以任何方式在MQL中获得