Erros, bugs, perguntas - página 2784

 

printf(), duplo, forma científica. O número de casas decimais que posso definir, o comprimento total do número que posso definir:

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

Resultado: d=001.2346E+01

Posso adicionar zeros antes de uma potência? Deve ser assim: d=001.2346E+0001
 
sershi87:
Como disse acima após a actualização, o terminal é muito lento e fica completamente pendurado. Antes da actualização não havia tais problemas e tudo estava a funcionar bem. Estou ciente da questão Debian e concordo plenamente com o facto de que se trata de um disco muito estável. No entanto, acredito que a necessidade de uma versão nativa há muito que se fazia esperar e que precisamos de a prosseguir.

Tenho uma suposição de que a lentidão e as falhas são causadas por uma sincronização incorrecta com o servidor de histórico.
Ou seja, por exemplo, a definição de barras na janela do terminal é 100000, por exemplo, solicito 3000 barras do código
mas a sincronização pode falhar e começa a sincronizar com todo o histórico disponível no servidor e a bombear todo o histórico do servidor.
Devido a este bombeamento completo do histórico, o terminal fica pendurado, até descarregar todo o histórico do servidor disponível.
Se esperar por este download, o terminal desliga e começa a funcionar.

 
Roman:

Tenho uma suposição de que a lentidão e as falhas são causadas por uma sincronização incorrecta com o servidor de histórico.
Ou seja, por exemplo, a definição de barras na janela do terminal é 100000, por exemplo, solicito 3000 barras do código
mas a sincronização pode falhar e começa a sincronizar com todo o histórico disponível no servidor e a bombear todo o histórico do servidor.
Devido a este bombeamento completo do histórico, o terminal fica pendurado, até descarregar todo o histórico do servidor disponível.
Se esperar por este download, o terminal desliga e começa a funcionar.

A travagem só começa quando se abre o vidro. Fecha-se a máquina de secar e tudo fica bem. Mas não se pode trabalhar sem ele.
 

MT5 (build 2496) é MUITO mau com gráficos personalizados que são calculados por fórmula definida pelo utilizador.
Carrega de forma permanente CPU - carga central 100%.
Carrega permanentemente o disco - apenas escreve aí a partir de 3 GB e mais dados.
Terminal de porcos se algum indicador com um tampão a ser desenhado na janela principal (por exemplo, Indicadores/Tendência/Adaptativa Média Móvel).


Passos a dar:
MetaQuotes-Demo, Hedge account.
Definir o número máximo de barras por gráfico: 1000

Criar Símbolo Personalizado: Ctrl+U ==> Criar Símbolo Personalizado:
- Símbolo: NZDUSD_AUDUSD
- Fórmula: NZDUSD-AUDUSD
- Permitir preços negativos: Verdadeiro

Resultado - o sistema começa a consumir até 3 GB em disco.
Se eu abrir um gráfico com um símbolo personalizado, a carga sobre o núcleo saltará para 100%.
Se eu adicionar um indicador (por exemplo, Indicadores/Tendência/Adaptativa Média Móvel) e mudar a TF, a Janela de Dados começará a convulsionar, e dentro de alguns segundos, o terminal não responderá de todo.


 
UPD. Também dezenas de milhares de entradas monótonas são escritas no diário de bordo:
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

O tamanho total do tronco está a aproximar-se de 1GB.


UPD... Se depois de todos os cálculos fechar o terminal e reabrir - todos os 3-8 GB de dados calculados são apagados com sucesso e os cálculos recomeçam, utilizando uma quantidade de espaço mais modesta - cerca de 500 MB.
Se eu abrir o gráfico com símbolo personalizado após o reinício do terminal - fica vazio por alguma razão, apenas 3 barras no M1 (o comportamento é algo como a bandeira "Permitir preços negativos" desligada).

 

Para onde envio os meus relatórios de erros para serem tratados pelos criadores?

Uma vez que alguns lançam a compilação de classes de modelos que chamam funções estáticas é quebrada. Exemplo:

A Barra de Classe foi compilada com MQL5 de 64 bits e 32 bits. Agora gera um erro. construir 2485 05 Jun 2020

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:

Para onde envio os meus relatórios de erros para serem tratados pelos criadores?
Uma vez que alguns lançam a compilação de classes de modelos que chamam funções estáticas é quebrada. Exemplo:
A classe Bar compilou tanto com MQL5 de 64 bits como de 32 bits. Agora gera um erro. construir 2485 05 Jun 2020.

Estará algures perto do 5º utilizador a queixar-se deste insecto de uma forma ou de outra...

 
Sergey Dzyublik:

Será o quinto utilizador a queixar-se deste insecto de uma forma ou de outra...

Sim, bem, o que fazer? Eu conheço o trabalho através da classe base, mas é uma muleta. E não é uma boa ideia remendar todo o código.

Onde posso descarregar as construções anteriores? Ainda não os encontrei no meu corretor ou no site do mt5.

 
YanGillan:

Sim, bem, o que fazer? Conheço o trabalho de volta através da classe base, mas é uma muleta. E não é uma boa ideia remendar o código inteiro.

Onde posso descarregar as construções anteriores? Não os encontrei no site do corretor e no site do mt5 não está disponível.

 
YanGillan:

Conheço o trabalho de volta através da classe base, mas é uma muleta. E não é uma boa ideia remendar o código inteiro.

Refere-se a este método ou algum outro?

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;
}
Razão: