错误、漏洞、问题 - 页 3174

 
Andreas Hoogendoorn # :

我正在使用CGraphic 和CCurve类,发生了一些奇怪的事情。我在不同货币对上运行同一个EA的两个实例。当我滚动一个图表时,另一个图表在一瞬间是可见的。似乎这两个图表之间的内存被打乱了。重新启动终端没有任何区别。(图片是一个gif动画)


你能发一个最小的例子吗?而且,请说明终端和操作系统的数据,类似这样的。

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

非常棘手的MetaTrader

Vladimir Karputov, 2021.03.16 04:20

如果你有问题,首先你应该显示 "日志 "标签中的前三行


(选择这些行,复制到剪贴板,并使用按钮编码 粘贴到信息中)。它应该看起来像这样。

2021.03.16 05:13:07.133 Terminal        MetaTrader 5 x64 build 3003 started for MetaQuotes Software Corp.
2021.03.16 05:13:07.134 Terminal        Windows 10 build 19042, Intel Core i7-9750 H  @ 2.60 GHz, 26 / 31 Gb memory, 842 / 947 Gb disk, IE 11, UAC, GMT+2
2021.03.16 05:13:07.134 Terminal        C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075

 
Andreas Hoogendoorn #:

我正在使用CGraphic 和CCurve类,发生了一些奇怪的事情。我在不同货币对上运行同一个EA的两个实例。当我滚动一个图表时,另一个图表在一瞬间是可见的。似乎这两个图表之间的内存被打乱了。重新启动终端没有任何区别。(图片是一个gif动画)


好吧,我解决了这个问题,尽管它仍然是一个bug!!!当使用CGraphic类时,它是不可能的。

当使用CGraphic类时,它有义务 在创建图形资源时使用一个唯一的名字。

这些资源并没有像它应该的那样被隔离。 一个图表的EA可以访问另一个图表的资源


2022.04.17 12:44:13.049 Terminal        MetaTrader 5 x64 build 3260 started for MetaQuotes Software Corp.
2022.04.17 12:44:13.050 Terminal        Windows 10 build 19044, 4 x Intel Core i5  750 @ 2.67 GHz, 4 / 11 Gb memory, 4 / 124 Gb disk, UAC, GMT-3
2022.04.17 12:44:13.050 Terminal        C:\Users\andre\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075

#include <Graphics\Graphic.mqh>
CGraphic          graphic;

graphic.Create(0, "test", 0, 0, 0, 1200, 400);

这个例子失败了。

graphic.Create(0, (string) MathRand(), 0, 0, 0, 1200, 400);
这个例子是可以的。
 

我已经写过 这篇文章了。但这真的很烦人。
亲爱的本网站后台开发人员,请解决这个问题:
,我不断收到关于我从未购买的付费产品的新版本的通知,有时一天要收到好几次。

我点击了这个链接。

 
Andreas Hoogendoorn #:

我正在使用CGraphic 和CCurve类,发生了一些奇怪的事情。我在不同货币对上运行同一个EA的两个实例。当我滚动浏览一个图表时,另一个图表在瞬间变得可见。记忆似乎在两个图表之间混淆了。重启终端并没有改变什么。(这张图是一个gif动画)。


当创建一个图形对象时,你需要加入名称,例如,它将被绘制的图表ID。

   CGraphic graphic;

   graphic.Create(0,"G"+(string)ChartId(),0,30,30,780,380);


否则,两个图表上的图形资源名称将是相同的,由于图形资源对终端来说是全局的,两个程序将使用相同的资源工作(即绘制到同一画布上)。

 

错误。OrderCalcMargin 返回错误的值


OrderCalcMargin()有时会返回错误的保证金值。

例如,它在许多主要的外汇对和许多其他差价合约上工作正常,它返回正确的值。


但是,在USDPLN或PLATINUM,或其他一些情况下,它返回绝对错误的保证金值。

对于 EURUSD 和 USDPLN 要求的 ENUM_SYMBOL_CALC_ MODE 是相同的(SYMBOL_CALC_MODE_FOREX),但是如果对于 EURUSD 函数返回正确的所需保证金值,对于 USDPLN 它是错误的。

为什么会这样?

 

大家好,我希望我写的地方是正确的(但如果有的话,建议一个更相关的地方)。

我说的是MT5(5.00 build 3260版本,Just2Trade)中警报的消失。

其本质是:如果我添加(或改变)所有的分配,并在不关闭窗口的情况下重新启动计算机(开始关机-重新启动),
所有分配中的所有变化都会消失。而要保存它们,你需要记得用cross关闭终端窗口。

这是一个相当残酷的错误,需要加以修复。

 
Lazar Buga #: 为什么这么说?

你的经纪人搞砸了。和他们谈谈。

 
Ilyas #:

创建图形对象时,必须加入名称,例如,将在其上绘制的图表的ID。


否则,两个图表上的图形资源名称将是相同的,由于图形资源对终端来说是全局的,两个程序将使用相同的资源工作(即绘制到同一画布上)。

图形对象资源的名称不能超过63个字符。如果你在名字上加上一个图表标识符,不幸的是,留给一个理智的可读名字的空间就不多了。

 
a18 #:

大家好,我希望我写的地方是正确的(但如果有的话,建议一个更相关的地方)。

我说的是MT5(5.00 build 3260版本,Just2Trade)中警报的消失。

其本质是:如果我添加(或改变)所有的分配,并在不关闭窗口的情况下重新启动计算机(开始关机-重新启动),
所有分配中的所有变化都会消失。而要保存它们,你需要记得用cross关闭终端窗口。

这是一个相当残酷的错误,有待修复。

已修复,将在测试版中出现。

 
编译错误。
template<typename T>
struct A {
    T *t;
};
void OnStart()
{
    A<void> a; //Error: 'void' - expression of 'void' type is illegal
}
原因: