错误、漏洞、问题 - 页 2784

 

printf(), double, 科学形式。我可以设置的小数位数,我可以设置的数字总长度。

double d=12.3456789;
printf("d=%012.4E",d);

结果:d=001.2346E+01

我可以在幂数前加零吗?它应该是这样的:d=001.2346E+0001
 
sershi87:
正如我上面所说的,在更新 之后,终端 非常慢,而且完全挂起。在更新之前,没有这样的问题,一切工作都很正常。我知道Debian的问题,并完全同意它是一个非常稳定的磁盘的事实。然而,我认为早就需要一个本地版本,我们需要追求它。

我有一个假设,减速和崩溃是由与历史服务器的不正确同步造成的。
也就是说,例如终端窗口中的条形图设置为100000,例如我从代码
,要求3000条,但同步会失败,并开始与服务器上所有可用的历史同步,并从服务器上抽出所有历史。
由于这种完全抽空的历史,终端会挂起,直到它下载所有可用的服务器的历史。
如果你等待这个下载,终端就会挂起并开始工作。

 
Roman:

我有一个假设,减速和崩溃是由与历史服务器的不正确同步造成的。
也就是说,例如终端窗口中的条形图设置为100000,例如我从代码
,要求3000条,但同步会失败,并开始与服务器上所有可用的历史同步,并从服务器上抽出所有历史。
由于这种完全抽空的历史,终端会挂起,直到它下载所有可用的服务器的历史。
如果你等待这个下载,终端就会挂起并开始工作。

只有当你打开玻璃时才开始制动。你关闭滚揉机,一切都很好。但没有它,你就无法工作。
 

MT5(build 2496)在自定义图表方面非常糟糕,这些图表是由用户定义的公式计算的。
永久加载CPU - 核心负载100%。
永久加载磁盘 - 只是从3GB和更多的数据写入那里。
如果任何带有缓冲区的指标要在主窗口中画出,则Hogs终端(例如,指标/趋势/自适应移动平均线)。


玩法步骤:
MetaQuotes-Demo,对冲账户。
设置每个图表的最大条数:1000

创建自定义符号:Ctrl+U ==> 创建自定义符号:
- 符号:NZDUSD_AUDUSD
- 公式:NZDUSD-AUDUSD
- 允许负价格:True

结果 - 系统开始消耗高达3GB的磁盘。
如果我用一个自定义符号打开一个图表,内核上的负载将跳到100%。
如果我添加一个指标(例如,指标/趋势/自适应移动平均线)并切换TF,数据窗口将开始抽搐,几秒钟后,终端将完全没有反应。


 
UPD.也有数以万计的单调的条目被写入日志:
QG      0       18:18:12.209    Synthetic Symbol        NZDUSD_AUDUSD: there is data from 2020.06.19 to 2020.06.19 (4294967295 M1 bars from 1970.01.01 00:00 to 2020.06.19 23:54)
ML      0       18:18:12.209    Synthetic Symbol        NZDUSD_AUDUSD: M1 bars processing finished
LF      0       18:18:12.212    Synthetic Symbol        NZDUSD_AUDUSD: M1 bar 2020.06.19 23:54 updated
GO      0       18:18:12.212    Synthetic Symbol        NZDUSD_AUDUSD: there is data from 2020.06.19 to 2020.06.19 (4294967295 M1 bars from 1970.01.01 00:00 to 2020.06.19 23:54)
CD      0       18:18:12.212    Synthetic Symbol        NZDUSD_AUDUSD: M1 bars processing finished
QN      0       18:18:12.215    Synthetic Symbol        NZDUSD_AUDUSD: M1 bar 2020.06.19 23:54 updated
FG      0       18:18:12.215    Synthetic Symbol        NZDUSD_AUDUSD: there is data from 2020.06.19 to 2020.06.19 (4294967295 M1 bars from 1970.01.01 00:00 to 2020.06.19 23:54)
JL      0       18:18:12.215    Synthetic Symbol        NZDUSD_AUDUSD: M1 bars processing finished
FF      0       18:18:12.218    Synthetic Symbol        NZDUSD_AUDUSD: M1 bar 2020.06.19 23:54 updated
QO      0       18:18:12.218    Synthetic Symbol        NZDUSD_AUDUSD: there is data from 2020.06.19 to 2020.06.19 (4294967295 M1 bars from 1970.01.01 00:00 to 2020.06.19 23:54)
MD      0       18:18:12.218    Synthetic Symbol        NZDUSD_AUDUSD: M1 bars processing finished
LN      0       18:18:12.221    Synthetic Symbol        NZDUSD_AUDUSD: M1 bar 2020.06.19 23:54 updated
GG      0       18:18:12.221    Synthetic Symbol        NZDUSD_AUDUSD: there is data from 2020.06.19 to 2020.06.19 (4294967295 M1 bars from 1970.01.01 00:00 to 2020.06.19 23:54)
CL      0       18:18:12.221    Synthetic Symbol        NZDUSD_AUDUSD: M1 bars processing finished
NF      0       18:18:12.223    Synthetic Symbol        NZDUSD_AUDUSD: M1 bar 2020.06.19 23:54 updated
IO      0       18:18:12.223    Synthetic Symbol        NZDUSD_AUDUSD: there is data from 2020.06.19 to 2020.06.19 (4294967295 M1 bars from 1970.01.01 00:00 to 2020.06.19 23:54)
ED      0       18:18:12.223    Synthetic Symbol        NZDUSD_AUDUSD: M1 bars processing finished
RN      0       18:18:12.227    Synthetic Symbol        NZDUSD_AUDUSD: M1 bar 2020.06.19 23:54 updated

日志的总大小已经接近1GB了。


UPD...如果在所有计算结束后关闭终端并重新打开--所有3-8GB的计算数据都被成功删除,并重新开始计算,使用更适量的空间--大约500MB。
如果我在终端重启后用自定义符号 打开图表--由于某种原因,它变成了空的,只有M1的3个柱子(其行为类似于关闭了 "允许负价格 "的标志)。

 

我在哪里发送我的错误报告,以便由开发人员处理?

从某些版本开始,调用静态函数的模板类的编译被破坏。例子。

Class Bar是用64位和32位MQL5编译的。现在它产生了一个错误。第2485号建筑 2020年6月5日

class Foo {
public:
    static void Start() {
        Print("Hallo!");
    }
};

template<typename T>
class Bar {
public:
    Bar() {
        T::Start();
    }
};

class Foz {
public:
    Foz() {
    }

    void Start() {
        Print("Hallo!");
    }
};

template<typename T>
class Baz {
public:
    Baz() {
        T t;
        t.Start();                                                                                                                                                                                          
    }
};

void OnStart() {
    Bar<Foo> var;
    Baz<Foz> vaz;
}

template_static_bug.mq5 : information: compiling 'template_static_bug.mq5'
template_static_bug.mq5(12,12) : error 256: 'Start' - undeclared identifier
Result: 1 errors, 0 warning
 
YanGillan:

我在哪里发送我的错误报告,以便由开发人员处理?
从某些版本开始,调用静态函数的模板类的编译被破坏。例子:
Bar类已经用64位和32位的MQL5进行了编译。现在它产生了一个错误。build 2485 2020年6月5日。

你将是第5个以这种或那种方式抱怨这个错误的用户......

 
Sergey Dzyublik:

你将是第五个以这种或那种形式抱怨这个错误的用户...

是的,那么,该怎么办呢?我知道通过基类来解决这个问题,但这是一个拐杖。而且,给所有代码打补丁也不是一个好主意。

我在哪里可以下载以前的版本?我在我的经纪人那里和MT5网站上都没有找到它们。

 
YanGillan:

是的,那么,该怎么办呢?我知道通过基类的变通方法,但这是个拐杖。而且,给整个代码打补丁也不是一个好主意。

我在哪里可以下载以前的版本?我在我的经纪人网站上没有找到它们,在MT5网站上也没有。

 
YanGillan:

我知道通过基类的变通方法,但这是个拐杖。而且,给整个代码打补丁也不是一个好主意。

你是指这种方法还是其他方法?

template<typename T>
class GetClassType{
public:
   class type : public T{}; 
};


class Foo {
public:
    static void Start() {
        Print("Hallo!");
    }
};

template<typename T>
class Bar {
public:
    Bar() {
        GetClassType<T>::type::Start();
    }
};

void OnStart() {
    Bar<Foo> var;
}
原因: