错误、漏洞、问题 - 页 950

 
fyords:

如果有人遇到过这样的事情,请告知。

有一个代码。

在终端的实时状态下,它是有效的:但在测试器中,同样的代码给出了不同的结果。

是否无论哪个事件发生,都要获得数组的大小

 
tol64:

而且不管哪个事件发生,都应该得到数组的大小?

好吧,我首先写了这个指标,然后把一切都简化为一个简单的例子。
事实证明是的--在任何事件上,所给出的日志都是每行重复的。

通过将代码改为以下内容。

//+------------------------------------------------------------------+
double date[];
//+------------------------------------------------------------------+
void OnInit()
{
   ArrayResize(date,3);
   Print(__FUNCTION__," ArraySize(date)=",ArraySize(date));
}
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{
   Print(__FUNCTION__," ArraySize(date)=",ArraySize(date));
}
//+------------------------------------------------------------------+

它变得更加有趣。结果终端。

FD      0       12:57:59        test (EURGBP.m,M5)      OnInit ArraySize(date)=3
JO      0       12:57:59        test (EURGBP.m,M5)      OnChartEvent ArraySize(date)=3
DG      0       12:57:59        test (EURGBP.m,M5)      OnChartEvent ArraySize(date)=3

测试员。

JM      0       12:58:09        test (EURGBP.m,M15)     2013.01.01 00:00:00   OnInit ArraySize(date)=3
FE      0       12:58:09        test (EURGBP.m,M15)     2013.01.01 00:00:00   OnChartEvent ArraySize(date)=0
FR      0       12:58:09        test (EURGBP.m,M15)     2013.01.01 00:00:00   OnChartEvent ArraySize(date)=0
 
fyords:

好吧,我首先写了这个指标,然后把一切都简化为一个简单的例子。
事实证明是的--无论如何,所给出的日志每一行都是重复的。

...

我还没有设法重现它。我正在测试这样的代码。

//+------------------------------------------------------------------+
//|                                                     !indTEST.mq5 |
//|                        Copyright 2010, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//---
#property indicator_chart_window
#property indicator_buffers 1 
#property indicator_plots   1
#property indicator_type1   DRAW_NONE
//---
double date[];
//---
//+------------------------------------------------------------------+
//| ИНИЦИАЛИЗАЦИЯ                                                    |
//+------------------------------------------------------------------+
void OnInit()
  {
   ArrayResize(date,3);
  }
//+------------------------------------------------------------------+
//| ДЕИНИЦИАЛИЗАЦИЯ                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
   Print("ArraySize(date)=",ArraySize(date));
  }
//+------------------------------------------------------------------+

//---

在可视化模式下测试了该指标

 
tol64:

...

在可视化模式下测试了该指标

同样的,搞清楚了。
 
fyords:
同样,我也在摸索。
据我所知,目前在测试器中,日程互动事件被忽略了。可以处理自定义事件
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - Документация по MQL5
 
tol64:
据我所知,与图表交互有关的事件目前在测试器中被忽略。可以处理自定义事件

我并不关心是哪些人,只要他们来了就行 :)

同样有趣的是,你的代码给出的结果是0,也就是说,错误持续存在。
PS。Win7 x64 + UAC,且不便于携带。

 
fyords:

我并不关心是哪些人,只要他们来了就行 :)

同样有趣的是,你的代码给我的结果是0,也就是说,错误持续存在。
PS。Win7 x64 + UAC,且不便于携带。

我用这段代码根本没有得到任何事件。那么,在什么事件中,信息被打印在测试器中?我甚至想知道,这就是我想知道的原因。))我需要一个代码来重现它。

 
tol64:

我用这段代码根本没有得到任何事件。那么,在什么事件中,信息被打印在测试器中?我甚至想知道,这就是为什么我问。))我需要代码来重现它。

我也不明白--它不再工作了))。
奇怪,因为CHARTEVENT_CHART_CHANGE 事件无论如何都应该在测试器中出现。对吗?
 

fyords:
... 

奇怪,因为CHARTEVENT_CHART_CHANGE 事件无论如何都应该在测试器中出现。对吗?
在实时情况下,当图表被滚动和窗口/子窗口被调整大小时,这个事件就会产生。在测试器中,这个事件还不工作(也许他们根本就不会做)。在所有事件中,目前只有来自其他程序的用户事件 可以被追踪。
 

我在策略测试器中 测试了标准的ExpertMACD专家顾问,它与MT5一起交付,它产生了错误。

2013.03.30 19:18:09 核心2的遗传密码(0, 15)在46毫秒内被测试出错误 "OnInit failed"

2013.03.30 19:18:08 核心 1 遗传通 (0, 13) 测试,错误 "OnInit failed",时间为32 ms

2013.03.30 19:18:07 核心2的遗传密码(0, 5)在0毫秒内被测试出错误 "OnInit failed"。

我通过搜索发现,错误在模块中。"SignalMACD "在优化快速和慢速MACD周期时(在策略测试器参数中打勾)。

有没有人遇到过这样的问题,如何处理?(当只有一个刻度时,它以某种方式工作,但只要你检查两个刻度,就会出现错误)。