初学者的问题 MQL5 MT5 MetaTrader 5 - 页 674

 
Leo59:

我不能让一些东西打印()到测试者的日志中。你是如何做到的?

下面是专家顾问OnInit()的代码。

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   SymbolSelect("EURJPY",true);
   Print(__FUNCTION__,", ",TimeToString(TimeCurrent()));
   SymbolSelect("USDJPY",true);
//---
   return(INIT_SUCCEEDED);
  }


然后我设置一个断点(第1步),在历史上运行测试(第2步)。

OnInit()

而在测试器中我得到了这样的结果。

2016.11.23 13:02:24.191 2016.06.13 00:00:00   OnInit, 2016.06.13 00:00
 

Vladimir Karputov:

接下来,我设置了一个断点(步骤1)并运行了一个 历史测试(步骤2)。

奇怪的是,你用数字 "2 "指向的这个蓝色按钮,对我来说并不活跃。会不会是因为我使用的是MT4?
 
但是,尽管如此,如果这样的事情被写出来。


在客户终端策略测试器中,对一些功能的操作有限制。

函数Print()和PrintFormat()。

为了提高优化EA参数时的性能,函数Print()和PrintFormat() 不被执行。例外的情况是在OnInit() 处理程序中使用这些函数。这使我们能够在错误发生时方便搜索错误原因。


为什么OnInit()处理程序 中的 Print() 函数不能 照常工作?

一般来说,关于在优化模式下init()中的其他用户定义的函数?
 
Leo59:
奇怪的是,你用 "2 "指向的我的蓝色按钮却没有激活。会不会是因为我使用的是MT4?

是的,这就是为什么我可以自由地在历史上测试任何EA,即选择一个时间框架,例如从2016.06.20到2016.11.11,然后悄悄地,一步一步地,调试和观察变量的变化,而你却不能这样做。

那么,是否值得继续坐在一个支持已经结束的旧终端上?或者,你应该使用现代的MetaTrader 5?事实上,MetaTrader 5已经有对冲功能:MetaTrader 5交易平台有 对冲功能。

 
Vladimir Karputov:

是的,这就是为什么我可以自由地在历史上测试任何EA,即选择一个时间框架,例如从2016.06.20到2016.11.11,然后悄悄地,一步一步地,调试和观察变量的变化,而你却不能这样做

那么,是否值得继续坐在一个支持已经结束的旧终端上?或者,你应该使用现代的MetaTrader 5?毕竟,MetaTrader 5已经有对冲功能:MetaTrader 5交易平台有 对冲功能。

为什么我可以在MT4中进行调试并逐步观察变量的变化?我做错了什么?
 
Artyom Trishkin:
为什么我可以在MT4中调试,冷静地、一步一步地调试,观察变量的变化?我做错了什么?
你做错了什么:阅读速度非常快或故意跳过文本。
 
亲爱的!!!!

实质性问题。

为什么OnInit() 处理程序中的 Print() 函数不能 照常工作?一般来说,在优化模式下,init()中的其他自定义函数如何处理?

 
Leo59:
亲爱的!!!!

实质性问题。

为什么OnInit() 处理程序中的 Print() 函数不能 照常工作?一般来说,在优化模式下,init()中的其他用户定义的函数如何处理?

上面已经解释了一切。它起作用了,而且很有效。我给你看了一个例子。

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

初学者的问题

Vladimir Karputov, 2016.11.23 12:07

下面是EA的OnInit()的代码。

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   SymbolSelect("EURJPY",true);
   Print(__FUNCTION__,", ",TimeToString(TimeCurrent()));
   SymbolSelect("USDJPY",true);
//---
   return(INIT_SUCCEEDED);
  }


我进一步放了一个断点(第1步)并开始测试 历史(第2步)。

OnInit()

而在测试器中,我得到了这样的结果。

2016.11.23 13:02:24.191 2016.06.13 00:00:00   OnInit, 2016.06.13 00:00

 
Vladimir Karputov:

上面已经解释过了。它起作用了,而且很有效。而我给了你一个例子。


Vladimir,在你的例子中,用断点和从MetaEditor运行测试,而不是从终端的测试器运行,是不标准的。

让我重复一遍。

1.为什么OnInit() 处理程序中的 Print() 函数不能照常工作?

2.init()中的其他用户函数如何在优化模式下工作?

 
Leo59:
Vladimir,在你的例子中,从MetaEditor开始测试的断点,而不是从测试员的终端开始,是不标准的。

再一次。

1.为什么OnInit() 处理程序中Print() 函数不能 照常工作?

2.init()中的其他用户函数如何在优化模式下工作?

我有一种感觉,你从来没有打开过终端。

下面是专家顾问OnInit()的代码。

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   SymbolSelect("EURJPY",true);
   Print(__FUNCTION__,", ",TimeToString(TimeCurrent()));
   SymbolSelect("USDJPY",true);
//---
   return(INIT_SUCCEEDED);
  }

一步一步来。第一步--从终端启动测试器(一次通过),在历史上进行测试,有可视化。

步骤1

在策略测试器中,我们得到以下结果。

第2步