指示器被破坏

 

所有。

我开发了一个指标,在最初的16个小时左右运行良好,之后它就被破坏了,开始在图表上到处画线。我也在检查IndicatorCounted()的值,当我得到损坏的线条时,它的值并没有变成负数。我不想重新初始化指标缓冲区,因为 "有效移动/线条 "的历史将被丢失。对解决这个问题有什么建议吗?

正常指标和损坏指标的图片见附件中的压缩文件。

附加的文件:
images.zip  61 kb
 
这里没有读心术 - 没有代码=没有帮助
 
WHRoeder:
这里没有读心术 - 没有代码=没有帮助

非常感谢。
 

亲爱的。

谁能把下载metaEditor 4的链接发给我?

谢谢你。

 
tiger961:

亲爱的。

谁能把下载metaEditor 4的链接发给我?

谢谢你。


老虎你需要开始一个新的主题,而不是堆积在其他主题上。

该编辑器可从任何经纪商处免费下载MT4终端。

 

一些进一步的信息 -

a) 指标的损坏只发生在Windows 64位平台上。

b) 我已经对损坏前和损坏后的指标阵列进行了转储--在所附的xls文件中可以看到相同的注释。

c) "图表中的最大条数 "设置是否只在你打开图表时适用?每增加一个条形图,条形图和相关指标的数量就会增加。

d) 代码使用情况如下

声明

<code>

#property indicator_chart_window

#属性 indicator_buffers 8

#属性 indicator_color1 红色

#property indicator_width1 2

</code>

<code>

SetIndexBuffer(0, Down1);

SetIndexStyle(0, DRAW_LINE);

SetIndexEmptyValue(0, EMPTY_VALUE)。

</code>

对于添加线的数据

<code>

void DrawMoveEx(double& serie[], int start, int end, double startlevel, double endlevel) {

double a = (endlevel - startlevel) / (start - end);

双重y。

int bar;


for(int x = 0; x <= start - end; x++) {

y = a * x;

bar = start - x;

serie[bar] = startlevel + y;

}

}

</code>

 
AnkaSoftware:
a) 指标的损坏只发生在Windows 64位平台上
不要在Vista/Win7上安装int/program文件*。
 
WHRoeder:
不要在Vista/Win7上安装int程序文件*。
对了,安装在C:/metatrader4/<终端dir>。我相信这个问题不是由于路径问题,而是由于内存损坏。该指标在最初的3-4个小时内运行良好,之后就开始损坏。
 

我怀疑这不是那种情况......。

当新的历史数据被添加到图表中时,通过向右滚动图表,我发现有类似的情况发生。

 
RaptorUK:

我怀疑这不是那种情况......。

当向右滚动图表,将新的历史数据添加到图表中时,我发现有类似的情况发生。

嗯,"新的历史数据被添加到图表中",怎么做?该指标已经启动,没有受到干扰。我们有一个固定的1000条的回看。该指标没有加载任何历史数据。

开发团队的人可以看一下这个问题吗?

 
AnkaSoftware:

嗯,"新的历史数据被添加到图表中",怎么做?该指标被启动并保持不受干扰。我们有一个固定的1000条的回看。该指标没有加载任何历史数据。

开发团队的人可以看一下这个问题吗?

我同意RaptorUK的观点:这不太可能是MT4的错误,而不是你的代码,或者与64位Windows有关的问题。我见过关于MT4的性能和稳定性问题的报告,结果证明是有根据的(例如https://www.mql5.com/en/forum/135355),但我从未见过关于MT4语言错误的报告,结果证明是正确的。

让我指出你的 "正常移动 "和 "错误移动 "屏幕截图之间的一个区别。在 "正常移动 "中,没有明显的缺失条。而在 "移动错误 "中,似乎有丢失的图表数据。X轴上的大多数标记相隔16分钟,但第二个和第三个标记之间的差距是21分钟(06:08至06:29)。这可能是也可能不是问题,但我会开始在你的代码中寻找那些假定会有一系列连续的条形图的地方。例如,如果现在是早上8点,代码中的任何东西都假定(a)早上7点的条形图是60条之前的,或者甚至(b)07:00的条形图根本就存在。

原因: